- 7-segmenttinen ja 4-numeroinen 7-segmenttinen näyttöyksikkö:
- 4-numeroisen 7-segmenttisen moduulin yhdistäminen Raspberry Pi: n kanssa:
- Vadelma Pi: n ohjelmointi:
- Näytä aika 4-numeroisessa 7-segmentissä Raspberry Pi: n avulla:
Me kaikki tiedämme sen Vadelma Pi on loistava ARM-mikroprosessoriin perustuva kehitysympäristö. Suurella laskentatehollaan se voi tehdä ihmeitä elektroniikan harrastajien tai opiskelijoiden käsissä. Kaikki tämä voi olla mahdollista vain, jos osaamme saada sen toimimaan reaalimaailman kanssa ja analysoimaan tietoja jonkin tulostuslaitteen kautta. On monia antureita, jotka pystyvät havaitsemaan tietyt parametrit reaaliaikaisesta maailmasta ja siirtämään ne digitaaliseen maailmaan, ja analysoimme niitä tarkastelemalla niitä joko LCD-näytöllä tai muulla näytöllä. Mutta aina ei olisi taloudellista käyttää LCD-näyttöä PI: n kanssa pienen tietomäärän näyttämiseen. Tässä mieluummin käytämme mieluummin 16x2 aakkosnumeerista LCD-näyttöä tai 7-segmenttistä näyttöä. Olemme jo oppineet käyttämään aakkosnumeerista LCD-näyttöä ja yhden segmentin 7-segmenttinäyttöä Raspberry pi: n kanssa. TänäänLiitäntä 4-numeroinen seitsemän segmentin näyttö Module Raspberry Pi ja näytön aika sen yli.
Vaikka 16x2-aakkosnumeerinen LCD-näyttö on paljon mukavampi kuin 7-segmenttinen näyttö, on vain vähän tilanteita, joissa 7-segmenttinen näyttö olisi kätevämpi kuin LCD-näyttö. LCD kärsii haittapuolesta siitä, että sillä on pieni merkkikoko, ja se ylittää projektisi, jos aiot vain näyttää joitain numeerisia arvoja. 7-segmenteillä on myös etu huonoa valaistusta vastaan, ja niitä voidaan tarkastella viistokulmista kuin normaalia LCD-näyttöä. Aloitetaan siis tietää se.
7-segmenttinen ja 4-numeroinen 7-segmenttinen näyttöyksikkö:
7 Segmenttinäytössä on seitsemän segmenttiä, ja jokaisessa segmentissä on yksi LED, joka näyttää numerot valaisemalla vastaavat segmentit. Kuten jos haluat 7-segmentin näyttävän luvun "5", sinun on hehkutettava segmentti a, f, g, c ja d tekemällä niiden vastaavat nastat korkeaksi. 7-segmenttinäyttöjä on kahta tyyppiä: Common Cathode ja Common Anode, tässä käytämme Common Cathode seitsemän segmentin näyttöä. Lisätietoja 7 segmentin näytöstä täältä.
Nyt osaamme näyttää haluamasi numeerisen merkin yhdellä 7-segmenttisellä näytöllä. Mutta on melko ilmeistä, että tarvitsemme useamman kuin yhden 7-segmenttisen näytön välittämään kaikki tiedot, jotka ovat enemmän kuin yksi numero. Joten tässä opetusohjelmassa käytämme nelinumeroista 7-segmenttistä näyttöyksikköä alla olevan kuvan mukaisesti.
Kuten voimme nähdä, on neljä seitsemää segmenttinäyttöä kytketty toisiinsa. Tiedämme, että jokaisella 7-segmenttisellä moduulilla on 10 nastaa ja 4 seitsemälle segmenttinäytölle olisi 40 nastaa yhteensä, ja jokaisen olisi kiireistä juottaa ne pistetaululle, joten suosittelen ketään ostamaan moduulin tai tee oma piirilevy nelinumeroisen 7-segmenttisen näytön käyttöä varten. Saman kytkentäkaavio on esitetty alla:
Ymmärtääksemme kuinka nelinumeroinen seitsemäsegmenttinen moduuli toimii, meidän on tutkittava yllä olevia kaavioita, kuten on esitetty, kaikkien neljän näytön A-nastat on kytketty keräämään yhtenä A: na ja sama B: lle, C: lle… DP: hen asti. Joten pohjimmiltaan, jos laukaisin A on päällä, kaikkien neljän A: n pitäisi mennä korkealle oikealle?
Mutta sitä ei tapahdu. Meillä on vielä neljä nastaa D0: sta D3: een (D0, D1, D2 ja D3), joita voidaan käyttää säätämään, minkä näytön neljästä pitäisi mennä korkealle. Esimerkiksi: Jos tarvitsen lähtöni olevan läsnä vain toisella näytöllä, vain D1 tulisi tehdä korkeaksi pitäen muut nastat (D0, D2 ja D3) matalina. Yksinkertaisesti voimme valita, minkä näytön on oltava aktiivinen käyttämällä nastoja D0 - D3 ja mikä merkki näytetään nastojen A - DP avulla.
4-numeroisen 7-segmenttisen moduulin yhdistäminen Raspberry Pi: n kanssa:
Katsotaanpa, miten, kuinka voimme yhdistää tämän nelinumeroisen 7-segmenttisen moduulin Raspberry Pi -malliin. 7-segmenttisessä moduulissa on 16 nastaa alla olevan kuvan mukaisesti. Moduulissasi voi olla vähemmän, mutta älä huoli, sillä on silti seuraava varmasti
- 7 tai 8 segmentin nastaa (tässä nastat alkavat 1: stä 8: een)
- Maadoitettu tappi (tässä tappi 11)
- 4-numeroiset nastat (tässä nastat 13-16)
Alla on kaavamainen vadelma pi -digikello kytkemällä nelinumeroinen seitsemän segmentin näyttömoduuli Raspberry Pi: hen:
Seuraava taulukko auttaa sinua myös muodostamaan yhteydet ja tarkistamaan, että se on yllä esitettyjen kaavioiden mukainen.
S. ei |
Rsp Pi GPIO -numero |
Rsp Pi PIN-koodi |
7-segmentin nimi |
7-segmenttinen pin-numero (tässä tässä moduulissa) |
1 |
GPIO 26 |
PIN-koodi 37 |
Segmentti a |
1 |
2 |
GPIO 19 |
PIN 35 |
Segmentti b |
2 |
3 |
GPIO 13 |
PIN-koodi 33 |
Segmentti c |
3 |
4 |
GPIO 6 |
PIN-koodi 31 |
Segmentti d |
4 |
5 |
GPIO 5 |
PIN-koodi 29 |
Segmentti e |
5 |
6 |
GPIO 11 |
PIN 23 |
Segmentti f |
6 |
7 |
GPIO 9 |
PIN-koodi 21 |
Segmentti g |
7 |
8 |
GPIO 10 |
PIN 19 |
Segmentti DP |
8 |
9 |
GPIO 7 |
PIN-koodi 26 |
Numero 1 |
13 |
10 |
GPIO 8 |
PIN-koodi 24 |
Numero 2 |
14 |
11 |
GPIO 25 |
PIN 22 |
Numero 3 |
15 |
12 |
GPIO 24 |
PIN-koodi 18 |
Numero 4 |
16 |
13 |
Maa |
Maa |
Maa |
11 |
Tunnista moduulin nastat ja olet hyvä jatkamaan yhteyksiä. GPIO-nastojen havaitseminen Vadelma piissä voi olla hieman haastava tehtävä, joten olen toimittanut sinulle tämän kuvan GPIO-nastoille.
Vadelma Pi: n ohjelmointi:
Tässä käytämme Python- ohjelmointikieltä RPi: n ohjelmointiin. On monia tapoja ohjelmoida Raspberry Pi. Tässä opetusohjelmassa käytämme Python 3 IDE: tä, koska se on eniten käytetty. Täydellinen Python ohjelma annetaan lopussa tämän opetusohjelman. Lisätietoja Raspberry Pi -ohjelman ohjelmoinnista ja ajamisesta tässä.
Puhumme muutamasta komennosta, joita aiomme käyttää PYHTON-ohjelmassa tässä projektissa, Ensin aiomme tuoda GPIO-tiedoston kirjastosta, alla oleva toiminto antaa meille mahdollisuuden ohjelmoida PI: n GPIO-nastat. Nimeämme myös "GPIO": n "IO: ksi", joten aina kun haluamme viitata GPIO-nastoihin, käytämme sanaa "IO". Olemme myös tuoneet aikaa ja datetime lukea arvon aikaa Rsp Pi.
tuo RPi.GPIO GPIO-tuontiaikana, päivämäärä
Joskus, kun GPIO-nastat, joita yritämme käyttää, saattavat tehdä joitain muita toimintoja. Siinä tapauksessa saamme varoituksia ohjelman suorituksen aikana. Alla oleva komento kehottaa PI: tä ohittamaan varoitukset ja jatkamaan ohjelmaa.
IO.setwarnings (väärä)
Voimme viitata PI: n GPIO-nastoihin joko aluksella olevalla pin-numerolla tai niiden toimintonumerolla. Kuten taululla oleva PIN-koodi 29, on GPIO5. Joten sanomme täällä joko aion edustaa tappi tässä '29' tai '5'. GPIO.BCM tarkoittaa, että edustamme 5: n käyttöä GPIO5-nastalle 29.
IO.setmode (GPIO.BCM)
Kuten aina, meidän tulisi aloittaa nastojen alustaminen, tässä sekä segmenttinastat että numerotapit ovat lähtönastoja. Muodostetaan ohjelmointitarkoitusta varten segmentit nastoille ja alustetaan ne arvoon 0 ilmoitettuaan ne GPIO: ksi.
segment8 = (26,19,13,6,5,11,9,10) segmentille segmentti8: GPIO.setup (segmentti, GPIO.OUT) GPIO.output (segmentti, 0)
Vastaavasti numerotappien kohdalla ilmoitamme ne lähtönapeiksi ja teemme niistä oletusarvoisesti '0'
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) #Ei alun perin #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) #Off Original #Digit 3 GPIO.asetukset (25, GPIO.OUT) GPIO.ulostulo (25, 0) #Ei alun perin #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) #Off first
Meidän on muodostettava taulukot, jotta jokainen numero voidaan näyttää seitsemän segmentin näytöllä. Yhden numeron näyttämiseksi meidän on hallittava kaikkia 7 segmentin nastaa (piste tappi pois lukien), toisin sanoen ne on joko kytkettävä pois päältä tai päälle. Esimerkiksi numeron 5 näyttämiseksi meillä on seuraava järjestely
S. ei |
Rsp Pi GPIO -numero |
7-segmentin nimi |
Tila näyttää '5'. (0-> OFF, 1-> ON) |
1 |
GPIO 26 |
Segmentti a |
1 |
2 |
GPIO 19 |
Segmentti b |
1 |
3 |
GPIO 13 |
Segmentti c |
0 |
4 |
GPIO 6 |
Segmentti d |
1 |
5 |
GPIO 5 |
Segmentti e |
1 |
6 |
GPIO 11 |
Segmentti f |
0 |
7 |
GPIO 9 |
Segmentti g |
1 |
Vastaavasti meillä on järjestysnumero kaikille numeroille ja aakkosille. Voit kirjoittaa itse tai käyttää alla olevaa kaaviota.
Näillä tiedoilla voimme muodostaa taulukot jokaiselle numerolle python-ohjelmassa alla olevan kuvan mukaisesti.
null = nolla = yksi = kaksi = kolme = neljä = viisi = kuusi = seitsemän = kahdeksan = yhdeksän =
Jos seuraat ohjelma tulee olemaan funktio näyttää kunkin merkin meidän 7-segmentin näyttö, mutta antaa ohittaa tämän nyt ja päästä samalla päättymättömään silmukkaan. Mistä lue nykyinen aika Vadelma Pi: ltä ja jaa ajan arvo neljän muuttujan välillä. Esimerkiksi jos aika on 10,45, niin muuttujalla h1 on 1, h2: lla 0, m1: llä 4vand m2: llä on 5.
now = päivämäärä.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)
Meidän on näytettävä nämä neljä muuttuja-arvoa vastaavasti neljällä numerollamme. Voit kirjoittaa muuttujan arvon numeroon käyttämällä seuraavia rivejä. Tässä näytetään numero 1 tekemällä se korkeaksi, sitten funktio print_segment (muuttuja) kutsutaan näyttämään muuttujan arvo segmentin näytöllä. Saatat ihmetellä, miksi meillä on viive sen jälkeen ja miksi me kytkemme tämän numeron pois tämän jälkeen.
GPIO.output (7, 1) #Kytke päälle Digit One -tulostussegmentti (h1) #Tulosta h1 segmentin time.sleep (delay_time) GPIO.output (7, 0) #Kytke Digit One pois päältä
Syynä on, koska tiedämme, että voimme näyttää vain yhden numeron kerrallaan, mutta meillä on neljä numeroa näytettävissä, ja vain jos kaikki neljä numeroa näytetään, koko nelinumeroinen numero näkyy käyttäjälle.
Joten miten kaikki 4 numeroa näytetään samanaikaisesti ?
Onneksi meille MPU on paljon nopeampi kuin ihmissilmä, joten mitä teemme: näytämme yhden numeron kerrallaan, mutta teemme sen hyvin nopeasti, kuten yllä on esitetty.
Valitsemme yhden numeron näytön, jonka odotetaan olevan 2 ms (muuttuvan viiveen aika), jotta MPU ja 7-segmentti voivat käsitellä sen, sammuttaa sitten kyseisen numeron ja siirtyä seuraavaan numeroon ja tehdä saman, kunnes saavutamme viimeisen numeron. Tätä 2 ms viivettä ei voida havaita ihmissilmällä, ja kaikki neljä numeroa näyttävät olevan PÄÄLLÄ samanaikaisesti.
Viimeinen asia, joka on opittava sen tietämiseksi, kuinka print_segment (muuttuja) -toiminto toimii. Tämän toiminnon sisällä käytämme toistaiseksi ilmoittamiamme taulukoita. Joten minkä tahansa muuttujan, jonka lähetämme tälle funktiolle, arvon tulisi olla (0-9), muuttujan merkki saa tämän arvon ja vertaa sitä todelliseen arvoon. Tässä muuttujaa verrataan arvoon 1. Vastaavasti verrataan kaikkiin lukuihin välillä 0 - 9. Jos se on osuma, käytämme matriiseja ja osoitamme jokaisen arvon vastaaville segmenttinastoille alla olevan kuvan mukaisesti.
def print_segment (charector): jos charector == 1: i: lle alueella (7): GPIO.output (segment8, one)
Näytä aika 4-numeroisessa 7-segmentissä Raspberry Pi: n avulla:
Käytä tässä annettuja kaavioita ja koodeja yhteyden muodostamiseen ja ohjelmoi vadelma piisi vastaavasti. Kun kaikki on tehty, käynnistä vain ohjelma ja sinun pitäisi löytää nykyinen kellonaika seitsemän segmentin näytössä. Mutta on muutama asia, joka sinun on tarkistettava ennen tätä
- Varmista, että olet asettanut Raspberry Pi -laitteellesi nykyisen ajan vain siinä tapauksessa, että se toimii offline-tilassa.
- Käynnistä Raspberry pi -sovitin sovittimella, et kannettavalla tietokoneella, koska 7-segmenttisen näytön vetämä virta on suuri eikä USB-porttisi voi hankkia sitä.
Jos kaikki toimii odotetusti, sinun pitäisi löytää jotain tällaista alla.
Tämän vadelma-pi-kellon täydellinen toiminta voidaan myös tarkistaa alla olevasta videosta. Toivottavasti pidit projektista ja nautit sen rakentamisesta. Kerro minulle mitä mieltä olet tai jos tarvitset apua.