Stap 3: Geven een teken wilt weergeven
Zo, u hebt opgeschreven of herinnerd wat pinnen Ga naar welke poorten, juiste? Ik koos PD [2..7] en PB0 (digitale pennen 2 tot 8 in Arduino-spreken). Ik suggereren niet normaal gesproken met behulp van PD [0..1] omdat ik wijden aan mijn seriële communicatie terug naar een FreeBSD doos en Arduino van et al. toewijzen die pinnen aan hun FTDI USB communicatiekanaal, en hoewel "ze" zeggen, pennen 0 en 1 zal werken als u geen seriële communicatiepoorten te initialiseren, ik heb nooit kunnen gebruiken die pinnen als normale digitale i/o. In feite, heb ik twee dagen trying voor het debuggen van een probleem toen ik probeerde te gebruiken PD0 en PD1 en vond dat ze altijd hoog waren. * shrug *
Het zou waarschijnlijk goed om te hebben een soort van externe input, zoals misschien een toetsenbord, een pushwheel of een draaischijf schakelaar, of misschien zelfs input van een terminal (mijn ArduinoTerm is niet klaar voor prime time gewoon nog niet...). De keuze is aan jou. Voor nu ga ik om te illustreren hoe krijg ik de code te krijgen van het teken dat u op de LED wilt. Er is een zipfile te downloaden, met inbegrip van de broncode en de Makefile en er is ook een filmpje laten zien van de LED afdrukken uit de tekenset. Sorry voor de waardeloze kwaliteit van de video.
De onderstaande code wordt afgedrukt op de tekenreeks "Welcome to mijn Instructable!" dan doorloopt de volledige tekenset die de LED.
DDRD = 0xFF; // OutputDDRB = (1<<DDB0); char msg[] = "Welcome to my Instructable!";uint8_t i;for (;;){ for(i=0;i<27; i++) { Print2LED(msg[i]); _delay_ms(150); } for(i=0x20; i<0x80; i++) { Print2LED(i); _delay_ms(150); } Print2LED('*');}
De output van de poort is opgevangen in de Print2Led() functie.
voidPrint2LED(uint8_t i){ PORTD = (i << 2); if (i & 0b01000000) PORTB = (1<<PINB0); else PORTB = (0<<PINB0);}
De code en de Makefile is opgenomen in een zip-bestand hieronder.