در پایان این آموزش شما قادر خواهید بود با ساخت یک مکعب نوری که با رسپبری پای کنترل می شود، هنر خود را به دوستانتان نشان دهید. با ما همراه شوید.

 

گام اول: ابزار و قطعات مورد نیاز

هر مدلی از رسپبری پای × 1  
برد توسعه 40 پین رسپبری پای (اختیاری) × 1  
LED × 27  
ترانزیستور × 3  
سیم جامپر × 1  
برد بورد × 1  
هویه × 1  
سیم لحیم × 1  

 

طرز ساخت مکعب LED:گام دوم


کار خود را با اندازه‌گیری پایه کوتاه LED ها آغاز کنید. با این کار می توانید حداکثر فاصله بین LED‌ها را اندازه بگیرید.
academy 9408030 Raspberry 02
یک شبکه 3x3 روی یک تخته نازک (به عنوان مثال 3 میلیمتر) رسم کنید و با استفاده از دریل 9 نقطه آن را به اندازه LED‌ها سوراخ کنید. از این تخته به عنوان نگه‌دارنده LED‌ها در زمان لحیم‌کاری استفاده کنید.
LED ها را به پین های 5 ولت و زمین رسپبری پای وصل کرده و از سالم بودن تک تک آن ها اطمینان حاصل کنید.
academy 9408030 Raspberry 03

academy 9408030 Raspberry 04

هر LED را در یک سوراخ تخته قرار دهید و پایه کوتاه‌ را طبق الگوی دیاگرام خم کنید. هر پایه کوتاه باید به پایه کوتاه‌ در LED بعدی متصل شود، اما نباید تماسی با پایه بلند داشته باشد.
academy 9408030 Raspberry 05
در این مرحله پایه‌های کوتاه را به یکدیگر لحیم کنید تا یک لایه از مکعب ایجاد شود. اکنون هر لایه را با قرار دادن سیم زمین در مقابل پایه‌های کوتاه‌ که به یکدیگر لحیم شده‌اند و اتصال سیم‌های عمودی (پایه های بلند LED ها) به سیم 5 ولت، آزمایش کنید. با هر بار اتصال، LED مربوطه باید روشن شود.لایه را از سوراخ‌ها خارج کرده و دو لایه دیگر را دقیقا مطابق مراحل بالا آماده کنید.
سیم‌های عمودی هر لایه را به لایه بالایی لحیم کنید.
در مرحله پایانی، LEDها را با قرار دادن سیم زمین در یک لایه و تکمیل مدار با اتصال دیگر پین‌ها به سیم 5 ولتی، آزمایش کنید. اگر همه چیز درست کار کند ، LEDی متناظر باید روشن شود.
در آخرین مرحله از لحیم کاری به هر لایه از مکعب یک سیم برای اتصال به بورد، لحیم کنید.
academy 9408030 Raspberry 06


گام سوم: ساخت مدار

 


academy 9408030 Raspberry 07
academy 9408030 Raspberry 08
گام بعدی قرار دادن 9 پین مکعب به صورت جداگانه داخل برد بورد می‌باشد. شاید نیاز باشد برای قرار گرفتن پایه ها در مکان مناسب، کمی پایه‌های مکعب را خم کنید.
academy 9408030 Raspberry 09
برد توسعه رسپبری پای را به برد بورد متصل کنید و 9 پین خروجی GPIO را به 9 پایه بلند LEDهای مکعب وصل کنید. با اتصال هر پین به منبع تغذیه، 3 لامپ LED موجود در ستون متناظر آن، روشن خواهند شد. برای کامل کردن مدار، شما باید هر سه لایه را به زمین متصل کنید. اگر آنها را مستقیما به زمین متصل کنید در این صورت، هر سه لایه همیشه به زمین متصل خواهند بود و شما به جای روشن کردن هر LED به تنهایی ، فقط قادر خواهید بود که هر ستون LED را روشن کنید.
بنابراین از ترانزیستور استفاده می کنیم. ترانزیستورها را می توان به عنوان سوییچ‌های کوچکی با سه پین توصیف کرد. دو پین در سمت راست و چپ شبیه به دو انتهای سیم هستند که در این مدار یک سیم به زمین و سیم دیگر به لایه ها وصل شده است اگر منبع تغذیه را به پین وسطی اعمال کنید کلید روشن می شود و دو پایه دیگر متصل خواهند شد. پس با استفاده از سه پین‌ خروجی دیگر GPIO می‌توانید این پین ها را به پین وسطی هر سه ترانزیستور متصل کنید.
بخش الکترونیکی این پروژه آماده است و امکان اتصال هر ستون از LED‌ها به منبع تغذیه وجود دارد. همچنین می‌توانید اتصالات لایه ها به زمین را قطع و وصل کنید. اکنون می‌توانید هر LED را به صورت ترکیبی از led های ستون‌ها و لایه‌هایی که فعال شده اند روشن کنید.

گام چهارم: برنامه نویسی


academy 9408030 Raspberry 10
برنامه زیر که با زبان پایتون نوشته شده است نشان می دهد که چگونه led ها را با یک الگوی زیبا روشن و خاموش کنیم.

 


#**************************************************************************************
#*
#*  Title:            3x3 LED Cube
#*
#*  Description:      Simple LED cube for soldering practice and demonstrate some
#*                    array handling with GPIO pins
#*                       - Pins P1 to P9 are connected to LED Cathode (-)
#*                       - Layers are connected to LED Anode (+)
#*
#*  Author:           Jacob Groves, Coventry Makerspace
#*
#**************************************************************************************
import RPi.GPIO as GPIO
from time import sleep
# Assign the individual LED pins a variable name . . .
P1 = 13
P2 = 19
P3 = 26
P4 = 23
P5 = 24
P6 = 25
P7 = 16
P8 = 20
P9 = 21
# Assign the layers to a nice variable . . .
Top = 17
Middle = 27
Bottom = 22
# LED sequences represented by an array . . .
aPins = [P1, P2, P3, P4, P5, P6, P7, P8, P9]  
aPinsReversed = [P9, P8, P7, P6, P5, P4, P3, P2, P1]  
aPinsStar = [P1, P2, P3, P6, P9, P8, P7, P4]  
aPinsStar2 = [P9, P8, P7, P4, P1, P2, P3, P6]  
aPinsSpiral = [P1, P2, P3, P6, P9, P8, P7, P4, P5]  
aPinsSpiralReversed = [P5, P4, P7, P8, P9, P6, P3, P2, P1]  
aLayers = [Top, Middle, Bottom]
# Time delay built in between pin output . .  .
delay = 0.15
#**************************************************************************
#* setupColumns - Initialisation of the pins . . .
#**************************************************************************
def setupColumns():
    # GPIO pin addressing will use the virtual number . . .
    GPIO.setmode(GPIO.BCM)
    # Initialise the pins so we can output values to them . . .
    GPIO.setup(aPins, GPIO.OUT)
    GPIO.setup(aLayers, GPIO.OUT)
    GPIO.output(aPins, False)
    GPIO.output(aLayers, True)
    
#**************************************************************************
#* cyclePins - Receive array of pins & light them up one by one . . .
#**************************************************************************
def cyclePins(pPins):
    for iPin in pPins:
    
        GPIO.output(iPin, True)
        sleep(delay)
        GPIO.output(iPin, False)
#**************************************************************************
#* cyclePinsPair - Receive 2 arrays of pins & light them up in pairs . . .
#**************************************************************************
def cyclePinsPair(pPins, pPins2):
    for iPin in range(len(pPins)):
    
        GPIO.output(pPins[iPin], True)
        GPIO.output(pPins2[iPin], True)
        sleep(delay)
        GPIO.output(pPins[iPin], False)
        GPIO.output(pPins2[iPin], False)
        
#**************************************************************************
#* Mainline logic . . .
#**************************************************************************
try:
    print('Press CTRL+C to stop script')
    i = 0
    while(true):
        # Spinning star . . .
        GPIO.output(aLayers, True)
        GPIO.output(P5, True)
        cyclePinsPair(aPinsStar, aPinsStar2)
        cyclePinsPair(aPinsStar, aPinsStar2)
        GPIO.output(P5, False)
        # Zig-zaggy columns . . .
        GPIO.output(aLayers, True)
        cyclePins(aPins)
        cyclePins(aPinsReversed)
        GPIO.output(aLayers, False)
        # Spiral columns . . .
        GPIO.output(aLayers, True)
        cyclePins(aPinsSpiral)
        cyclePins(aPinsSpiralReversed)
        GPIO.output(aLayers, False)
        # Zig-zaggy layers . . .
        GPIO.output(Top, True)
        cyclePins(aPins)
        GPIO.output(Top, False)
        GPIO.output(Middle, True)
        cyclePins(aPinsReversed)
        GPIO.output(Middle, False)
        GPIO.output(Bottom, True)
        cyclePins(aPins)
        GPIO.output(Bottom, False)
        sleep(delay)
        
except KeyboardInterrupt:
    GPIO.cleanup()
finally:
    GPIO.cleanup()
 منبع: سایت instructables
افزودن نظر
  • هیچ نظری یافت نشد