HELP

Fala galera o programa é o seguinte, são dois sensores, s1 e s4, ambos Normalmente Abertos, quando os dois ativados ele devem zerar o cronometro e assim que o s4 desligar, deve começar a rodar o cronometro, porém com o s1 continuará Ligado, quando s1 desligar ele deve parar o cronometro e analisar o tempo, se abaixo de 10 minutos, ele deve mostrar o tempo e mostrar “INICIAR TESTE”
Se tempo maior que 10 minutos “DEIXAR POR 4 HORAS”.
Sou meio iniciante no arduino, e ao iniciar o programa ele já vai direto ao “HELLO WORD” que coloquei apenas para teste, mesmo com a condição de s4 ligado.
OBS:
O s3 é um sensor normalmente fechado, coloquei ele para tentar ajustar o programa mas mesmo assim não deu boa, tentei com uma variavel cont, e adicionar valores conforme for rodando o programa mas não consegui tambem, se alguém puder ajudar, agradeço!!!

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVO); // endereço I2c do LCD

int cont = 0;
int horas;
int minutos;
int segundos;
int decimas;
milissegundos longos;
int s1 = 9;
int s4 = 6;
int s3 = 11;

void setup () {
Serial.begin (9600);
pinMode (s1, INPUT);
digitalWrite (s1, LOW);
pinMode (s4, INPUT);
digitalWrite (s4, LOW);
pinMode (s3, INPUT);
digitalWrite (s3, HIGH);
lcd.begin (16,2);
lcd.clear ();
lcd.print (“INICIAR”);
atraso (1000);
lcd.clear ();
lcd.setCursor (0, 0);

}
void loop () {

if (digitalRead (s4 == HIGH)) {// se o pino ler nível alto, zera as variáveis
horas = 0;
minutos = 0;
segundos = 0;
decimas = 0;
lcd.print (“HELOO WORD”);
lcd.clear ();

if (digitalRead (s4 == LOW) && (s3 == LOW)) {// inicia-se o cronometro quando s4 é integrado
atraso (200);
lcd.setCursor (0,1);
if (horas <10) {lcd.print (“0”);} // se horas for menor que 10, acrescenta um 0 na frente
lcd.print (horas);
lcd.print (":");
if (minutos <10) {lcd.print (“0”);} // se os minutos principais menor que 10, acrescenta um 0 na frente
lcd.print (minutos);
lcd.print (":");
if (segundos <10) {lcd.print (“0”);} // se os segundos principais menor que 10, acrescenta um 0 na frente
lcd.print (segundos);
lcd.print (":");
lcd.print (decimas);
atraso (200);

milisegundos = milis ();
if (milisegundos% 100 == 0) {// Entrar apenas se tiver passado o décimo de segundo
decimas ++;
if (decimas == 10) {// Quando passou 10 décimos de segundo, conta um segundo
decimas = 0;
segundos ++;
}
if (segundos == 60) {
// Após 60 segundos, conta um minuto
segundos = 0;
minutos ++;
}
if (minutos == 60) {// Depois de 60 minutos, conta uma hora
minutos = 0;
horas ++;
}
// exibição no LCD
lcd.setCursor (0,0);
if (horas <10) {// se as horas principais menor que 10, acrescenta um 0 na frente
lcd.print (“0”);
}
lcd.print (horas);
lcd.print (":");
lcd.setCursor (3,0);
if (minutos <10) {// se os minutos principais menor que 10, acrescenta um 0 na frente
lcd.print (“0”);
}
lcd.print (minutos);
lcd.print (":");
lcd.setCursor (6,0);
if (segundos <10) {// se os segundos principais menor que 10, acrescenta um 0 na frente
lcd.print (“0”);
}
lcd.print (segundos);
lcd.print (":");
lcd.setCursor (9,0);
lcd.print (decimas);
}

}

// DESLIGAR O CRONOMETRO E COMPARAR OS MINUTOS

if ((digitalRead (s1) == LOW) && (s3 == HIGH) && (horas <1) && (minutos <= 9) && (segundos <= 59)) {// SE SENSOR 1 DESLIGAR E TEMPO MENOR QUE 10 MINUTOS EXECUTAR FUNÇÃO ABAIXO

lcd.clear ();
lcd.setCursor (0, 0);
lcd.print (horas);
lcd.print (":");
lcd.print (minutos);
lcd.print (":");
lcd.print (segundos);
lcd.print (":");
lcd.print (decimas);
lcd.setCursor (0, 1); // Posição do cursor na primeira coluna (0) e na segunda linha (1) do LCD
lcd.print (“TESTE INICIAR”);
atraso (5000);
}

if ((digitalRead (s1) == LOW) && (s3 == HIGH) && (minutos> = 10) && (cont == 2)) {// SE SENSOR 1 DESLIGAR E TEMPO MAIOR IGUAL A 10 MINUTOS EXECUTAR FUNÇÃO ABAIXO

lcd.clear ();
lcd.setCursor (0, 0);
lcd.print (horas);
lcd.print (":");
lcd.print (minutos);
lcd.print (":");
lcd.print (segundos);
lcd.print (":");
lcd.print (decimas);
lcd.setCursor (0, 1); // Posição do cursor na primeira coluna (0) e na segunda linha (1) do LCD
lcd.print (“DEIXAR POR 4 HORAS”);
atraso (5000);
}
}
}

jp2101:
Fala galera o programa é o seguinte, são dois sensores, s1 e s4, ambos Normalmente Abertos, quando os dois ativados ele devem zerar o cronometro e assim que o s4 desligar, deve começar a rodar o cronometro, porém com o s1 continuará Ligado, quando s1 desligar ele deve parar o cronometro e analisar o tempo, se abaixo de 10 minutos, ele deve mostrar o tempo e mostrar “INICIAR TESTE”
Se tempo maior que 10 minutos “DEIXAR POR 4 HORAS”.
Sou meio iniciante no arduino, e ao iniciar o programa ele já vai direto ao “HELLO WORD” que coloquei apenas para teste, mesmo com a condição de s4 ligado.
OBS:
O s3 é um sensor normalmente fechado, coloquei ele para tentar ajustar o programa mas mesmo assim não deu boa, tentei com uma variavel cont, e adicionar valores conforme for rodando o programa mas não consegui tambem, se alguém puder ajudar, agradeço!!!

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVO); // endereço I2c do LCD

int cont = 0;
int horas;
int minutos;
int segundos;
int decimas;
milissegundos longos;
int s1 = 9;
int s4 = 6;
int s3 = 11;

void setup () {
Serial.begin (9600);
pinMode (s1, INPUT);
digitalWrite (s1, LOW);
pinMode (s4, INPUT);
digitalWrite (s4, LOW);
pinMode (s3, INPUT);
digitalWrite (s3, HIGH);
lcd.begin (16,2);
lcd.clear ();
lcd.print (“INICIAR”);
atraso (1000);
lcd.clear ();
lcd.setCursor (0, 0);

}
void loop () {

if (digitalRead (s4 == HIGH)) {// se o pino ler nível alto, zera as variáveis
horas = 0;
minutos = 0;
segundos = 0;
decimas = 0;
lcd.print (“HELOO WORD”);
lcd.clear ();

if (digitalRead (s4 == LOW) && (s3 == LOW)) {// inicia-se o cronometro quando s4 é integrado
atraso (200);
lcd.setCursor (0,1);
if (horas <10) {lcd.print (“0”);} // se horas for menor que 10, acrescenta um 0 na frente
lcd.print (horas);
lcd.print (":");
if (minutos <10) {lcd.print (“0”);} // se os minutos principais menor que 10, acrescenta um 0 na frente
lcd.print (minutos);
lcd.print (":");
if (segundos <10) {lcd.print (“0”);} // se os segundos principais menor que 10, acrescenta um 0 na frente
lcd.print (segundos);
lcd.print (":");
lcd.print (decimas);
atraso (200);

milisegundos = milis ();
if (milisegundos% 100 == 0) {// Entrar apenas se tiver passado o décimo de segundo
decimas ++;
if (decimas == 10) {// Quando passou 10 décimos de segundo, conta um segundo
decimas = 0;
segundos ++;
}
if (segundos == 60) {
// Após 60 segundos, conta um minuto
segundos = 0;
minutos ++;
}
if (minutos == 60) {// Depois de 60 minutos, conta uma hora
minutos = 0;
horas ++;
}
// exibição no LCD
lcd.setCursor (0,0);
if (horas <10) {// se as horas principais menor que 10, acrescenta um 0 na frente
lcd.print (“0”);
}
lcd.print (horas);
lcd.print (":");
lcd.setCursor (3,0);
if (minutos <10) {// se os minutos principais menor que 10, acrescenta um 0 na frente
lcd.print (“0”);
}
lcd.print (minutos);
lcd.print (":");
lcd.setCursor (6,0);
if (segundos <10) {// se os segundos principais menor que 10, acrescenta um 0 na frente
lcd.print (“0”);
}
lcd.print (segundos);
lcd.print (":");
lcd.setCursor (9,0);
lcd.print (decimas);
}

}

// DESLIGAR O CRONOMETRO E COMPARAR OS MINUTOS

if ((digitalRead (s1) == LOW) && (s3 == HIGH) && (horas <1) && (minutos <= 9) && (segundos <= 59)) {// SE SENSOR 1 DESLIGAR E TEMPO MENOR QUE 10 MINUTOS EXECUTAR FUNÇÃO ABAIXO

lcd.clear ();
lcd.setCursor (0, 0);
lcd.print (horas);
lcd.print (":");
lcd.print (minutos);
lcd.print (":");
lcd.print (segundos);
lcd.print (":");
lcd.print (decimas);
lcd.setCursor (0, 1); // Posição do cursor na primeira coluna (0) e na segunda linha (1) do LCD
lcd.print (“TESTE INICIAR”);
atraso (5000);
}

if ((digitalRead (s1) == LOW) && (s3 == HIGH) && (minutos> = 10) && (cont == 2)) {// SE SENSOR 1 DESLIGAR E TEMPO MAIOR IGUAL A 10 MINUTOS EXECUTAR FUNÇÃO ABAIXO

lcd.clear ();
lcd.setCursor (0, 0);
lcd.print (horas);
lcd.print (":");
lcd.print (minutos);
lcd.print (":");
lcd.print (segundos);
lcd.print (":");
lcd.print (decimas);
lcd.setCursor (0, 1); // Posição do cursor na primeira coluna (0) e na segunda linha (1) do LCD
lcd.print (“DEIXAR POR 4 HORAS”);
atraso (5000);
}
}
}

Cara, esse código rodou? Estranho.
Enfim.
Dá uma olhada como verifica se o sensor está ativado ou não:

...
if (digitalRead (s4 )== HIGH) {// se o pino ler nível alto, zera as variáveis
....

Por quê você está usando milissegundos longo, se já existe a função millis()???
Mesmo assim o correto seria long milissegundos = 0;

Por quê você está usando milissegundos longo, se já existe a função millis()?????
Mesmo assim o correto seria long milissegundos = 0;

Não sei porquê, mas há vários posts que aparecem com palavras Portuguesas em vez dos comandos em C. Há outro post aqui em que a palavra return foi traduzida para Português mas não o resto do código.

Bom dia, precisava duma ajuda a modificar uma scketch para um display 16x2 alguem que me possa ajudar ?

Posta aí que veremos como poderemos te ajudar, mas se for para fazer o código para você, só me pagar eu faço!