I have a project where I need to state from leds turning on and off to another one that will have all the leds turned on and send data and I was wondering how should I do that, this the code I have:
#include <CapacitiveSensor.h>
CapacitiveSensor cs_11_10 = CapacitiveSensor(11,10);
int state_s1 = 0;
int state_s2 = 0;
int state_s3 = 0;
int state_s4 = 0;
int state_prev_s1 =0;
int pin_s1 = 12;
int val_s1 = 0;
const unsigned int ledPins[]={2,3,4,5,6,7,8,9};
const unsigned int lenledPins=9;
unsigned long t_s1 = 0;
unsigned long t_0_s1 = 0;
unsigned long t_s3 = 0;
unsigned long t_0_s3 = 0;
unsigned long t_0_s4 = 0;
unsigned long t_s4 = 0;
unsigned long t_s2_4 = 0;
unsigned long tiempo = 250;
unsigned long bounce_delay_s1 = 5;
long total = 0;
void setup()
{
pinMode(pin_s1, INPUT_PULLUP);
Serial.begin(9600);
for(int i=0; i<(9); i++)
{
pinMode(ledPins[i], OUTPUT);
}
cs_11_10.set_CS_AutocaL_Millis(0xFFFFFFFF);
Serial.begin(9600);
}
void loop()
{
MBoton(); //MAQUINA DE ESTADO
MaquinaGeneral();
if(state_s2 == 1)
{
led();
}
if(state_s1 != state_prev_s1)
{
Serial.print("state =");
Serial.println(state_s3);
}
if(state_s4 == 6)
{
for(int i=0; i<lenledPins; i++)
{
digitalWrite(ledPins[i],HIGH);
}
}
Serial.print("");
}
void MaquinaGeneral()
{
switch(state_s2)
{
case 0:
if(state_s1 == 4)
{
state_s2 = 1;
}
break;
case 1:
break;
}
}
void MBoton()
{
state_prev_s1 = state_s1;
switch(state_s1)
{
case 0: //RESET
state_s1 = 1;
break;
case 1: //START
val_s1 = digitalRead(pin_s1);
if(val_s1 == LOW)
{
state_s1 = 2;
}
break;
case 2: // GO!
t_0_s1 = millis();
state_s1 = 3;
break;
case 3: //WAIT
t_s1 = millis();
if(t_s1 - t_0_s1 >= bounce_delay_s1)
{
state_s1 = 5;
}
break;
case 5: //ARMED
val_s1 = digitalRead(pin_s1);
if(val_s1 == HIGH)
{
state_s1 = 4;
}
break;
case 4: //TRIGGERED
state_s1 = 0;
break;
}
}
void led()
{
switch(state_s3)
{
case 0: //OFF
for(int i=0; i<lenledPins; i=i+2)
{
digitalWrite(ledPins[i],LOW);
}
for(int i=1; i<lenledPins; i=i+2)
{
digitalWrite(ledPins[i],HIGH);
}
t_0_s3 = millis();
state_s3 = 1;
break;
case 1: //WAIT
t_s3 = millis();
if(t_s3 - t_0_s3 >= tiempo)
{
state_s3 = 2;
}
break;
case 2: // ON
for(int i=0; i<lenledPins; i=i+2)
{
digitalWrite(ledPins[i],HIGH);
}
for(int i=1; i<lenledPins; i=i+2)
{
digitalWrite(ledPins[i],LOW);
}
t_0_s3 = millis();
state_s3 = 3;
break;
case 3: //WAIT
t_s3 = millis();
if(t_s3 - t_0_s3 >= tiempo)
{
state_s3 = 0;
}
break;
}
}
void Capacitor()
{
switch(state_s4)
{
case 0: //RESET
state_s4 = 1;
break;
case 1: //START
total = cs_11_10.capacitiveSensor(10);
if(total >= 1000)
{
state_s4 = 2;
}
break;
case 2: // GO!
t_0_s4 = millis();
state_s4 = 3;
break;
case 3: //WAIT
total = cs_11_10.capacitiveSensor(10);
if(total < 1000)
{
state_s4 = 0;
}
t_s4 = millis();
if(t_s4 - t_0_s4 >= 2000)
{
state_s4 = 5;
}
break;
case 5: //ARMED & WAIT
t_s2_4 = millis();
total = cs_11_10.capacitiveSensor(10);
if(total < 1000)
{
state_s4 = 4;
}
if(t_s2_4-t_s4 >= 1000)
{
state_s4= 6;
}
break;
case 4: //TRIGGERED
state_s4 = 0;
break;
case 6: // ARMED 2
Serial.println("Entro al estado 6");
total = cs_11_10.capacitiveSensor(10);
break;
}
}