|
Eine einzige Taste ...
Folgendes Problem war zu lösen:
Nur eine Taste soll das Blinken einer LED starten und nach einer
Weile auch wieder beenden können.
Wir benutzen unser Attiny2313-Experimentierboard oder stecken die
kleine Schaltung auf einem Steckbrett auf.
Taste an PD0 und LED an PD7.
Schau Dir den Programm-Quelltext an:
#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>
//Funktion ledblinken
void ledblinken(void){
PORTB |= _BV(PB7); _delay_ms(100);
PORTB &= ~_BV(PB7); _delay_ms(100);
}
int main(void){
DDRB |= _BV(PB7); //LED
DDRD &= ~_BV(PD0); //Taste
PORTD |= _BV(PD0); //Pull Up Widerstand
int modus = 0; // modus=1->blinken
und modus=0->kein_blinken
while(1){
if ( bit_is_clear(PIND,0)
&& (modus==0) ) {ledblinken(); modus=1;}
if ( bit_is_set(PIND,0)
&& (modus==1) )
{ledblinken();}
if ( bit_is_clear(PIND,0)
&& (modus==1) ) {modus=0;
_delay_ms(250);_delay_ms(250);}
}
return 0;
}
Hier gibt's
den
Quelltexte-Ordner zum Programmieren des Attiny2313.
Anmerkungen:
Aufgaben:
- Versuch doch mal mit einer Taste mehrere Leuchtdioden einzeln
blinken zu lassen!
- Versuch doch mal mit mehreren Tasten eine Leuchtdiode mit
unterschiedlichen Frequenzen blinken zu lassen!
|