/**********************
Autor: Daniel Pitterka
4-Bit Binärzähler
***********************/
//Für die millis daher auch "unsigned long" weil sie sonst zu schnell überläuft
unsigned long currentmillisUp;
unsigned long currentmillisDown;
unsigned long previousmillisUP = 0;
unsigned long previousmillisDown = 0;
const int interval = 100;
int timeUp = 0;
int timeDown = 0;
//Pin für LEDs und Taster festgelegt
int LED1 =10;
int LED2 =11;
int LED3 =12;
int LED4 =13;
int buttonUP = 3;
int buttonDOWN = 4;
int count;
void setup() {
//Pins als output festlegen
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
//Taster fürs rauf zählen
pinMode(buttonUP, INPUT_PULLUP);
//Taster fürs runter zählen
pinMode(buttonDOWN, INPUT_PULLUP);
//Starten des Serialmoitors
Serial.begin(9600);
}
void loop() {
int switchStateUP = digitalRead(3);
int switchStateDown = digitalRead(4);
//Drüken des TasterUP
//Zähler zählt 1 nach oben
if (switchStateUP == LOW) {
currentmillisUp = millis();
if (currentmillisUp - previousmillisUP >= interval){
previousmillisUP = currentmillisUp;
count++;
if (count == 16){
count = 0;
}
}
}
//Drücken des TasterDOWN
//Zähler zählt nach unten
if (switchStateDown == LOW) {
currentmillisDown = millis();
if(currentmillisDown - previousmillisDown >= interval){
previousmillisDown = currentmillisDown;
count--;
if (count <= 0){
count = 0;
}
}
}
digitalWrite(LED1, bitRead(count, 0));
digitalWrite(LED2, bitRead(count, 1));
digitalWrite(LED3, bitRead(count, 2));
digitalWrite(LED4, bitRead(count, 3));
//Ausgabe von Serialmonitor
Serial.println(count);
//delay(100);
}