versuch es mal so
/*
*© Ardubu Nov 2017
*Taster wird zwischen GND und pin_x angeschlossen
*interner Pullup Widerstand aktiviert
*der counter zählt von 0 bis 3 jeden Tastendruck
*/
#define DEBUG //Nur zur Fehlersuche aktivieren
#define tasterHoch 2 //Taster an D2 und GND
#define tasterRunter 3 //Taster an D3 und GND
#define ledPin1 11 // LED an D11
#define ledPin2 12 // LED an D12
#define ledPin3 13 // LED an D13
#define MotorPin 6 // the number of the Mootor pin
#define debounce_delay 15 //Entprellzeit für den Taster in ms
bool tasterHochState, tasterRunterState, tasterHochState_alt, tasterRunterState_alt;// Variablendeklaration (global)
uint8_t counter; //Zählt wie oft die Taste gedrückt wurde
void setup() {
#ifdef DEBUG
Serial.begin(115200);
Serial.println("Setup");
#endif
pinMode(tasterHoch, INPUT_PULLUP);
pinMode(tasterRunter, INPUT_PULLUP);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
}
void loop() {
static uint32_t debounce_time;
if (millis()-debounce_time>debounce_delay)tasterHochState = digitalRead(tasterHoch); //einlesen des Tasters
if (tasterHochState != tasterHochState_alt) // bei Pegelwechsel
{
debounce_time=millis();
#ifdef DEBUG
Serial.println(counter);
#endif
if(!tasterHochState)//wenn Taster gedrückt
{counter++;
counter = min (3 , counter );
}
tasterHochState_alt = tasterHochState; // state aktualisieren
}
if (millis()-debounce_time>debounce_delay)tasterRunterState = digitalRead(tasterRunter); //einlesen des Tasters
if (tasterRunterState != tasterRunterState_alt) // bei Pegelwechsel
{
debounce_time=millis();
#ifdef DEBUG
Serial.println(counter);
#endif
if(!tasterRunterState)//wenn Taster gedrückt
{counter--;
if(counter<1||counter>250) counter=0;
}
tasterRunterState_alt = tasterRunterState; // state aktualisieren
}
// *********************************************************** counter = 0 ****************************
if (counter == 0) {
digitalWrite (ledPin1, LOW);
digitalWrite (ledPin2, LOW);
digitalWrite (ledPin3, LOW);
analogWrite (MotorPin, 0);
}
// *********************************************************** counter = 1 ****************************
if (counter == 1) {
digitalWrite (ledPin1, HIGH);
digitalWrite (ledPin2, LOW);
digitalWrite (ledPin3, LOW);
analogWrite (MotorPin, 100);
}
// *********************************************************** counter = 2 ****************************
if (counter == 2) {
digitalWrite (ledPin1, HIGH);
digitalWrite (ledPin2, HIGH);
digitalWrite (ledPin3, LOW);
analogWrite (MotorPin, 150);
}
// *********************************************************** counter = 3 ****************************
if (counter == 3) {
digitalWrite (ledPin1, HIGH);
digitalWrite (ledPin2, HIGH);
digitalWrite (ledPin3, HIGH);
analogWrite (MotorPin, 200);
}
}//Ende loop