I am trying get arduino to brighten up the led while button is been pressed and stop when button is lifted. If I press the button second time, the LED should start dimming. For some reason my code never stops brightening up the LED and also never starts dimming the led. Here is how far I have gotten so far, all advice is appreciated.
const int b1 = 3;
const int led = 10;
const int DEBOUNCE_HIDASTUS = 50;
const int PITKA_PAINALLUS = 1000;
const int muutos = 5;
int nykyinenTila;
int viimeinenTila = LOW;
int viimeinTasainenTila = LOW;
int kirkkaus = 0;
int tavoiteKirkkaus = 255;
int vaihtaja = 0;
unsigned long debounce = 0;
unsigned long nykyinenPainallus = 0;
long painonKesto;
bool painaa = false;
bool pitkaPainallusHavaittu = false;
void setup(){
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(b1, INPUT);
}
void loop(){
nykyinenTila = digitalRead(b1);
if (nykyinenTila != viimeinenTila) {
debounce = millis();
viimeinenTila = nykyinenTila;
}
if ((millis() - debounce) > DEBOUNCE_HIDASTUS) {
if (viimeinTasainenTila == HIGH && nykyinenTila == LOW){
nykyinenPainallus = millis();
painaa = true;
pitkaPainallusHavaittu = false;
Serial.println("painettu");
}else if (viimeinTasainenTila == LOW && nykyinenTila == HIGH){
painaa = false;
Serial.println("irroitettu");
}
if (painaa == true && pitkaPainallusHavaittu == false){
painonKesto = millis() - nykyinenPainallus;
if (painonKesto > PITKA_PAINALLUS){
pitkaPainallusHavaittu = true;
kirkastajaTaiHimmentaja();
vaihtaja++;
Serial.println(vaihtaja);
}
}
viimeinTasainenTila = nykyinenTila;
}
}
void kirkastajaTaiHimmentaja(){
if ((painonKesto > PITKA_PAINALLUS) && (pitkaPainallusHavaittu == true) && (vaihtaja % 2 == 0)){
kirkkaus = kirkkaus + muutos;
for (kirkkaus = 0; kirkkaus < tavoiteKirkkaus; kirkkaus++){
analogWrite(led, kirkkaus);
Serial.println(vaihtaja);
delay(50);
}
}
if((painonKesto > PITKA_PAINALLUS) && (pitkaPainallusHavaittu == true) && (vaihtaja % 2 == 1)){
kirkkaus = kirkkaus - muutos;
for (kirkkaus = 255; kirkkaus > tavoiteKirkkaus; kirkkaus--){
analogWrite(led, kirkkaus);
Serial.println(vaihtaja);
delay(50);
}
}
}