Sparrow als Entwicklungshelfer für kleines Elektronikprojekt
von Hermann Nieder
Das abgebildete kleine Elektronikprojekt mit blinkenden Leuchtdioden wird von einem ATtiny13
auf der Lötseite einer Platine mit Lötpunkten angesteuert.
Dies ist das Schaltbild dazu. Die untereinander angeordneten LEDs (gelbe Exemplare am Rand der
„Mütze“ des stilisierten „Clowns“) leuchten abwechselnd, und zwar unabhängig vom roten Exemplar.
Dies geschieht mit folgendem Programm, das auf einem Raspberry Pi entwickelt und compiliert wurde:
//Clown Valentino // // Feb. 2015 #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define setbit(P,BIT) ((P) |= (1<<(BIT))) #define clearbit(P,BIT) ((P) &=~(1<<(BIT))) #define togglebit(P,BIT) ((P) ^=(1<<(BIT))) #define S1 (PINB &(1<<PB0)) #define S2 (PINB &(1<<PB2)) int p,t,n; ISR(TIM0_OVF_vect) { n++; if(n==8) { togglebit(PORTB,3);// bzw. so: PORTB ^=(1<<PB3); togglebit(PORTB,4); n=0; } } void mydelay(int t) { for (p=0;p<t;p++) { _delay_ms(1); } } int main(void) { DDRB=0b00011010; setbit(PORTB,3); clearbit(PORTB,4); TCCR0B |= (1<<CS02) |(1<<CS00);// Prozessortakt /1024 TIMSK0 |=(1<<TOIE0); // Interrupt aktivieren sei(); // Alle Interrupt-Aufrufe // erlauben clearbit(PORTB,1); t=500; while(1) { if(!S1) // "normaler Herzschlag" {t=500;} if(!S2) // "Herzklopfen" {t=250;} togglebit(PORTB,1); mydelay(t); } //end while(1) }
Im Hauptprogramm wird PORTB.3 gesetzt und PORTB.4 zurückgesetzt. Außerdem wird der Timer initialisiert.
Dieser zählt mit einer Frequenz 1200000/1024/256 Hz, also ca. 4,58 Hz. In der Interrupt-Routine wird
die Variable n bei jedem Timer-Überlauf um 1 erhöht, bis sie den Wert 8 erreicht. Dies geschieht,
um das Blinken der gelben LEDS zu „verlangsamen“. Nun wird der Zustand von PB3 und auch derjenige
von PB4 umgekehrt. Außerdem nimmt die Variable n wieder den Wert 0 an. Beim nächsten Überlauf wird n
wieder um 1 erhöht usw. Die rote LED blinkt zunächst mit einer Pausenzeit („normaler Herzschlag“)
von ca. 500 ms. Drückt man S2, wird die Pausenzeit auf die Hälfte verringert („Herzklopfen“). Die
usprüngliche „Herzschlag“ lässt sich wieder mithilfe von S2 einstellen.
Das Programm lässt sich z. B. gut mit einem Sparrow erproben. Das Bild zeigt, wie der Sound-Ausgang eines
Raspberry Pi mit einer Sparrow-Platine verbunden werden kann, um den ATtiny13 darauf mithilfe des
SoundProgrammers zu programmieren.
Darauf kann ein Test des Programms im Sparrow auf einem kleinen Steckboard mit äußeren Leuchtdioden erfolgen.
Wenn dieses wunschgemäß funktioniert, muss es auch in ein äußeres Exemplar des Mikrocontrollers übertragen werden.
Dazu kann dieser wie im Bild über einen entsprechenden Adapter und zusätzliche 8-polige Präzisionsfassungen
mit dem ATtiny13 auf der Sparrow-Platine verbunden (Verbindungen mit Vcc, GND, RES, PB0 und PB2 sowie z. B.
wie im Bild grüne LED von PB1 des „parallelen“ ATTiny13 über Vorwiderstand nach Masse als „Kontroll-LED“) werden.
Nun ist erneut der SoundProgrammer zu starten, um die Programmierung des äußeren ATtiny13 zu bewerkstelligen.
Anschließend kann das Programm im ATtiny13 mit einer Testschaltung, die gemäß dem Schaltbild oben aufgebaut worden
ist, auf einem kleinen Steckboard erprobt werden.
Ist der Testbetrieb erfolgreich verlaufen, sind nun Lötarbeiten auf der Lötseite der Platine des kleinen Projekts
durchzuführen. Die Verbindungsleitungen zum Batteriehalter mit zwei Mignonzellen haben eine Zugentlastung erhalten.
Der kleine Schalter ist zusätzlich mit angelöteten Drahstückchen fixiert, damit er sich betätigen lässt, ohne dass
Lötstellen „aufgehen“ indem sich Verbindugnsdrähte lösen.
Das Stück einer gehobelten Latte im Bild hat eine Nut in Längsrichtung erhalten, damit man den „Clown“ aufstellen kann.
Dies ist ein weiteres Bild des fertigen „Clowns Valentino“, mit dem man z. B. nicht nur am Valentinstag einem anderen
Menschen eine Freude machen kann.
Links und Referenzen: