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

Exibições: 719

Anexos

Responder esta

Respostas a este tópico

Leonardo, boa tarde.

Ao tentar baixar o Simulador Arduino. rar, deu erro.

Access Denied

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:

Simulador Arduino Proteus 8

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

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço