Med en matrisskrivare LED med en Arduino och SKIFT registrera (3 / 5 steg)
Steg 3: Ange ett tecken som ska visas
Så har du skrivit ner eller mindes vad pins gå till vad hamnar, rätt? Jag valde PD [2..7] och PB0 (digital stift 2 till och med 8 i Arduino-tala). Jag vill inte normalt föreslå använder PD [0.. 1] eftersom jag ägna det åt min seriell kommunikation tillbaka till en fri ruta och Arduino's et al. mappa dessa pins till deras FTDI USB kommunikationskanal, och även om "de" säger stift 0 och 1 kommer att fungera om du inte initierar seriell kommunikation, jag har aldrig kunnat använda de stift som normala digitala I/O. I själva verket tillbringade jag två dagar försökt att felsöka ett problem när jag försökt till använda PD0 och PD1 och fann att de alltid var hög. * axelryckning *
Det skulle förmodligen vara bra att ha någon form av extern ingång, som kanske en knappsats, en pushwheel eller miniatyrhjul switch, eller kanske till och med indata från en terminal (min ArduinoTerm är inte redo för bästa sändningstid ännu...). Valet är ditt. För nu ska jag bara illustrera hur till få koden till få den karaktär du vill ha på LED. Det finns en zipfil för nedladdning inklusive källkod och Makefile och det finns även en kort film som visar LED utskriva ut sin teckenuppsättning. Ledsen för den crappy kvaliteten på videon.
Koden nedan skriver ut strängen "Välkommen till min Instructable!" sedan växlar mellan den hela teckenuppsättning som LED.
DDRD = 0XFF; OutputDDRB = (1 << DDB0); char msg [] = "Välkommen till min Instructable!"; uint8_t jag; för (;) {för (jag = 0; jag < 27; i ++) {Print2LED(msg[i]); _delay_ms(150);} för (jag = 0x20; jag < 0x80; i ++) {Print2LED(i); _delay_ms(150);} Print2LED('*');}
Port produktionen tas om hand i funktionen Print2Led() .
voidPrint2LED(uint8_t i) {PORTD = (jag << 2), om (jag & 0b01000000) PORTB = (1 << PINB0), annan PORTB = (0 << PINB0);}
Koden och Makefile ingår i en zip-fil nedan.