Código:
int tempo[50] = {};
int tubos[50] = {};
int par = 0;
String apagar = "";
int outro_apagar;
int ii = 0;
String msg = "";
void setup()
{
pinMode(31, OUTPUT);
pinMode(33, OUTPUT);
pinMode(35, OUTPUT);
pinMode(37, OUTPUT);
pinMode(39, OUTPUT);
pinMode(41, OUTPUT);
pinMode(43, OUTPUT);
pinMode(45, OUTPUT);
pinMode(47, OUTPUT);
digitalWrite(31, HIGH);
digitalWrite(33, HIGH);
digitalWrite(35, HIGH);
digitalWrite(37, HIGH);
digitalWrite(39, HIGH);
digitalWrite(41, HIGH);
digitalWrite(43, HIGH);
digitalWrite(45, HIGH);
digitalWrite(47, HIGH);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
Serial.begin(9600);
}
String leStringSerial()
{
String conteudo = "";
char caractere;
while(Serial.available() > 0)
{
caractere = Serial.read();
if (caractere != '*')
{
conteudo.concat(caractere);
}
}
return conteudo;
}
void loop()
{
if (Serial.available() > 0)
{
String recebido = leStringSerial();
ii=0; msg = "";
Serial.println(recebido);
for (int i = 0; i < recebido.length(); i++)
{
if (recebido == ',')
-
{*
-
if (par == 0)*
-
{*
-
tubos[ii] = msg.toInt();*
-
par = 1;*
-
}else*
-
{*
-
tempo[ii] = msg.toInt(); *
-
ii++;*
-
par = 0;*
-
}*
-
msg = "";*
-
}else*
-
{*
_ msg = msg+recebido*;*_
* }*
//30,10,33,50,35,50,37,50,39,50,41,50,43,50,45,50,47,50,49,30*
* }*
* tempo[ii] = msg.toInt();*
* ii++; par = 0;*
* for (int i=0; i < ii; i++)*
* {*
_ if (tubos > 30 )
* {_
int temponovo = tempo _ 10; //multiplica o tempo em 10_
* Serial.print("Tubo: ");*
_ Serial.println(tubos*);
digitalWrite(tubos, LOW);
delay(temponovo);
digitalWrite(tubos, HIGH);
}*_
if ( (tubos > 4 ) and (tubos < 10) )
* {*
_ switch (tubos*)
{
case 2:
while (digitalRead(3) == HIGH)
digitalWrite(2, LOW);
break;
case 4:
while (digitalRead(5) == LOW)
digitalWrite(4, LOW);
break;
case 6:
while (digitalRead(7) == HIGH)
digitalWrite(6, LOW);
break;
}
digitalWrite(tubos, HIGH); // quando chegar em qualquer fim de curso parar*_
* }*
* }*
* for( int i = 0; i < 50; i++ )*
* {*
_ tubos = 0;
tempo = 0;
* }
recebido = "";*_
* }*
* delay(50);*
}
Enviado:
30,10,33,50,35,50,37,50,39,50,41,50,43,50,45,50,47,50,49,30*
Resultado esperado:
30,10,33,50,35,50,37,50,39,50,41,50,43,50,45,
Tubo: 33
Tubo: 35
Tubo: 37
Tubo: 39
Tubo: 41
Tubo: 43
Tubo: 45
Tubo: 47
Tubo: 49
Resultado obtido (algumas vezes)
30,10,33,50,35,50,37,50,39,50,41,50,43,50,45,
Tubo: 33
Tubo: 35
Tubo: 37
Tubo: 39
Tubo: 41
Tubo: 43
Tubo: 45
50,47,50,49,30
Tubo: 50
Tubo: 50