Hello everyone. I am new here. Also, I am self taught up to this point. I have run into a problem I cannot solve. I can't seem to find and answer here, so I'm hoping someone can help.
My sketch blinks a lot of LED and a runs couple servos correctly. However, after this completes, I am trying to make it run through one action, then next time through the entire program it should choose the second action and so on. Now its either runs #1 twice, then skips it twice. I hope some here can help me figure out what I'm doing wrong. Actions are below the dotted line with comments "Lid and Finger
// Steambox Sketch
#include<Servo.h>
int count = 0;
int behavior = 1;
int Y = 0;
int W = 0;
Servo ServoGear;
Servo ServoLock;
Servo ServoLid;
Servo ServoFinger;
int pos = 0;
const int LED_Y = 9;
const int RGB_R = A2;
const int RGB_G = A3;
const int RGB_B = 8;
const int LED_W = 7; //used as digital pins
const int LED_E = A4;
int LED_B1 = 3; //PWM for fading LEDS
int LED_B2 = 5;
int LED_B3 = 6;
int LED_B4 = 11;
const int LED_A4; //Emerald LED used as digital pins
const int Button = 2; //button pin
int LEDS = 0;
int buttonState = 0;
void setup() {
ServoGear.attach(4);
ServoLock.attach(12);
ServoLid.attach(13);
ServoFinger.attach(10);
ServoGear.write(0);
ServoLock.write(90); //start at 35 degrees
ServoLid.write(0);
ServoFinger.write(0);
pinMode(LED_Y, OUTPUT);
pinMode(RGB_R, OUTPUT);
pinMode(RGB_B, OUTPUT);
pinMode(RGB_G, OUTPUT);
pinMode(LED_W, OUTPUT);
pinMode(LED_B1, OUTPUT);
pinMode(LED_B2, OUTPUT);
pinMode(LED_B3, OUTPUT);
pinMode(LED_B4, OUTPUT);
pinMode(LED_E, OUTPUT);
pinMode(Button, INPUT);
}
void loop() {
if (digitalRead(Button) == HIGH) { //is the switch up
//___________ Yellow HIGH LED blink______________________________________
for (int y = 0; y <= 3; y++) { //Yellow blink quickly twice
digitalWrite (LED_Y, HIGH);
delay(100);
digitalWrite (LED_Y, LOW);
delay(100);
}
digitalWrite(LED_Y, HIGH); //stay high for 1.5 seconds
delay(1500);
digitalWrite(LED_Y, LOW);
delay (500);
//-------------White Blink ON------------------------------
for (int w = 0; w <= 3; w++) { //Whte blink quickly twice
digitalWrite (LED_W, HIGH);
delay(50);
digitalWrite (LED_W, LOW);
delay(100);
}
digitalWrite(LED_W, HIGH); // stay on 1.5 seconds
delay(1500);
digitalWrite(LED_W, LOW);
//_----------------RBG Tube----------------------------------
digitalWrite(RGB_R, HIGH); //RGB in tube Cycle through red, blue, green
delay(1000);
digitalWrite(RGB_R, LOW);
digitalWrite(RGB_G, HIGH);
delay(1000);
digitalWrite(RGB_G, LOW);
digitalWrite(RGB_B, HIGH);
delay(1000);
digitalWrite(RGB_B, LOW);
//-----------Blue 1 to 2 fading Leds before dragon eye ---------------------
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) { //1 fade in
analogWrite(LED_B1, fadeValue); //fading up to 255
delay(25);
}
for (int fadeValue = 255 ; fadeValue >= 5; fadeValue -= 3) { //1 fade out
analogWrite(LED_B1, fadeValue);
delay(25);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) { //2 fade in
analogWrite(LED_B2, fadeValue); //fading up to 255
delay(25);
}
for (int fadeValue = 255 ; fadeValue >= 5; fadeValue -= 3) { //2 fade out
analogWrite(LED_B2, fadeValue);
delay(25);
}
analogWrite(LED_B1, LOW); //B1 and b2 turn completely off
analogWrite(LED_B2, LOW);
//----------------Emerald------------------------
digitalWrite(LED_E, HIGH); //green on 4 seconds
delay( 4000);
digitalWrite(LED_E, LOW);
//------------------3 to 4-------------------------
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) { //3 fade in
analogWrite(LED_B3, fadeValue); //fading up to 255
delay(15);
}
for (int fadeValue = 255 ; fadeValue >= 5; fadeValue -= 3) { //3 fade oiu
analogWrite(LED_B3, fadeValue);
delay(15);
}
for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) { //4 fade in
analogWrite(LED_B4, fadeValue); //fading up to 255
delay(15);
}
for (int fadeValue = 255 ; fadeValue >= 5; fadeValue -= 3) { //3 fade out
analogWrite(LED_B4, fadeValue);
delay(15);
analogWrite(LED_B3, LOW); //turn 3 and 4 off
analogWrite(LED_B4, LOW);
}
//Servo gears move-----------------------------------------
for (pos = 0; pos <= 180; pos += 1) {
ServoGear.write(pos);
delay(15);
}
for (pos = 180; pos >= 0; pos -= 1) {
ServoGear.write(pos);
delay(15);
}
for (pos = 0; pos <= 180; pos += 1) {
ServoGear.write(pos);
delay(15);
}
for (pos = 180; pos >= 0; pos -= 1) {
ServoGear.write(pos);
delay(15);
}
//--------------Servolock moves 90 degrees and back
for (pos = 90; pos >= 0; pos -= 1) {
ServoLock.write(pos);
delay(30);
}
for (pos = 0; pos <= 90; pos += 1) {
ServoLock.write(pos);
delay(30);
}
//------------Lid and Finger behaviors-------------
//---------------------------------------------------------------------------------------------------------------------------
}
if(analogRead(LED_B4) == LOW); {
if (behavior == 1) {
for (pos = 0; pos <= 55; pos += 1) {
ServoLid.write(pos);
delay(40);
}
for (pos = 0; pos <= 178; pos += 1) {
ServoFinger.write(pos);
delay(25);
}
for (pos = 178; pos >= 0; pos -= 1) {
ServoFinger.write(pos);
delay(25);
}
for (pos = 55; pos >= 0; pos -= 1) {
ServoLid.write(pos);
delay(40);
}
behavior++;
}
else if (behavior == 2) { // tap finger
for (pos = 0; pos <= 55; pos += 1) {
ServoLid.write(pos);
delay(30);
}
for (pos = 0; pos <= 170; pos += 1) {
ServoFinger.write(pos);
delay(25);
}
ServoFinger.write(155);
ServoFinger.write(168);
ServoFinger.write(155);
ServoFinger.write(168);
ServoFinger.write(155);
ServoFinger.write(168);
for (pos = 180; pos >= 0; pos -= 1) {
ServoFinger.write(pos);
delay(25);
}
for (pos = 55; pos >= 0; pos -= 1) {
ServoLid.write(pos);
delay(40);
behavior++;
}
}
else if (behavior == 3) { // open and close fast
ServoLid.write(55);
ServoFinger.write(178);
ServoFinger.write(0);
ServoLid.write(0);
behavior = 1;
}
}
}