E aí galera blza?
Estou fazendo um projetinho aqui para minha casa, mas me deparei com o seguinte problema que esta me dando um nó na cabeça.
Já testei alguns códigos mas esta complicado.
2 Botões Controlando apenas 1 LED.
Exemplo:
Posso ligar o led com o botão 1 e desligar com o botão 2 e vice-versa.
Meu problema esta no código para fazer esse controle.
Alguem já passou por isso?
Agradeço desde já a ajuda!
Abraços
Tags:
As respostas para este tópico estão encerradas.
Só esclarecendo melhor...
Um botão é um interruptor normal de luz. On/Off.
E o outro botão é um comando via serial. 1 = Ligado, 0 = Desligado.
Já tentei fazer uma tabela verdade, mas ta difícil!
Realmente se algum souber algo agradeço muito.
Abraços
Não sei se é a melhor opção, mas você pode tentar colocar uma variável para controlar o led. Uma variável do tipo bool por exemplo, o código seria mais ou menos assim:
#define pinLED 13
#define BOT1 12
#define BOT2 11
bool LED = false;
void setup(){
pinMode(pinLED,OUTPUT);
pinMode(BOT1,INPUT);
pinMode(BOT2,INPUT);
}
void loop(){
if((digitalRead(BOT1) == HIGH)||(digitalRead(BOT2) == HIGH)){
LED = !LED;
}
if (LED){
digitalWrite(pinLED,HIGH);
}
else{
digitalWrite(pinLED,LOW);
}
}
Não testei, mas creio que deve funcionar :)
Agradeço a ajuda Oscar, mas o detalhe de um interruptor normal (e não push button) é que:
Mesmo ele estando em High e eu mandar um comando 0 via serial gostaria que a lampada desligue.
E vice e versa, mesmo ele estando em Low e eu mandar um comando 1 via serial gostaria que a lampada ligue.
To quebrando a cabeça aqui, se tiver alguma ideia lhe agradeço.
Abraços
ixi, esse interruptor simples acho que vai complicar heim.
Pois eh cara, e o pior que com pushbutton fica bem instavel o liga e desliga...
com o interruptor simples, vc tem que conseguir uma forma de guardar o estado anterior dele, se o estado anterior for diferente da atual, então vc liga ou desliga o LED. Vou tentar bolar um código aqui,
Olá Yure tudo bem?
Agradeço a ajuda desde já.
Porem, o meu interruptor normal não esta acionando diretamente a lampada, ele esta numa porta INPUT do arduino com um PullUP... Ou seja, pelo interruptor eu mando um HIGH pra porta INPUT do arduino e no código eu trato esse pedido.
Se porta 2 (do interruptor) for igual a high ativa o rele na porta 4 (por exemplo), se não, não aciona o relé.
O que estou ficando sem cabelos é para usar um segundo controle para a mesma função, via porta serial.
Abraços
Qual o motivo pra monitorar esse interruptor?
Tiago, talvez assim resolva seu problema;
#define pinLED 13
#define INTERRUPTOR 12
#define BOT2 11
bool LED = false;
bool estAnterior,estAtual,estAlterado;
void setup(){
pinMode(pinLED,OUTPUT);
pinMode(INTERRUPTOR,INPUT);
pinMode(BOT2,INPUT);
estAnterior = digitalRead(INTERRUPTOR);
estAtual = digitalRead(INTERRUPTOR);
estAlterado = false;
}
void loop(){
estAtual = digitalRead(INTERRUPTOR);
if (estAtual != estAnterior){
estAlterado = true;
estAnterior =estAtual;
}
if(estAlterado){
LED = !LED;
estAlterado = false;
}
if (digitalRead(BOT2) == HIGH){
LED = !LED;
}
if (LED){
digitalWrite(pinLED,HIGH);
}
else{
digitalWrite(pinLED,LOW);
}
}
Oscar, como posso lhe agradecer?
Putz cara, deu certinho... só alterei os nomes para as variaveis que eu já tinha e a lógica que tu postou acima fechou certo.
Valeu mesmo!
Abraços
Que isso cara, precisa agradecer não, bom demais poder ajudar! Melhor agradecimento é saber que deu certo!! kkkk
Abraço!!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por