Sparrow-App: Lauflicht mit 16 Leuchtdioden
von Hermann Nieder
In dieser Sparrow-App steuert der ATtiny13 auf einer Sparrow-Platine einen Vier-Bit-Binärdekoder/
Demultiplexer an, an dessen 16 Ausgängen jeweils eine Leuchtdiode über einen gemeinsamen Vorwiderstand
an Vcc angeschlossen ist. Im Bild ist an allen Ausgängen des SN74154 zusätzlich eine von 16 kreisförmig
auf einer Platine angeordneten Leuchtdioden über einen gemeinsamen Vorwiderstand an Vcc angeschlossen.
Die grünen und gelben Leuchtdioden werden fortwährend im Uhrzeigersinn ein- und ausgeschaltet, während
die roten Exemplare auf dem Steckboard nacheinander einzeln von links nach rechts aufleuchten.
Dies ist das Schaltbild des von einem Sparrow gesteuerten Lauflichts. Von den für das kleine Projekt notwendigen
16 Leuchtdioden sind der Übersichtlichkeit wegen nur 2 dargestellt. Das Programm für den ATtiny13 auf der
Sparrow-Platine wurde in C entworfen. Taster S2 wird in diesem Projekt nicht verwendet, PORTB.2 dient hier als Ausgang!
Mit S1 kann man die Taktfrequenz des Lauflichts in einem bestimmten Bereich einstellen.
Dies ist ein Auszug aus dem Programlisting dazu:
/* Lauflicht*/ #include <avr/io.h> #include <util/delay.h> unsigned char n,p,portwert; int t; #define setbit(P,BIT) ((P) |= (1<<(BIT))) #define clearbit(P,BIT) ((P) &=~(1<<(BIT))) void mydelay(int t) { for (p=0;p<t;p++) { _delay_ms(5); } } int main(void) { DDRB=0b00011110; // PORTB.1,PORTB.2, PORTB.3 und PORTB.4 t=20; while(1) { if(!(PINB &(1<<PB0))) { t++; } for (n=0;n<16;n++) { switch(n) { case 0: PORTB=0b00000000; mydelay(t); break; case 1: PORTB=0b00000010; mydelay(t); break; ... case 14: PORTB=0b00011100; mydelay(t); break; case 15: PORTB=0b00011110; mydelay(t); break; default: break; } }// end for } // end while(1) }
Links und Referenzen: