- 7 segmentų ir 4 skaitmenų 7 segmentų ekranas:
- Keturių skaitmenų 7 segmentų modulio prijungimas su „Raspberry Pi“:
- „Raspberry Pi“ programavimas:
- Rodymo laikas 4 skaitmenų 7 segmentuose naudojant „Raspberry Pi“:
Mes visi žinome tą Avietę Pi yra nuostabi „Development“ platforma, pagrįsta ARM mikroprocesoriumi. Turėdamas didelę skaičiavimo galią, jis gali sukurti stebuklus elektronikos mėgėjų ar studentų rankose. Visa tai gali būti įmanoma tik tada, jei žinome, kaip priversti jį sąveikauti su realiu pasauliu ir analizuoti duomenis per kokį nors išvesties įrenginį. Yra daug jutiklių, kurie gali aptikti tam tikrus realaus laiko parametrus ir perkelti juos į skaitmeninį pasaulį, ir mes analizuojame juos žiūrėdami juos LCD ekrane ar kitame ekrane. Visada būtų neekonomiška naudoti LCD ekraną su PI rodant nedidelį duomenų kiekį. Čia mes norėtume naudoti 16x2 raidinį ir skaitmeninį LCD ekraną arba 7 segmentų ekraną. Mes jau išmokome naudoti raidinį ir skaitmeninį skystųjų kristalų ekraną ir vieno segmento 7 segmentų ekraną su „Raspberry pi“. Šiandien tai padarysime4 skaitmenų septynių segmentų ekrano modulis su „Raspberry Pi“ ir virš jo rodomas laikas.
Nors 16x2 raidinis ir skaitmeninis skystųjų kristalų ekranas yra daug patogesnis nei 7 segmentų ekranas, yra nedaug scenarijų, kai 7 segmentų ekranas būtų naudingesnis nei LCD ekranas. Skystųjų kristalų ekranas turi trūkumų dėl mažo simbolių dydžio ir bus per didelis jūsų projektui, jei tik planuojate rodyti keletą skaitinių verčių. 7 segmentai taip pat turi pranašumą prieš blogą apšvietimo būklę ir juos galima žiūrėti iš kampo kampų nei į įprastą LCD ekraną. Taigi pradėkime tai žinoti.
7 segmentų ir 4 skaitmenų 7 segmentų ekranas:
7 segmentų ekrane yra septyni segmentai, o kiekviename segmente yra vienas šviesos diodas, rodantis skaičius, apšviečiant atitinkamus segmentus. Panašiai kaip jei norite, kad 7 segmentai rodytų skaičių „5“, tada jums reikia švyti segmentus a, f, g, c ir d, padarydami aukštus jų kaiščius. Yra dviejų tipų 7 segmentų ekranai: bendrasis katodas ir bendrasis anodas, čia mes naudojame bendrojo katodo septynių segmentų ekraną. Sužinokite daugiau apie 7 segmentų rodymą čia.
Dabar mes žinome, kaip norimą skaitinį simbolį rodyti viename 7 segmentų ekrane. Tačiau akivaizdu, kad mums reikės daugiau nei vieno 7 segmentų ekrano, kad galėtume perduoti bet kokią informaciją, kuri yra daugiau nei vienas skaitmuo. Taigi, šioje pamokoje naudosime 4 skaitmenų 7 segmentų rodymo modulį, kaip parodyta žemiau.
Kaip matome, yra sujungti keturi septyni segmentų ekranai. Mes žinome, kad kiekvienas 7 segmentų modulis turės 10 smeigtukų, o keturiems septyniems segmentų ekranams iš viso būtų 40 smeigtukų, ir visiems būtų nemalonu juos lituoti ant taškinės lentos, todėl labai rekomenduočiau visiems įsigyti modulį arba pasidarykite savo PCB, kad galėtumėte naudoti 4 skaitmenų 7 segmentų ekraną. Toliau parodyta to paties ryšio schema:
Norėdami suprasti, kaip veikia 4 skaitmenų septynių segmentų modulis, turime panagrinėti aukščiau pateiktas schemas, kaip parodyta visų keturių ekranų A kaiščiai yra sujungti, kad būtų galima surinkti kaip vieną A ir tą patį B, C…. iki DP. Taigi, iš esmės, jei įjungiamas A, tada visi keturi A turėtų būti aukšti?
Bet taip neatsitinka. Mes turime papildomus keturis kaiščius nuo D0 iki D3 (D0, D1, D2 ir D3), kuriais galima valdyti, kuris ekranas iš keturių turėtų būti aukštas. Pvz.: Jei man reikia, kad mano išvestis būtų rodoma tik antrame ekrane, tik D1 turėtų būti padaryta aukšta, o kiti kaiščiai (D0, D2 ir D3) turėtų būti kuo mažesni. Paprasčiausiai mes galime pasirinkti, kuris ekranas turi būti aktyvus, naudojant kaiščius nuo D0 iki D3, ir kokį simbolį rodyti, naudojant kaiščius nuo A iki DP.
Keturių skaitmenų 7 segmentų modulio prijungimas su „Raspberry Pi“:
Pažiūrėkime, kaip, kaip mes galime sujungti šį 4 skaitmenų 7 segmentų modulį su savo „Raspberry Pi“. 7 segmentų modulis turi 16 kaiščių, kaip parodyta žemiau. Modulio gali būti mažiau, bet nesijaudinkite, jis vis tiek tikrai turės šiuos dalykus
- 7 arba 8 segmentų kaiščiai (čia kaiščiai prasideda nuo 1 iki 8)
- Įžemintas kaištis (čia 11 kaištis)
- 4 skaitmenų kaiščiai (čia kaiščiai nuo 13 iki 16)
Žemiau pateikiama „avp Pi“ skaitmeninio laikrodžio schema, sujungiant 4 skaitmenų septynių segmentų rodymo modulį su „Raspberry Pi“:
Ši lentelė taip pat padės jums užmegzti ryšius ir patikrinti, ar jis atitinka aukščiau pateiktas schemas.
S.No |
Rsp Pi GPIO numeris |
Rsp Pi PIN kodas |
7 segmentų pavadinimas |
7 segmentų kaiščių numeris (čia, šiame modulyje) |
1 |
GPIO 26 |
PIN kodas 37 |
Segmentas a |
1 |
2 |
GPIO 19 |
PIN 35 |
B segmentas |
2 |
3 |
GPIO 13 |
33 PIN kodas |
C segmentas |
3 |
4 |
GPIO 6 |
PIN 31 |
D segmentas |
4 |
5 |
GPIO 5 |
PIN 29 |
Segmentas e |
5 |
6 |
GPIO 11 |
23 PIN kodas |
F segmentas |
6 |
7 |
GPIO 9 |
21 PIN kodas |
Segmentas g |
7 |
8 |
GPIO 10 |
19 PIN kodas |
Segmentas DP |
8 |
9 |
GPIO 7 |
26 PIN kodas |
1 skaitmuo |
13 |
10 |
GPIO 8 |
24 PIN kodas |
2 skaitmuo |
14 |
11 |
GPIO 25 |
22 PIN kodas |
3 skaitmuo |
15 |
12 |
GPIO 24 |
18 PIN kodas |
4 skaitmuo |
16 |
13 |
Žemė |
Žemė |
Žemė |
11 |
Nustatykite savo modulio kaiščius, ir jums tereikia tęsti ryšius. GPIO smeigtukų pastebėjimas „Raspberry pi“ gali būti šiek tiek sudėtinga užduotis, todėl pateikiau jums šią nuotrauką „GPIO Pins“.
„Raspberry Pi“ programavimas:
Čia programavimui RPi naudojame Python programavimo kalbą. Yra daugybė būdų, kaip užprogramuoti „Raspberry Pi“. Šioje pamokoje mes naudojame „ Python 3 IDE“, nes ji yra dažniausiai naudojama. Visa „ Python“ programa pateikiama šios pamokos pabaigoje. Sužinokite daugiau apie programą ir vykdykite „Raspberry Pi“ kodą čia.
Kalbėsime apie kelias komandas, kurias ketiname naudoti PYHTON programoje šiam projektui, Pirmiausia ketiname importuoti GPIO failą iš bibliotekos, žemiau pateikta funkcija leidžia mums užprogramuoti PI GPIO kaiščius. Mes taip pat pervadiname „GPIO“ į „IO“, todėl programoje, kai norime nurodyti GPIO kaiščius, naudosime žodį „IO“. Mes taip pat importavome laiką ir datos laiką, kad galėtume nuskaityti laiko vertę iš „Rsp Pi“.
importuoti RPi.GPIO kaip GPIO importavimo laiką, laiko laiką
Kartais, kai GPIO kaiščiai, kuriuos bandome naudoti, gali atlikti kitas funkcijas. Tokiu atveju vykdydami programą gausime įspėjimus. Žemiau komanda liepia PI nepaisyti įspėjimų ir tęsti programą.
IO.setwarnings (False)
Mes galime nurodyti PI GPIO kaiščius pagal PIN kodą laive arba pagal jų funkcijos numerį. Kaip lentoje esantis „PIN 29“ yra „GPIO5“. Taigi mes sakome, kad čia mes smeigtuką atvaizduosime „29“ arba „5“. GPIO.BCM reiškia, kad mes atstovausime 5 naudojimą GPIO5 kaiščiui 29.
„IO.setmode“ (GPIO.BCM)
Kaip visada, turėtume pradėti inicializuodami kaiščius, čia tiek segmento, tiek skaitmens kaiščiai yra išvesties kaiščiai. Programavimo tikslu mes formuojame segmentų kaiščių masyvus ir inicializuojame juos į „0“, paskelbę juos GPIO.
segmentas8 = (26,19,13,6,5,11,9,10) 8 segmento segmentui: GPIO.setup (segmentas, GPIO.OUT) GPIO.output (segmentas, 0)
Panašiai skaitmenų kaiščiams deklaruojame juos kaip išvesties kaiščius ir pagal nutylėjimą padarome „0“
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) # Iš pradžių #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) #Off pradžių 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) # Iš pradžių #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO. Output (24, 0)
Turime suformuoti masyvus, kad kiekvienas skaičius būtų rodomas septynių segmentų ekrane. Norėdami parodyti vieną skaičių, turime valdyti visus 7 segmentų kaiščius (išskyrus taškinį kaištį), ty juos reikia išjungti arba įjungti. Pavyzdžiui, norėdami parodyti skaičių 5, mes turime tokį išdėstymą
S.No |
Rsp Pi GPIO numeris |
7 segmentų pavadinimas |
Būsena rodyti „5“. (0-> IŠJUNGTA, 1-> ĮJUNGTA) |
1 |
GPIO 26 |
Segmentas a |
1 |
2 |
GPIO 19 |
B segmentas |
1 |
3 |
GPIO 13 |
C segmentas |
0 |
4 |
GPIO 6 |
D segmentas |
1 |
5 |
GPIO 5 |
Segmentas e |
1 |
6 |
GPIO 11 |
F segmentas |
0 |
7 |
GPIO 9 |
Segmentas g |
1 |
Panašiai turime visų skaičių ir abėcėlių eilės numerį. Galite rašyti patys arba naudoti toliau pateiktą diagramą.
Turėdami šiuos duomenis, mes galime suformuoti kiekvieno python programos skaičiaus masyvus, kaip parodyta žemiau.
null = nulis = vienas = du = trys = keturi = penki = šeši = septyni = aštuoni = devyni =
Jei atlikite programa ten bus funkcija, kad būtų rodomas kiekvieną simbolį į mūsų 7-segmentų ekrane, bet leidžia praleisti šį dabar, ir gauti į Nors begalinis ciklas. Kur skaitykite dabartinį laiką iš Raspberry Pi ir padalykite laiko vertę iš keturių kintamųjų. Pvz., Jei laikas yra 10,45, kintamasis h1 turės 1, h2 - 0, m1 - 4vand m2 - 5.
now = datetime.datetime.now () hour = now.hour minute = now.minute h1 = hour / 10 h2 = hour% 10 m1 = minute / 10 m2 = minute% 10 print (h1, h2, m1, m2)
Šias keturias kintamas vertes turime rodyti atitinkamai savo keturiuose skaitmenyse. Norėdami kintamojo vertę įrašyti į skaitmenį, galime naudoti šias eilutes. Čia mes rodomi 1 skaitmenyje, kad jis būtų aukštas, tada bus iškviesta funkcija print_segment (kintamasis) , kad segmento ekrane būtų rodoma kintamojo vertė. Jums gali būti įdomu, kodėl mes vėluojame po to ir kodėl mes išjungiame šį skaitmenį po to.
GPIO.output (7, 1) # Įjunkite pirmąjį skaitmenį print_segment (h1) # Spausdinkite h1 segmento time.sleep (delay_time) GPIO.output (7, 0) # Išjunkite vieną skaitmenį
Priežastis yra ta, kad, kaip žinome, vienu metu galime rodyti tik vieną skaitmenį, tačiau turime rodyti keturis skaitmenis ir tik tuo atveju, jei bus rodomi visi keturi skaitmenys, vartotojui bus matomas visas keturių skaitmenų skaičius.
Taigi, kaip vienu metu rodyti visus 4 skaitmenis ?
Mums pasisekė, kad mūsų MPU yra daug greitesnis nei žmogaus akis, todėl tai, ką mes iš tikrųjų darome: rodome po vieną skaitmenį, bet tai darome labai greitai, kaip parodyta aukščiau.
Mes pasirenkame vieno skaitmens ekraną, laukdami 2ms (kintamasis delsos laikas), kad MPU ir 7 segmentai galėtų jį apdoroti, tada išjungti tą skaitmenį ir pereiti prie kito skaitmens ir daryti tą patį, kol pasieksime paskutinį skaitmenį. Šio 2ms vėlavimo negalima pastebėti žmogaus akimi, ir atrodo, kad visi keturi skaitmenys yra įjungti vienu metu.
Paskutinis dalykas, kurį reikia išmokti, kad sužinotumėte, kaip veikia funkcija print_segment (kintamasis) . Šios funkcijos viduje mes naudojame iki šiol deklaruotus masyvus. Taigi bet kurio kintamojo, kurį siunčiame šiai funkcijai, vertė turėtų būti tarp (0–9), kintamasis simbolis gaus šią vertę ir palygins ją su tikrąja verte. Čia kintamasis lyginamas su „1“. Panašiai mes lyginame su visais skaičiais nuo 0 iki 9. Jei tai sutapimas, mes naudojame masyvus ir priskiriame kiekvieną vertę atitinkamiems segmento kaiščiams, kaip parodyta žemiau.
def print_segment (charector): jei charector == 1: i diapazone (7): GPIO.output (segmentas8, vienas)
Rodymo laikas 4 skaitmenų 7 segmentuose naudojant „Raspberry Pi“:
Norėdami sukurti ryšius, naudokite čia pateiktą schemą ir kodą ir atitinkamai užprogramuokite savo aviečių pi. Viską atlikę tiesiog paleiskite programą ir septynių segmentų ekrane turėtumėte rasti esamą laiką. Tačiau prieš tai turite patikrinti keletą dalykų
- Įsitikinkite, kad „Raspberry Pi“ nustatėte dabartinį laiką, jei jis veikia neprisijungus.
- Maitinkite „Raspberry pi“ naudodami adapterį, o ne su nešiojamuoju kompiuteriu / kompiuteriu, nes 7 segmentų ekrane rodoma didelė srovė ir jūsų USB prievadas negali jos gauti.
Jei viskas veikia taip, kaip tikėtasi, žemiau turėtumėte rasti kažką panašaus.
Visą šio aviečių pi laikrodžio veikimą taip pat galima patikrinti žemiau pateiktame vaizdo įraše. Tikiuosi, kad jums patiko projektas ir patiko jį kurti. Praneškite, ką manote, ar jums reikia pagalbos.