Raspberry Pi

niedziela, 4 października 2015

Sterowanie diodami LED - pierwszy program sterujący

Mam Rasperkę, mam płytkę prototypową i trochę podzespołów, czas więc zrobić coś "efektownego".
Na początek sterowanie diodami LED.

  • 1 dioda (czerwona) aktywowana jest poprzez zmianę stanu pinu GPIO naprzemiennie co 1s z niskiego na wysoki (0 na 1). 
  • 2 dioda (zielona) aktywowana jest funkcją PWM (wypełnieniem mocą) 
  • 3 dioda RGB sterowana jest również przez PWM na 3 pina GPIO z tą różnicą, że stopień wypełnienia mocą dla każdego pinu RGB jest losowany cyklicznie w każdym kroku głównej pętli programu co skutkuje cyklicznymi i losowymi zmianami koloru i natężenia tej diody.
Więcej wyjaśnień w kodzie programu poniżej.

Schemat połączeń dla tego zadania:


Schemat połączeń z programu Fritzing



Kod programu diody.py:

#!/usr/bin/python
#program diody
#steruje 3 diodami
#1 poprzez ustawianie naprzemiennie stan wysoki iniski
#2 porzez jednorazowe ustawienie funkcji PWM na jednym z pnow
#3 dioda RGB sterowana poprzez losowanie wypelnienia funkcji PWM na kazdy z 3 pinow
#biblioteka time
import time
#biblioteka random
import random
#biblioteka GPIO
import RPi.GPIO as GPIO
#wylaczenie ostrzezen GPIO
GPIO.setwarnings(False)
#ustawienie typu interpretacji pinow GPIO
GPIO.setmode(GPIO.BCM)
#czyszczenie rejestrow GPIO
GPIO.cleanup()
#ustawienie wybranych pinow w trym OUT
GPIO.setup(21,GPIO.OUT)
GPIO.setup(20,GPIO.OUT)
GPIO.setup(26,GPIO.OUT)
GPIO.setup(19,GPIO.OUT)
GPIO.setup(13,GPIO.OUT)
#ustalenie stalych parametrow PWM dla 20 GPIO na 10Hz i wypelnienie 30% do sterowania dioda 2
pwm = GPIO.PWM(20, 10)
#start funkcji PWM
pwm.start(30)
#zerowanie zmiennych rgb
r=0
g=0
b=0
#ustawienia wartosci poczatkowych PWM dla pinow diody 3 RGB i start funkcji PWM
rpwm = GPIO.PWM(26,50)
rpwm.start(10)
gpwm = GPIO.PWM(19,50)
gpwm.start(10)
bpwm = GPIO.PWM(13,50)
bpwm.start(10)
#glowna petla programu
while True:
   #losowanie wartosci rgm dla diody 3 wielo kolorowej
   r=random.randint(1,100)
g=random.randint(1,100)
b=random.randint(1,100)
#zmiana wartosci RGB (wypenienia PWM)na wylosowane powyzej
rpwm.ChangeDutyCycle(r)
gpwm.ChangeDutyCycle(g)
bpwm.ChangeDutyCycle(b)
#stan wysoki na pinie diody 1
   GPIO.output(21,GPIO.HIGH)
#wstrzymanie programu na 1s
time.sleep(1)
#stan niski na pinie diody 1
GPIO.output(21,GPIO.LOW)
time.sleep(1)


Efekt działania:



Brak komentarzy:

Prześlij komentarz