Lösung: Arduino UNO Ereigniszähler
Pin-Zuordnungen
D0 - D7 :
|
PD0 - PD7
|
D10 :
|
PB2
|
Programmablaufplan
C-Quelltext:
#include <avr/io.h>
#include <stdint.h>
#include <util/delay.h>
int main(void)
{
DDRB = 0b00000000; // PortB auf Input
PORTB = 0b00000100; // PB1 und PB2 Pullup
DDRD = 0b11111111; // PortD auf Output
uint8_t zaehler = 0;
while (1)
{
while (PINB & 0b00000100) // Warten auf Tastendruck
{
}
zaehler++; // Zähler inkrement
PORTD = zaehler; // Zähler an PortD ausgeben
_delay_ms(500);
}
}
Quelltext: Erklärung
Compiler-Direktiven
#include
#include <avr/io.h>: AVR-I/O Bibliothek einbinden
#include <stdint.h>: Standard-Integer Bibliothek einbinden
#include <util/delay.h>: Delay Bibliothek einbinden
main() Funktion
while (!(PINB & 0b00000100))...
Auf Tastendruck an PB2 warten.
Der Pullup an PB2 muss aktiviert sein.
Es muss eine Bitmaske verwendet werden.
_delay_ms(500);
Dieses Delay sorgt dafür, dass der Zähler nicht unkontrolliert hochzählt.
|