Olá Maurizio,
Existem muitas formas de fazer o mesmo, até mesmo sem os dalays usando arrays, etc. Mas não sei o quanto você sabe de programação.
Você tem um relê para cada tubo ou é o mesmo relê?
Mantendo o teu código, você pode adicionar uma variável global para definir o início do processo, após pressionamento do botão.
Depois de apertado o botão o processo inicia (mancando a variável como true) e quando termina marcamos a variável como false.
então, abaixo o teu código alterado com a idéia acima, lembrando que não cmpilei para saber se funciona mesmo ^^
int pin = 13;
Rodando int state = LOW;
void setup() {
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(13, OUTPUT);
pinMode(pin, OUTPUT);
attachInterrupt(0, IniciaProcesso, CHANGE); //Liga o push button na porta digital 0 para chamar esse interrupt
}
void Start()
{
Rodando = HIGH
}
void loop() {
if(Rodando) //Se o botão foi pressionado
{
delay(100);
digitalWrite(10, HIGH); // 12
delay(4000);
digitalWrite(13, HIGH); // 12
delay(20); //
digitalWrite(13, LOW); //
delay(500);
digitalWrite(13, HIGH); // 1
delay(20);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH); // 2
delay(20);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH); // 3
delay(20);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH); // 4
delay(20);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH); // 5
delay(20);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH); // 6
delay(20);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH); // 7
delay(20); //
digitalWrite(13, LOW); //
delay(500);
digitalWrite(13, HIGH); // 8
delay(20); //
digitalWrite(13, LOW); //
delay(500);
digitalWrite(13, HIGH); // 9
delay(20); //
digitalWrite(13, LOW); //
delay(500);
digitalWrite(13, HIGH); // 10
delay(20); //
digitalWrite(13, LOW); //
delay(500);
digitalWrite(13, HIGH); // 11
delay(20); //
digitalWrite(13, LOW); //
delay(500);
digitalWrite(13, HIGH); // 12
delay(20); //
digitalWrite(13, LOW); //
delay(500);
digitalWrite(13, HIGH); // 13
delay(20); //
digitalWrite(13, LOW); //
delay(500);
digitalWrite(13, HIGH); // 14
delay(20); //
digitalWrite(13, LOW); //
delay(500);
digitalWrite(13, HIGH); // 15
delay(20); //
digitalWrite(13, LOW); //
delay(500);
digitalWrite(13, HIGH); // 16
delay(10); //
digitalWrite(13, LOW); //
delay(10);
digitalWrite(9, HIGH); // 17
delay(2000); //
digitalWrite(9, LOW); //
delay(100);
digitalWrite(13, HIGH); // 18
delay(10); //
digitalWrite(13, LOW); //
delay(1000);
digitalWrite(10, LOW);
delay(2500);
//no final marcamos Rodando como LOW
Rodando = LOW;
}
}
Lembrando que o uso de delays não é nada indicado, o ideal seria usar o método millis. Mas agora preciso sair e a noite volto para ver se a fase um esta ok e se der te dou um exemplo de intervalo usando o millis para substituir o delay
Até