Boa tarde amigos!!!!
Pra variar, tenho dúvidas (rs).
Estou tentando rascunhar uma lógica que eu tente ligar um gerador 5 vezes, caso o mesmo não parta me retorna um alarme de falha.
Não sei qual comando eu usaria, visto que, estaria colocando essa lógica em um case (switch), que vcs já me ensinaram em outro tópico.
Aproveitando, fiz um padrão para testar meus programas no Arduino (Proteus 8).
Assim fica mais fácil simular (Abram o arquivo Simulador Arduino)
Muito Obrigado a todos
Leonardo Egidio
Tags:
Leonardo, boa tarde.
Ao tentar baixar o Simulador Arduino. rar, deu erro.
Rui
vou ver o que aconteceu no arquivo e posto de novo. Este arquivo não está com a programação que preciso fazer, é só um padrão para teste Arduino genérico
Abraços
Link do arquivo citado:
Leonardo, bom dia.
O programa dque voce vai usar no gerador é o "Programa Padrao.ino?
Rui
não, na verdade este programa padrão.ino é somente pra testar o arquivo feito no Proteus.
Pra ficar mais claro (eu baguncei o fórum!!!!)
1º minha dúvida:
Estou tentando rascunhar uma lógica que eu tente ligar um gerador 5 vezes, caso o mesmo não parta me retorna um alarme de falha.
Não sei qual comando eu usaria, visto que, estaria colocando essa lógica em um case (switch), que vcs já me ensinaram em outro tópico.
2º Aproveitei e deixei um simulador padrão no proteus para nós que somos padrão "dente de leite" em arduino e não temos protoboard.
Ou seja são coisas distintas, por causa destas dúvidas estarei melhorando o arquivo do proteus e colocando em outra discussão para assim não gerar mais dúvidas.
Peço desculpas pela bagunça que causei Rui
Abraços
Leonardo, eu não uso o Proteus,
Como não sei qual saída que liga o gerador e qual "input" verifica se ele partiu
eu considerei : LED7 é o gerador e leitura0 e o input que verifica se ele partiu.
aí ficou assim:
int CH0 = 0;
int CH1 = 1;
int CH2 = 2;
int CH3 = 3;
int CH4 = 4;
int CH5 = 5;
int CH6 = 6;
int LED7 = 7;
int LED8 = 8;
int LED9 = 9;
int LED10 = 10;
int LED11 = 11;
int LED12 = 12;
int LED13 = 13;
unsigned int falhou = 0; // Variavél indicar que não partiu.
void setup()
{
// Serial.begin(9600); // Para debug
pinMode(CH0, INPUT);
pinMode(CH1, INPUT);
pinMode(CH2, INPUT);
pinMode(CH3, INPUT);
pinMode(CH4, INPUT);
pinMode(CH5, INPUT);
pinMode(CH6, INPUT);
pinMode(LED7, OUTPUT);
pinMode(LED8, OUTPUT);
pinMode(LED9, OUTPUT);
pinMode(LED10, OUTPUT);
pinMode(LED11, OUTPUT);
pinMode(LED12, OUTPUT);
pinMode(LED13, OUTPUT);
}
void loop()
{
int leitura0 = digitalRead(CH0); // 0 não ligou, 1 ligou.
int leitura1 = digitalRead(CH1);
int leitura2 = digitalRead(CH2);
int leitura3 = digitalRead(CH3);
int leitura4 = digitalRead(CH4);
int leitura5 = digitalRead(CH5);
int leitura6 = digitalRead(CH6);
// leitura0 = 1; // Para debug
Serial.println(leitura0);
while(leitura0) // Enquanto não ligou, 1 ligou 0 não ligou
{
if (falhou >= 5) break; // se falhou 5 vezes não tenta mais, sai do while
// Serial.println(falhou); // Para debug
// delay(200); // Para debug
if (leitura0 == HIGH)
{
digitalWrite(LED7, HIGH);
delay(50);
digitalWrite(LED7, LOW);
delay(50);
}
else
{
digitalWrite(LED7, LOW);
}
if (leitura1 == HIGH)
{
digitalWrite(LED8, HIGH);
}
else
{
digitalWrite(LED8, LOW);
}
if (leitura2 == HIGH)
{
digitalWrite(LED9, HIGH);
}
else
{
digitalWrite(LED9, LOW);
}
if (leitura3 == HIGH)
{
digitalWrite(LED10, HIGH);
}
else
{
digitalWrite(LED10, LOW);
}
if (leitura4 == HIGH)
{
digitalWrite(LED11, HIGH);
}
else
{
digitalWrite(LED11, LOW);
}
if (leitura5 == HIGH)
{
digitalWrite(LED12, HIGH);
}
else
{
digitalWrite(LED12, LOW);
}
if (leitura6 == HIGH)
{
digitalWrite(LED13, HIGH);
}
else
{
digitalWrite(LED13, LOW);
}
falhou++; // Se falhou incrementa contador de falhas
}
if (falhou < 5) falhou = 0; // Se partiu em menos que 5 tentavias zera o contador.
}
Rui bom dia, dei uma enxugada no código mas ainda não está funcionando, segue
int CH0 = 0;//ponto que confirma que o gerador partiu
int CH1 = 1;//ponto que dará as cinco tentativas na partida, caso não consiga, aciona LED8 (falha na partida)
int LED7 = 7;//gerador rodando
int LED8 = 8;//Led falha na partida do gerador
unsigned int falhou = 0; // Variavél indicar que não partiu.
void setup()
{
// Serial.begin(9600); // Para debug
pinMode(CH0, INPUT);
pinMode(CH1, OUTPUT);
pinMode(LED7, OUTPUT);
pinMode(LED8, OUTPUT);
}
void loop()
{
int leitura0 = digitalRead(CH0); // 0 não ligou, 1 ligou.
// leitura0 = 1; // Para debug
Serial.println(leitura0);
while(leitura0) // Enquanto não ligou, 1 ligou 0 não ligou
{
if (falhou >= 5) break; // se falhou 5 vezes não tenta mais, sai do while
// Serial.println(falhou); // Para debug
// delay(200); // Para debug
}
if (leitura0 == LOW && CH1== HIGH)//tentando as 5 patidas e não teve confirmação do gerador rodando
{
falhou++; // Se falhou incrementa contador de falhas
}
if (falhou < 5) falhou = 0; // Se partiu em menos que 5 tentavias zera o contador.
}
Leonardo, bom dia.
Pelo que entendi, esta linha : pinMode(CH1, OUTPUT);, deveria ser pinMode(CH1, INPUT); ok?
e deveria ter uma xxxx = = digitalRead(CH1); .
Rui
tem razão....
Fiz uma retificação mas ainda não funciona:
int CH0 = 0;//ponto que confirma que o gerador partiu
int CH1 = 1;//ponto que dará as cinco tentativas na partida, caso não consiga, aciona LED8 (falha na partida)
int LED7 = 7;//gerador rodando
int LED8 = 8;//Led falha na partida do gerador
unsigned int falhou = 0; // Variavél indicar que não partiu.
void setup()
{
// Serial.begin(9600); // Para debug
pinMode(CH0, INPUT);
pinMode(CH1, INPUT);
pinMode(LED7, OUTPUT);
pinMode(LED8, OUTPUT);
}
void loop()
{
int leitura0 = digitalRead(CH0); // 0 não ligou, 1 ligou.
// leitura0 = 1; // Para debug
int leitura1 = digitalRead(CH1);
Serial.println(leitura0);
while(leitura0) // Enquanto não ligou, 1 ligou 0 não ligou
{
if (falhou >= 5) break; // se falhou 5 vezes não tenta mais, sai do while
// Serial.println(falhou); // Para debug
// delay(200); // Para debug
}
if (leitura0 == LOW && leitura1== HIGH)//tentando as 5 patidas e não teve confirmação do gerador rodando
{
falhou++; // Se falhou incrementa contador de falhas
}
if (falhou < 5) falhou = 0; // Se partiu em menos que 5 tentavias zera o contador.
}
Oi Leonardo,
Nas ultimas duas versões suas, voce incluiu uma definição nova:
int CH1 = 1;//ponto que dará as cinco tentativas na partida, caso não consiga, aciona LED8 (falha na partida).
Eu recomendei que, como era externa deveria ser definida com "INPUT".
Mas o que não entendi foi, o que é isto. E' um switch no gerador que liga na 5a. falha da partida?
No código que escrevi, eu já previ esta posibilidade ao incrementar a variavel "falhou", que qdo atinge o valor = 5, impede nova tentativa de partir o gerador.
Segue o codigo simplificado da forma que escrevi.
Rui
int CH0 = 0;
int LED7 = 7;
unsigned int falhou = 0; // Variavél indicar que não partiu.
void setup()
{
// Serial.begin(9600); // Para debug
pinMode(CH0, INPUT);
pinMode(LED7, OUTPUT);
}
void loop()
{
int leitura0 = digitalRead(CH0); // 0 não ligou, 1 ligou.
// leitura0 = 1; // Para debug
// Serial.println(leitura0);
while(leitura0) // Enquanto não ligou, 1 ligou 0 não ligou
{
if (falhou >= 5) break; // se falhou 5 vezes não tenta mais, sai do while
// Serial.println(falhou); // Para debug
delay(200); // Para debug
if (leitura0 == HIGH)
{
digitalWrite(LED7, HIGH);
delay(50);
digitalWrite(LED7, LOW);
delay(50);
}
else
{
digitalWrite(LED7, LOW);
}
falhou++; // Se falhou incrementa contador de falhas
}
if (falhou < 5) falhou = 0; // Se partiu em menos que 5 tentavias zera o contador.
}
Rui
O que está faltanto (testando a lógica com o Proteus), é que a confirmação que o gerador "ligou" vem de um contato auxiliar do gerador, senão não tem como a lógica saber se ele ligou ou não....
Por isso tenho uma entrada para fazer as 5 tentativas (CH1) e outra para me confirmar que o gerador ligou (CH0), a partir da confirmação que o gerador ligou não importa mais a contagem. Porém, caso eu desligue o circuito tenho novamente 5 tentativas para que o gerador permaneça ligado, e por ai vai...
testando no Proteus a sua lógica após fechar a CH0 a saida LED pisca 5 vezes e depois para por ai,
Abraços e muito obrigado
Oi Leonardo,
agora entendi sua necessidade.
Vou rever o código.
Rui
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por