به نام خدا
کنترل مکعب ال ای دی سه در سه با استفاده از رزبری پای
در این پروژه قصد داریم تا با استفاده از رزبری پای یک مکعب ال ای دی سه در سه در سه بسازیم که در الگو های متفاوتی روشن می شوند. تمامیه پروسه ی این پروژه توسط رزبری پای انجام می شود. در تصویر بالا شمایل تمام شده ی رزبری پای را مشاهده می کنید که از ۲۷ ال ای دی سه در سه در سه تشکیل شده است. انواع مختلفی از مکعب ها را می توانیم بسازیم. ساده ترین آن هه سه در سه در سه می باشد. برای چهار در چهار در چهار کار تقریبا سه برابر می شود و مابه ۶۴ ال ای دی نیاز داریم. برای شروع بهترین نوع همان سه در سه در سه می باشد.
قطعات مورد نیاز :
در اینجا از Raspberry Pi 2 Model B with Raspbian Jessie OS استفاده می کنیم.
سه عدد مقاومت ۲۲۰ اهمی
۲۷ عدد ال ای دی
هویه
ساخت مکعب سه در سه در سه ال ای دی:
در تصویر زیر مشاهده می کنید که ۹ دسته پایانه ی مثبت ال ای دی ها به چه پایه هایی از رزبری پای متصل شده اند.
همینطور۳ ردیف پایانه ی ال ای دی منفی نیز به صورت زیر به پین ها متصل هستند :
پایانه های مشترک منفی طبقه ی بالا به : ۱۳
پایانه های مشترک منفی طبقه ی وسط به : ۶
پایانه های مشترک منفی طبقه ی پایین به : ۵
هنگامی که همه چیز را انجام دادید باید تصویری مانند زیر داشته باشید.
شماتیک مدار و توضیحات آن:
در تصویر زیر تصویر کاملی از اتصالات مدار را مشاهده می کنید.
دانلود کد برنامه :
دانلود فایل#working import RPi.GPIO as IO #calling for header file which helps in using GPIO’s of PI import time #calling for time to provide delays in program IO.setwarnings(False) #do not show any warnings x=1 y=1 z=0 IO.setmode (IO.BCM) IO.setup(4,IO.OUT) #initialize GPIO4 as an output IO.setup(17,IO.OUT) #initialize GPIO17 as an output IO.setup(27,IO.OUT) #initialize GPIO27 as an output IO.setup(24,IO.OUT) IO.setup(23,IO.OUT) IO.setup(18,IO.OUT) IO.setup(25,IO.OUT) IO.setup(12,IO.OUT) IO.setup(16,IO.OUT) IO.setup(5,IO.OUT) IO.setup(6,IO.OUT) IO.setup(13,IO.OUT) columns = [4,17,27,24,23,18,25,12,16] #GPIO pins of columns in order rows =[5,6,13] #GPIO pins of rows in order random = [4,24,25,17,23,12,27,18,16] #GPIO pins of columns in random for z in range (3): IO.output(rows[z],1) #pulling up the rows for z in range (9): IO.output(columns[z],0) #pulling down the columns while 1: for y in range (3): #execute the loop 3 times incrementing y value from zero to three IO.output(rows[y],0) #pull down the rows pointed by 'y' for x in range (9): #execute the loop 9 times incrementing x value from zero to eight IO.output(columns[x],1) #pull up the columns pointed by 'x' time.sleep(0.1) #sleep for 100ms IO.output(columns[x],0) #pull down the columns after 100ms IO.output(rows[y],1) #pull up the row after 100ms for y in range (3): IO.output(rows[2-y],0) for x in range (9): IO.output(columns[8-x],1) time.sleep(0.1) IO.output(columns[8-x],0) IO.output(rows[2-y],1) for y in range (3): IO.output(rows[y],0) for x in range (9): IO.output(columns[x],1) time.sleep(0.1) IO.output(columns[x],0) for y in range (3): IO.output(rows[y],1) for y in range (3): IO.output(rows[2-y],0) for x in range (9): IO.output(columns[8-x],1) time.sleep(0.1) IO.output(columns[8-x],0) for y in range (3): IO.output(rows[2-y],1) for y in range (3): IO.output(rows[y],0) for x in range (9): IO.output(random[x],1) time.sleep(0.1) IO.output(random[x],0) IO.output(rows[y],1) for y in range (3): IO.output(rows[2-y],0) for x in range (9): IO.output(random[8-x],1) time.sleep(0.1) IO.output(random[8-x],0) IO.output(rows[2-y],1)
دیدگاهها (0)