Boa noite a todos, fazem muitos anos que não mexo em arduino e hj veio uma duvida e me enrolei, digamos estou usando 3 botões, 9..10...11 e 3 leds na saída 2..3..4 qual a minha ideia ? eu vou acionar o led da saída 2 com o botão 9 e ele vai ter que ficar acesso por 10 minutos, enquanto isso eu vou usar os led 3 e 4 para entrada e saída, porem quando led da porta 2 acende, nenhum outro comando funciona, alguém me ajuda? vou postar o código

void setup()
{
// VARIAVEL NOME PIMEIRO LED
pinMode(2, OUTPUT);// pino relacionado aporta de saida que escolhi a porta numero 2
pinMode(9, INPUT);// pino relacionado ao botão porta de entrada escolhi a porta numero 9
digitalWrite(9, 1);
// bit 1 acionar bit 0 repouso ,
// VARIAVEL NOME SEGUNDO LED
pinMode(4, OUTPUT);// porta de saida
pinMode(10, INPUT);//
digitalWrite(10, 1);// bit 1 acionar bit 0 repouso ,
// VARIAVEL NOME TERCEIRO LED
pinMode(3, OUTPUT);//
pinMode(11, INPUT);//
digitalWrite(11, 1);// bit 1 acionar bit 0 repouso ,

}


void loop() {
// CONFIGURAÇÃO DE “ACEITO DO PRIMEIRO LED”
int leitura = digitalRead(10); //porta acionada
if(leitura == 0){// se a operação ocorrer certo acione os seguintes pinos
digitalWrite(4, 1); //pino 4 habilita por n segundos
digitalWrite(4, 0); //pino 4 habilita por n segundos

}
// CONFIGURAÇÃO DE “ACEITO DO SEGUNDO LED”
int leitura1 = digitalRead(9); //porta acionada
if(leitura1 == 0){// se a operação ocorrer certo acione os sequintes pinos
digitalWrite(2, 1); //pino 2 habilita por n segundos
delay(5000);
digitalWrite(2, 0); //pino 2 habilita por n segundos

}
// CONFIGURAÇÃO DE “ACEITO DO TERCEIRO LED”
int leitura2 = digitalRead(11);
if(leitura2 == 0){// se a operação ocorrer certo acione os sequintes pinos
digitalWrite(3, 1); //pino 3 habilita por n segundos
digitalWrite(3, 0); //pino 3 habilita por n segundos

}
}

Exibições: 198

Responder esta

Respostas a este tópico

Olá, Leonardo!

   Tenho certeza que muita gente aqui terá muito prazer em compartilhar contigo a busca para a solução deste problema mas, antes disto, sugiro que reformate o post, seguindo as indicações em LINK >>> Sugestões de como "postar" no LdG por Rui Viana &...

   Isto facilita a vida de todo mundo.

Abração!

D. T. Ribeiro.

Olá,

  Siga as orientações do mestre D. T. Ribeiro , realmente ajuda muito a te ajudar.

  Mas, para adiantar, veja que seu programa tem um comando "delay(5000);". Ele faz exatamente o que vc disse: Ficar parado por 5 segundos.

  Chegou ali, parou !

  Se não é isso que vc pretende no programa, quer que ele continue funcionando para outras coisas e depois de passados 5s algo aconteça o caminho é outro, pense como vc faria:

Cenário exemplo: tem que se arrumar= fazer café (que inclui ferver agua por 5minutos), trocar de roupa e arrumar a mala.

Vc cola no fogão com um cronometro e fica estático aguardando passarem 5 minutos ou vc vai fazer suas coisas e fica de olho no cronometro enquanto faz ???

Nesse raciocínio de fazer e ficar de olho o caminho seria vc, dentro do loop, verificar se já se passaram 5s e caso afirmativo vc faz o que tem que fazer nesse momento.

essa versão é encontrada pela net com o nome "temporizador sem delay()" ou "como usar millis() ao invés de delay()".

Resumindo: esse cronometro é a função millis(), vc precisa usar ela para saber que o tempo se passou sem ficar parado. 

Ref:

https://reference.arduino.cc/reference/pt/language/functions/time/m...

Exemplos:

https://www.google.com/search?q=temporizador+sem+delay+arduino

https://www.google.com/search?q=millis+inv%C3%A9s+delay+arduino

Olá Lenardo.

   Aproveitando a precisa dica do Eduardo e valorizando as pratas da casa, sugiro também a excelente explicação do Tiago Merces: --> LINK (AULA) Função millis() <-- LINK

Abração e sucesso!

D. T. Ribeiro.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço