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

Exibições: 6184

As respostas para este tópico estão encerradas.

Respostas a este tópico

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, 

Com interruptor simples não dá, vc vai ter que usar um interruptor three way e um relé pra isso.
da uma olhada nessa imagem:
http://www.google.com.br/imgres?um=1&safe=off&sa=N&biw=...
Vc troca um dos interruptores por um relé e comanda do jeito que achar melhor.

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!!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço