Cum să faci LED-uri intermitente cu Raspberry Pi

Raspberry Pi Led Featured Image
⏱️ 14 min read

Raspberry Pi este mai mult decât un computer mic. Este o placă puternică care vă permite să faceți atât de multe lucruri cu pinii săi GPIO. Aici vă arătăm cum să faceți LED-uri intermitente cu Raspberry Pi.

Când vă uitați la partea superioară a Raspberry Pi, veți găsi aproximativ 40 de pini metalici ieșind din placa de circuit. Dacă aveți un Raspberry Zero, probabil că există găuri circulare pentru lipirea știfturilor. În ambele cazuri, aceștia se numesc pini GPIO (General Purpose Input/Output).

Pini Gpio Raspberry Pi
Pini GPIO pe Raspberry Pi 3 Model B+. Pinul 1 începe de la pinul din stânga sus.

Fiecare pin GPIO este creat pentru a avea unul dintre cele două moduri la un moment dat: un HIGH și unul LOW. Pentru specificațiile de conectare la Raspberry Pi, un pin încărcat la 3,3 V contează ca fiind un HIGH sau un „1 logic”, în timp ce orice lucru sub aproximativ 2,5 V contează ca un LOW sau „0 logic”. Se spune că o placă care se bazează pe 3,3 V pentru ieșiri înalte și joase este pe „logica de 3,3 V”.

Când conectați un LED între un pin pe HIGH și un pin GND, practic faceți un circuit complet. LED-ul ar trebui să se aprindă din cauza curentului electric care trece.

Lt Spice Schematic Led Circuit
Un circuit LED conține trei părți: o sursă de tensiune cu masă, rezistor și LED.

Uneori, LED-urile vor ieși în fum atunci când trece prea mult curent prin el. Pentru a împiedica acest lucru să se întâmple, puteți adăuga un rezistor. Nu contează dacă este pe anod sau pe catod – ambele părți ar trebui să scadă curentul care trece.

GPIO și alți pini

Să fim clari aici, deoarece nu toți acești pini metalici sunt considerați GPIO. Sunt GPIO numai dacă pot fi programate să aibă un nivel ridicat sau scăzut – de unde și termenul „Intrare / Ieșire”. Pentru Raspberry PI, există și pini pentru alimentare (3.3v, 5v și GND) și funcționează cu EEPROM (ID_SD și ID_SC).

De data aceasta, nu va trebui să vă gândiți la toți ceilalți pini, cu excepția GND și a unui pin GPIO.

Programarea pinilor GPIO

Cum îi spui fiecărui Pin GPIO ce să facă? La cel mai elementar nivel, va trebui să faceți comenzi în codul mașinii. Va fi puțin prea dificil pentru începători.

În schimb, pentru Raspberry Pi, puteți utiliza Python sau C++, care apoi este compilat în codul mașinii.

Pentru acest proiect anume, folosim Python, deoarece este mai ușor de utilizat.

De ce ai nevoie

  • Orice model Raspberry Pi care nu este Pico (de preferință Raspberry Pi 3 Model B+ ca cel din acest exemplu, dar orice funcționează), instalat cu sistemul de operare Raspberry Pi.
  • Un monitor HDMI și cablu
  • Mouse și tastatură
  • Un încărcător de telefon (pentru a alimenta Raspberry Pi)
  • Un LED mic
  • Un rezistor de 250Ω (poate fi orice valoare apropiată de aceasta)
  • O placă fără lipire
  • x2 fire de jumper de la bărbat la femeie (sau de la bărbat la bărbat dacă aveți o pălărie cu antet)

Cum să faci LED-uri intermitente

Să facem acest pas pe rând și să facem ca un LED să clipească singur.

  1. Deschideți terminalul și tastați sudo apt-get install python3-rpi.gpio pentru a instala modulul RPi.GPIO pentru Python 3.
Terminal Instalați Python Gpio
  1. Deschideți un editor de text și introduceți acest cod:
import RPI.GPIO as GPIO
from time import sleep
 
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW)
 
while True:
	GPIO.output(7, GPIO.HIGH)
	print("LED on")
	sleep(1)
	GPIO.output(7, GPIO.LOW)
	print("LED off")
	sleep(1)
  1. Salvați-l într-un folder undeva. Numele extensiei ar trebui să fie .py. PE Raspberry Pi, l-am numit „rpi-blink.py” pentru a fi mai ușor de găsit.
File Explorer Rpi Blink Folder
  1. Închideți Raspberry Pi și scoateți-l din toate sursele de alimentare.
  2. Pentru a începe construirea circuitului, conectați LED-ul astfel încât să existe un rezistor fie pe catod, fie pe anod, apoi îndreptați partea catodului către pinul 7 și partea anodului către pinul 9 (GND).
Lt Spice Schematic Led X1

Bacsis: pentru a afla numărul pinului, țineți Raspberry Pi-ul astfel încât pinii GPIO să se afle în dreapta. Pinul din stânga sus este pinul 1, din dreapta sus este pinul 2. Cel de sub pinul 1 este pinul 3, apoi în dreapta acestuia este pinul 4 și așa mai departe.

  1. Porniți-l din nou, astfel încât să putem rula scriptul Python. Deschideți terminalul și utilizați cd pentru a muta în folderul fișierului Python. Tip:
python3 rpi-blink.py

pentru a face LED-ul să clipească.

Terminal Run Rpi Blink X1

Alternativă: dacă aveți Thonny Python IDE, faceți clic pe butonul „Run current script” pentru a-l face să ruleze direct din IDE.

Butonul Thonny Python Ide Run
  1. Pentru a opri, apăsați Ctrl + C în cadrul terminalului. Dar dacă utilizați Thonny Python IDE, atunci închideți editorul.
LED intermitent Raspberry Pi X1

Cum funcționează codul

Există două lucruri care o fac să funcționeze: codul și circuitul. Începem cu codul și îl tăiem în trei părți:

  1. Import comenzi
  2. Configurați comenzi
  3. Comenzi în buclă

În practică, este bine să ne gândim la cod ca la funcții mici grupate împreună pentru a face funcții mai mari.

Import comenzi

În mod normal, Python nu face atât de ușor să programați pinii GPIO. Se întâmplă o mulțime de lucruri în culise. Vestea bună este că puteți importa codul care se ocupă de toate aceste lucruri neplăcute.

Uitați-vă la rândurile 1 și 2:

import RPI.GPIO as GPIO
from time import sleep

Acestea sunt o pereche de linii care importă codul de la ceva numit „modul Python”.

import RPI.GPIO as GPIO vă permite să importați conținutul modulului RPI.GPIO și vă permite să utilizați GPIO cuvânt cheie pentru a apela o funcție asociată RPI.GPIO.

Pe de altă parte, from time import sleep vă permite să importați sleep() funcția din modulul de timp încorporat al lui Python. Acest lucru vă permite să întârziați următoarea linie de cod pentru un anumit număr de secunde.

Comenzi de configurare

Unele coduri trebuie să fie „setate” sau definite în acest fel, deoarece este folosit de alt cod pentru a face o logică complexă. Vom apela aceste comenzi de configurare.

Spre deosebire de comenzile de import, comenzile de configurare nu „importă” codul din module externe. Le importă din modulele pe care le-ați importat deja.

Ca exemplu, GPIO.setwarnings(False) importă .setwarnings() funcția de la RPI.GPIO modul, care a fost definit anterior ca GPIO. Această funcție oprește un avertisment de declanșare atunci când rulați codul. Este setat la True în mod implicit.

Pentru a explica celelalte două, continuăm cu GPIO.setmode(GPIO.BOARD). Asta spune RPI.GPIO ce fel de pinout vei folosi. Există două tipuri: BOARD și BCM. Elementul de fixare BOARD vă permite să alegeți pini pe baza numerelor acestora. Între timp, pinout-ul BCM îl bazează pe denumirea Broadcomm SOC Channel. Pentru a face lucrurile scurte, BOARD este mai ușor de utilizat, deoarece este întotdeauna același, indiferent de modelul Raspberry Pi pe care îl utilizați. BCM, pe de altă parte, tinde să fie diferit de la model la model.

În cele din urmă, avem GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW)care folosește .setup() funcția, care vă întreabă trei lucruri: numărul PIN, desemnarea acestuia și valoarea inițială. Numărul pinului pe care îl folosim aici este pinul numărul 7. Ar trebui să îl setăm într-un pin de ieșire și să ne asigurăm că începe ca LOW. Fără aceasta, Raspberry Pi nu va ști niciodată ce să facă cu pinul 7.

Comenzi în buclă

Aceasta este partea tare. Comenzile în buclă vă permit să îi spuneți lui Raspberry Pi să facă lucruri. Am început această buclă cu while True:care buclă pentru totdeauna următoarele linii de cod.

Au existat trei funcții în buclă: GPIO.output(), print()și sleep().

  • GPIO.output() ia un pin de ieșire și îl setează pe oricare HIGH sau LOW. Dacă te-ai gândit să schimbi ce pin să folosești pe Raspberry Pi, atunci ar fi trebuit să te schimbi 7 cu un număr PIN la alegere.
  • print() îl face să imprime ceva pe consolă. Acesta preia un șir, un număr sau o variabilă care le conține pe cele două anterioare.
  • sleep() întrerupe întregul program pentru un anumit număr de secunde. Folosiți un număr mai mic decât 1 pentru a face pauză pentru mai puțin de o secundă.

Circuitul

Acum că știți cum funcționează codul, să aruncăm o privire asupra circuitului. Codul realizează un circuit prin conectarea pinului 7 la GND. Când pinul 7 este activat HIGH, emite 3.3V care trece prin rezistor și LED, apoi intră în GND. Acesta devine un circuit complet și de aceea LED-ul se aprinde.

Lt Spice Schematic Raspberry Pi Pin 7 Pornit și Oprit
Stânga: circuit schematic când pinul 7 este pornit HIGH. Dreapta: circuit schematic când pinul 7 este pornit LOW.

Dar ce se întâmplă când pinul 7 este scăzut? 3.3V scade la aproximativ 0V. Astfel, prin LED nu trece electricitate, deci nu se aprinde. Vă puteți gândi la pinul 7 ca la un fel de comutator, deoarece pornește sau oprește circuitul.

Acum că știți ce face ca lucrurile să funcționeze, să ne modificăm puțin codul pentru a-l face să ruleze două LED-uri.

Pentru aceasta, va trebui doar să adăugați încă două LED-uri de orice culoare și încă două rezistențe de 250Ω.

  1. Deschideți din nou editorul de cod și inserați acest cod:
import RPI.GPIO as GPIO
from time import sleep
 
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(12, GPIO.OUT, initial=GPIO.HIGH)
GPIO.setup(37, GPIO.OUT, initial=GPIO.LOW)
 
while True:
	GPIO.output(7, GPIO.HIGH)
	GPIO.output(12, GPIO.LOW)
	print("LED on @ pin 7")
	print("LED off @ pin 12")
	sleep(1)
	GPIO.output(7, GPIO.LOW)
	GPIO.output(12, GPIO.HIGH)
	print("LED off @ pin 7")
	print("LED on @ pin 12")
	sleep(1)
	if x == 1:
		GPIO.output(37, GPIO.HIGH)
		print("LED on @ pin 37")
		x = 0
	elif x == 0:
		GPIO.output(37, GPIO.LOW)
		print("LED off @ pin 37")
		x = 1
	else:
		print("Logic Error")
	sleep(1)
  1. Salvați, apoi închideți Raspberry Pi.
  2. Pentru a conecta circuitul, pentru fiecare LED pe care îl aveți, conectați-l la un rezistor în serie, apoi conectați partea catodului la Raspberry Pi. Ar trebui să existe unul pentru pinul 7, altul pentru pinul 12 și ultimul pentru pinul 37. Partea anodului ar trebui să fie conectată la GND. Fiecare dintre acești pini are un pin GND lângă ei. Aceștia ar trebui să fie pinii 9, 20 și 39.
Lt Spice Schematic Led X3

Bacsis: dacă rămâneți fără cablu de legătură de la bărbat la femeie, puteți lipi un fir de legătură de la bărbat la bărbat de un fir de legătură de la femeie la femeie pentru a forma un fir de legătură mai lung de la bărbat la femeie.

Ace de jumper
Sus: cablu de legătură de sex masculin la masculin, de jos: fir de legătură de sex feminin la femeie.
  1. După ce ați terminat, porniți Raspberry Pi și repetați pasul 6 pentru a lansa scriptul Python.
LED intermitent Raspberry Pi X3

întrebări frecvente

De ce LED-ul meu rămâne deschis când opresc scriptul?

Când Raspberry Pi citește scriptul Python, citește linia înainte de a executa comanda. Probabil l-ai oprit imediat după ce a citit rândul GPIO.output(7, GPIO.HIGH), așa că nu a putut aduce pinul la LOW mai întâi. Îl puteți lăsa așa cum este, deoarece va reveni la LOW data viitoare când reporniți. Alternativ, creați un alt script Python care transformă pinul în LOW imediat ce rulează.

Mi-am pus LED-ul pe pinul din dreapta, dar nu se aprinde deloc. De ce?

Există două motive posibile: fie LED-ul este stricat, fie puneți catodul pe partea opusă. Încercați mai întâi să întoarceți pinii LED-ului.

Este sigur să plasați LED-ul în sens invers?

Da. Puteți să-l plasați vizavi, iar curentul o va face nu A trece prin. Este o trăsătură specială printre diode – chiar ușoară diode emițătoare – permit trecerea electricității pe o parte și nu pe cealaltă.

Este sigur să repoziționați LED-ul în timp ce Raspberry Pi este alimentat?

Dacă doar rotește LED-ul în sens invers, atunci este în regulă și nu e niciun rău acolo. Dar dacă aveți de gând să plasați LED-ul peste tot, există șansa să scurtați pinul de 5v la un pin GPIO. Asta îți va rupe placa.

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Avatar of Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

You may also like...

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x