I have a problem. I recently made a sketch meant to show tiny animations on 4 LEDs by pressing different buttons, one of the buttons changes the speed that the animations go.
The LEDs are then, if the ''animation-button'' is pressed, supposed to light up one after one, depending on ho high the speed is. The problem is that the buttons dont light up.
The pins 2-5 are output-pins (LEDs) and the pins 6-9 are input-pins (pushbuttons)
I know that the code can get better, even in the parts that work, but here is the code:
int buttn1 = 0;
int buttn2 = 0;
int buttn3 = 0;
int buttn4 = 0;
int blinkspeed = 80;
int mode = 0;
void setup() {
pinMode(2, OUTPUT);
Serial.begin(9600);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
digitalWrite(2, HIGH); //LEDs blink so user know that the sketch has started
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
delay(500);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
void loop(){ //
buttn1 = digitalRead(6);
buttn2 = digitalRead(7);
buttn3 = digitalRead(8);
buttn4 = digitalRead(9);
Serial.print(" mode: ");// Values printed to the serial monitor to know that values has changed
Serial.print(mode);
Serial.print(" blinkspeed ");
Serial.println(blinkspeed);
if (buttn1 == HIGH){ //Mode is set to the button that is pressed down
(mode = 1);
}else{
if (buttn2 == HIGH){
(mode = 2);
}else{
if (buttn3 == HIGH){
(mode = 3);
}else{
if (buttn4 == HIGH){
(mode = 4);
}else{
(mode = 0); //Mode 0 is added to know that no buttons are pressed
}
}
}
}
switch(mode){
case 0:
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
break;
case 1:
digitalWrite(2, HIGH);//animation one (is there a way to animate without taking up so much space?)
delay(blinkspeed);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
delay(blinkspeed);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
delay(blinkspeed);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
delay(blinkspeed);
digitalWrite(5,LOW);
case 2://animations not made yet
break;
case 3:
break;
case 4:
if (buttn4 == HIGH){//changing speed
(blinkspeed = blinkspeed + 40);
delay(1000);
if (blinkspeed == 240){//when limit reached, speed set lo least
(blinkspeed = 40);
delay(1000);
//code problem here
if (blinkspeed == 40){ //LEDs light up in order to show animation-speed
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
`1. * Listobjekt`
}else{//
if (blinkspeed == 80){//
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}else{//
if (blinkspeed == 120){//
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}else{//
if (blinkspeed == 160){//
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
}else{
if (blinkspeed == 200){//
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
break;
}
}
}
}
}
}
}
}
}