Sisällysluettelo:

Pistematriisin LED -valon käyttäminen Arduinon ja Shift -rekisterin kanssa: 5 vaihetta
Pistematriisin LED -valon käyttäminen Arduinon ja Shift -rekisterin kanssa: 5 vaihetta

Video: Pistematriisin LED -valon käyttäminen Arduinon ja Shift -rekisterin kanssa: 5 vaihetta

Video: Pistematriisin LED -valon käyttäminen Arduinon ja Shift -rekisterin kanssa: 5 vaihetta
Video: Arduino Opas 10 - 8x8-LED matriisi ja 74HC595 siirtorekisteri 2024, Marraskuu
Anonim
Pistematriisin LED -valon käyttäminen Arduinon ja Shift -rekisterin kanssa
Pistematriisin LED -valon käyttäminen Arduinon ja Shift -rekisterin kanssa
Pistematriisin LED -valon käyttäminen Arduinon ja Shift -rekisterin kanssa
Pistematriisin LED -valon käyttäminen Arduinon ja Shift -rekisterin kanssa
Pistematriisin LED -valon käyttäminen Arduinon ja Shift -rekisterin kanssa
Pistematriisin LED -valon käyttäminen Arduinon ja Shift -rekisterin kanssa

Siemens DLO7135 Dot matrix LED on hämmästyttävä optoelektroniikan osa. Se laskutetaan 5x7 pistematriisin älykkänäytönä (r), jossa on muisti/dekooderi/ohjain. Tämän muistin lisäksi siinä on 96-merkkinen ASCII-näyttö, jossa on isot ja pienet kirjaimet, sisäänrakennettu merkkien generaattori ja multiplekseri, neljä valon voimakkuutta ja kaikki toimii 5 V: lla., ja 16 dollaria pop, sen pitäisi ehdottomasti olla. Viettäessäni puoli päivää suosikki paikallisessa elektroniikkakaupassani löysin roskakorin, joka oli täynnä näitä hintaan 1,50 dollaria kappale. Lähdin kaupasta useiden kanssa. Tässä ohjeessa kerrotaan, kuinka voit muodostaa yhteyden näihin pistematriisivaloihin ja näyttää merkkejä AVR-pohjaisen Arduinon avulla. Jos olet lukenut jonkin aiemmista oppaistani, saatat saada käsityksen siitä, että kannatan usein kaikkein säälimättömämpää ratkaisua, etkä olisi väärässä, vaikka olisinkin aika ajoin tavoitteen alapuolella. Siksi menen myös toiseen askeleeseen tässä ohjeessa ja näytän sinulle, kuinka voit vähentää näiden suurten, loistavien pistematriisivalojen käyttämiseen tarvittavien I/O -porttien määrää.

Vaihe 1: Hae tavarat…

Hae tavarat…
Hae tavarat…

Tätä lyhyttä pientä projektia varten tarvitset:

  • AVR-pohjainen mikro-ohjain, kuten Arduino tai mikä tahansa sen kaltainen. Nämä ohjeet voidaan todennäköisesti mukauttaa valitsemasi MCU: n mukaan.
  • DLO7135 -pistematriisi -LED tai muu samassa perheessä
  • 8-bittinen siirtorekisteri, kuten 74LS164, 74C299 tai 74HC594
  • leipälauta
  • kytkentäjohto, langanleikkurit jne.

Juotosrautaa ei tarvita, vaikka käytän sitä myöhemmin; pärjäät ilmankin.

Vaihe 2: Yhdistä suoraan LED -näyttöön

Yhdistä suoraan LED -näyttöön
Yhdistä suoraan LED -näyttöön
Yhdistä suoraan LED -näyttöön
Yhdistä suoraan LED -näyttöön
Yhdistä suoraan LED -näyttöön
Yhdistä suoraan LED -näyttöön

Aseta pieni osaluettelo ja tartu LEDiin. Aseta se leipälaudalle hieman keskelle, keskiviivan uran välissä. Ensimmäinen osa liittämisestä tapahtuu LED -valon vasemmalla puolella. Nasta #1 sijaitsee vasemmassa yläkulmassa kolmion/nuolen osoittamalla tavalla. Laitan nastatoiminnot kuvaan viitteellesi lukiessasi tai liittäessäsi LED -valoa.

Vasen puoli

Positiivinen ja negatiivinen Aloita vasemmasta yläkulmasta, kytke Vcc 5V: iin. On ehkä hyvä idea olla laudalla ilman virtaa, ennen kuin koko vasen puoli on valmis; LED voi olla kirkas, jos yrität nähdä pieniä reikiä johtoihin. Liitä vasen alaosa GND maahan. Lamputesti, sirun käyttöönotto ja kirjoitus 2. ja 3. ylhäältä vasemmalta ovat lampun testi ja sirun käyttöönotto. Nämä ovat molemmat negatiivista logiikkaa, mikä tarkoittaa, että ne ovat käytössä, kun ne ovat loogisessa 0: ssa 1: n alapuolella. Kuvassani alla pitäisi olla palkit, mutta en ole merkinnyt sitä mihinkään. LT -nasta, kun se on käytössä, sytyttää pistematriisin kaikki pisteet 1/7 -kirkkaudella. Se on enemmän pikseleiden testi, mutta mielenkiintoinen asia LT -nastassa on se, että se ei korvaa mitään muistissa olevaa merkkiä, joten jos sinulla on useita näistä, ne on yhdistetty toisiinsa (niillä on 20 jalan etäisyys), strobing LT voi saada sen näyttämään kursorilta. Varmista, että se on poistettu käytöstä, kytkemällä se 5 V. Voit hallita näitä nastoja mikro -ohjaimen ylimääräisillä I/O -porteilla, mutta emme häiritse täällä. Liitä ne vain maahan, jotta ne pysyvät käytössä. Kirkkaustasot DLO -LED -perheessä on neljä ohjelmoitavaa kirkkaustasoa:

  • Tyhjä
  • 1/7 Kirkkaus
  • 1/2 Kirkkaus
  • Täysi kirkkaus

BL1 HIGH ja BL0 LOW ovat 1/2 kirkkautta. Molemmat HIGH ovat täynnä kirkkautta. Aseta se mihin haluat. Jälleen kerran, jos sinulla on I/O -portteja varattuna ja se on tarpeeksi tärkeää sinulle, voit myös hallita tätä Arduinollasi, joka käärii vasemmalle puolelle. Jos lisäät virtaa levyllesi, LED -valon pitäisi palaa. Pelaa kirkkauden säätimillä ja lamputestillä, jotta voit tutustua siihen, jos olet utelias.

Oikea puoli

Oikea puoli koostuu kokonaan dataporteista. Oikea alareuna, nasta 8 tai D0, edustaa vähiten merkittävää bittiä 7-bittisessä merkissä. Oikeassa yläkulmassa oleva tappi 14 tai D6 edustaa merkittävintä bittiä. Näin voit tietää, missä järjestyksessä bitit sekoitetaan, kun kirjoitat LED -valolle. Kun tiedonsiirtoportit on kytketty, etsi Arduinosta tai AVR: stä seitsemän tyhjää digitaalista I/O -porttia ja yhdistä ne. Haluat todennäköisesti muistaa, mikä AVR -laitteesi tiedonsiirtoportti menee mihin LED -valon tietojen syöttöporttiin. Vapisteletko jo jännityksestä? Tiedän että olen…

Vaihe 3: Näytettävän merkin määrittäminen

Näytettävän hahmon määrittäminen
Näytettävän hahmon määrittäminen

Tässä CMOS-merkkivalossa käytettävä merkkijoukko on ASCII-sarjasi, joka alkaa 0x20 (desimaali 32; välilyönti) ja päättyy 0x7F: ään (desimaali 127; poisto, vaikka se näkyy LEDissä kohdistingrafiikkana). Joten, jos LED -näytöllä on merkki, se ei merkitse mitään muuta kuin logiikan 1 tai 0 painamista datan ulostulonappeihin, joita yleensä seuraa WR -pulssi, mutta olen sitä edellä tässä harjoituksessa. muistin, mitkä nastat menevät mihin portteihin, eikö? Valitsin PD [2..7] ja PB0 (digitaaliset nastat 2-8 Arduino-puhuessa). En yleensä suosittele PD: n [0..1] käyttöä, koska omistan sen sarjaliikenteelleni takaisin FreeBSD -laatikkoon ja Arduinon ym. yhdistää ne nastat FTDI USB -viestintäkanavaansa, ja vaikka "he" sanovat, että nastat 0 ja 1 toimivat, jos et alustaa sarjaliikennettä, en ole koskaan voinut käyttää niitä nastoina normaalina digitaalisena I/O: na. Itse asiassa vietin kaksi päivää yrittäen korjata ongelmaa, kun yritin käyttää PD0: ta ja PD1: tä ja huomasin, että ne olivat aina HIGH. * kohauttaa olkapäitään* Olisi luultavasti hyvä saada jonkinlainen ulkoinen tulo, kuten näppäimistö, työntö- tai peukalokytkin tai ehkä jopa tulo päätelaitteesta (ArduinoTerm ei ole vielä valmis parhaaseen aikaan). Päätös on sinun. Tällä hetkellä aion vain havainnollistaa, kuinka saada koodi, jotta haluamasi merkki saadaan LEDiin. Siellä on ladattava zip -tiedosto, joka sisältää lähdekoodin ja Makefile -tiedoston, ja siellä on myös lyhyt elokuva, joka osoittaa, että LED tulostaa sen merkistön. Anteeksi videon huono laatu. Alla oleva koodi tulostaa merkkijonon "Welcome to my Instructable!" sitten selaa läpi koko merkkijoukon, jota LED tukee.

DDRD = 0xFF; // LähtöDDRB = (1 << DDB0); char msg = "Welcome to my Instructable!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _viive_ms (150); } for (i = 0x20; i <0x80; i ++) {Print2LED (i); _viive_ms (150); } Print2LED (& apos*& apos);}Portin ulostulosta huolehditaan Print2Led () -toiminnossa

voidPrint2LED (uint8_t i) {PORTD = (i << 2); jos (i & 0b01000000) PORTB = (1 <

Koodi ja Makefile sisältyvät alla olevaan zip -tiedostoon.

Vaihe 4: Säilytä I/O -portit siirtorekisterillä

Säilytä I/O -portit siirtorekisterillä
Säilytä I/O -portit siirtorekisterillä
Säilytä I/O -portit siirtorekisterillä
Säilytä I/O -portit siirtorekisterillä
Säilytä I/O -portit siirtorekisterillä
Säilytä I/O -portit siirtorekisterillä

Joten nyt mikro -ohjaimemme voi lähettää tietoja pistematriisin LED -valolle, mutta se käyttää kahdeksaa I/O -porttia. Tämä sulkee pois ATtinyn käytön 8-nastaisessa DIP-paketissa ja jopa uudemmassa Arduinossa, jossa on ATmega328p, joka sisältää paljon I/O-portteja yhdelle LEDille. Voimme kuitenkin kiertää tämän käyttämällä siirtorekisteriä. Hetki "vaihtaa" vaihteita … Vaihtorekisteri voidaan ymmärtää parhaiten ajattelemalla kahta sanaa, jotka muodostavat sen nimen: "shift" ja "register". Sana shift tarkoittaa sitä, miten tiedot liikkuvat rekisterin läpi. Täällä (kuten Arduinossa ja mikrokontrollereissa yleensä) rekisteri on paikka, joka sisältää tietoja. Se tekee tämän toteuttamalla lineaarisen digitaalisten logiikkapiirien ketjun, jota kutsutaan "varvastossuiksi" ja jossa on kaksi vakaata tilaa, jotka voidaan esittää joko 1: llä tai 0. Joten yhdistämällä kahdeksan varvastossua sinulla on laite, joka pystyy pitämään ja edustavat 8-bittistä tavua. aivan kuten on olemassa useita erilaisia flip floppeja ja useita muunnelmia teemasta vuororekisterit (ajattele ylös/alas laskurit ja Johnson-laskurit), on olemassa myös useita tyyppisiä siirtorekistereitä sen perusteella, miten tiedot tallennetaan rekisteriin ja miten kyseiset tiedot tulostetaan. Harkitse tämän perusteella seuraavia siirtorekisterityyppejä:

  • Sarjatulo / rinnakkaislähtö (SIPO)
  • Sarjatulo / sarjalähtö (SISO)
  • Rinnakkaistulo/ sarjalähtö (PISO)
  • Parallel In / Parallel Out (PIPO)

Kaksi huomionarvoista ovat SIPO ja PISO. SIPO -rekisterit ottavat tietoja sarjassa, eli yksi bitti toisensa jälkeen, siirtämällä aiemmin syötetyn bitin seuraavalle flip flopille ja lähettämällä tiedot ulos kaikista tuloista kerralla. Tämä tekee mukavan sarja -rinnakkaismuuntimen. PISO -siirtorekisterit päinvastoin sisältävät rinnakkaisia tuloja, joten kaikki bitit syötetään kerralla, mutta ne lähetetään yksi kerrallaan. Ja arvasit sen, tämä tekee mukavan rinnakkaisuuden sarjamuuntimen kanssa. Siirtorekisteri, jota haluamme käyttää I/O -nastojen määrän vähentämiseen, sallii meidän ottaa ne 8 aiemmin käyttämäämme IO -nastaa ja pienentää ne yhteen tai ehkä vain pariin, kun otetaan huomioon, että meidän on ehkä hallittava syöttämistämme palaset. Siksi käyttämämme siirtorekisteri on sarjatulo / rinnakkaislähtö. Kytke vuororekisteri LEDin ja Arduinon väliin Vaihtorekisterin käyttäminen on helppoa. Vaikeinta on vain visualisoida datan ulostulonastat ja kuinka binääriluvut päätyvät IC: hen ja miten ne lopulta näkyvät LED -valossa. Ota hetki aikaa suunnitella tämä. 1. Kiinnitä 5V nastaan 14 (ylhäällä oikealla) ja vedä nasta 7 (vasen alareuna) maahan. Siirtorekisterissä on kaksi sarjatuloa, mutta käytämme vain yhtä, joten liitä nasta kaksi 5V3: een. Emme käytä kirkasta tappia (käytetään nollaamaan kaikki lähdöt), joten jätä se kelluvaksi tai hyökkää 5V4: een. Liitä yksi digitaalinen IO -portti kiinnittääksesi yhden siirtorekisteristä. Tämä on sarjatulonappi.5. Liitä yksi digitaalinen IO -portti nastaan 8 (oikea alareuna). Tämä on kellon nasta.6. Yhdistä datalinjat Q0 - Q6. Käytämme vain 7 bittiä, koska ASCII -merkistö käyttää vain seitsemää bittiä. Käytin PD2: ta sarjatietojeni tuottamiseen ja PD3: ta kellosignaaliin. Datanappeja varten liitin Q0 - D6 LEDiin ja jatkoin samalla tavalla (Q1 - D5, Q2 - D4 jne.). Koska lähetämme tietoja sarjana, meidän on tutkittava jokaisen lähetettävän merkin binäärinen esitys, tarkasteltava 1: tä ja 0: ta ja tulostettava jokainen bitti sarjarivillä. Olen lisännyt toisen version dotmatrixled.c -lähteestä yhdessä alla olevan Makefile -tiedoston kanssa. Se selaa merkistöä ja näyttää kaikki parilliset merkit (jos on outoa ajatella, että kirjain voi olla pariton tai parillinen, ajattele binääriesitystä hetki). Yritä selvittää, miten voit saada sen kiertämään kaikkien parittomien merkkien näyttämisen. Voit kokeilla edelleen siirtorekisterin, pistematriisin LED -valon ja Arduino -laitteen välisiä yhteyksiä. Merkkivalon ja rekisterin välissä on useita ohjausominaisuuksia, joiden avulla voit hienosäätää tietojen näyttämisen hallintaa. Joten…. Olemme siirtyneet käyttämään kahdeksaa I/O-porttia vain kahteen!

Vaihe 5: Yhteenveto

Yhteenveto
Yhteenveto
Yhteenveto
Yhteenveto

Tässä ohjeessa olen esittänyt DLO7135 -pistematriisin LED -valon ja sen toimivuuden. Olen lisäksi keskustellut siitä, kuinka tarvittavien I/O -porttien määrää voidaan vähentää kahdeksasta vain kahteen siirtorekisterin avulla. DLO7135 -pistematriisi -LED voidaan kiristää yhteen, jotta saadaan erittäin katseenvangitsijoita ja mielenkiintoisia telttoja. Toivottavasti teillä oli hauskaa lukea tämä ohje! Jos sinulla on parannuksia, joita luulet voivani tehdä, tai ehdotuksia, joita haluaisit antaa tässä tai jossakin iblestäni, olen iloinen kuullessani niitä!

Suositeltava: