Oi galerinha..... muito bom dia...... estou executando um sistema de automação que me permite acender e apagar a luz do meu quarto usando uma tecla do teclado para ligar e outra para apagar.... ai eu queria que somente uma tecla fizesse a mesma função..... por exemplo letra"A" liga e se for pressionada novamente ela desliga...... alguém pode me ajudar????
Abaixo estou enviando o comando gerado no arduino
int incomingByte = 0; // para os dados de série de entrada
void setup()
{
Serial.begin(9600); // abre porta serial, define a taxa de dados para 9600 bps
pinMode(13,OUTPUT);// Pino 13 do Arduino, Luz do Quarto
pinMode(12,OUTPUT);// Pino 12 do Arduino, Luz da Cozinha
}
void loop()
{
// enviar dados somente quando você receber dados:
if (Serial.available() > 0)
{
// le o byte de entrada:
incomingByte = Serial.read();
// diga o que você tem:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
//Luz do Quarto Pino 13 do Arduino
if (incomingByte==100) //tecla "d" acende
digitalWrite(13,HIGH);
else if (incomingByte==97) //tecla "a" apaga
digitalWrite(13,LOW);
//Luz da Cozinha Pino 12 do Arduino
if (incomingByte==112) // tecla "p" acende
digitalWrite(12,HIGH);
else if (incomingByte==104) //tecla "h" apaga
digitalWrite(12,LOW);
}
Desde já eu agradeço!!!!!
Tags:
tenta colocar uma variável do tipo "boolean". logo quando vc precionar a tecla ela inverto o valor da boolean.
tipo assim
boolean luz=0;//declara ela.
luz = !luz;//inverte o valor dela
tmbm da para inverter diretamente o estado do led
exemplo
digitalWrite(13,!digitalRead(13));
http://blog.vidadesilicio.com.br/arduino/basico/entradas-e-saidas-d...
int incomingByte = 0; // para os dados de série de entrada
void setup()
{
Serial.begin(9600); // abre porta serial, define a taxa de dados para 9600 bps
pinMode(13,OUTPUT);// Pino 13 do Arduino, Luz do Quarto
pinMode(12,OUTPUT);// Pino 12 do Arduino, Luz da Cozinha
digitalWrite(13,LOW);
digitalWrite(12,LOW);
}
void loop(){
// enviar dados somente quando você receber dados:
if (Serial.available() > 0){// le o byte de entrada:
incomingByte = Serial.read();
// diga o que você tem:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
//Luz do Quarto Pino 13 do Arduino
if (incomingByte==100){ //tecla "d" acende
digitalWrite(13,!digitalRead(13));}
if (incomingByte==97) { //tecla "a" apaga
digitalWrite(12,!digitalRead(12));}
}
Brother?? Oque você quer fazer é o comando complemento. Quando um Boolean estiver false ele vai pro true e quando ele estiver no true ele vai pro false. Isto em um só comando.
Exemplo:
Boolean bit = false;
~bit;
if( bit == true )
{
//Lampada acende
} else {
//Lampada apaga
}
O caracter ~(til) dá um complemento na minha variável. Transforma oque estiver em um em zero e vice-versa.
0 1 operand1
---------- 1 0 ~ operand1
int a = 103; // binary: 0000000001100111
int b = ~a; // binary: 1111111110011000 = -104
Veja aqui:
https://www.arduino.cc/en/Reference/BitwiseXorNot
int incomingByte = 0; // para os dados de série de entrada
boolean d=0;
boolean a=0;
void setup()
{
Serial.begin(9600); // abre porta serial, define a taxa de dados para 9600 bps
pinMode(13,OUTPUT);// Pino 13 do Arduino, Luz do Quarto
pinMode(12,OUTPUT);// Pino 12 do Arduino, Luz da Cozinha
}
void loop(){
// enviar dados somente quando você receber dados:
if (Serial.available() > 0){// le o byte de entrada:
incomingByte = Serial.read();
// diga o que você tem:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
//Luz do Quarto Pino 13 do Arduino
if (incomingByte==100){
delay(20);//tecla "d" acende
d=!d;
}
if (incomingByte==97) { //tecla "a" apaga
a=!a;
delay(20);
}
digitalWrite(12,d);
digitalWrite(13,a);
}
int incomingByte = 0; // para os dados de série de entrada
boolean d=0;
boolean a=0;
void setup()
{
Serial.begin(9600); // abre porta serial, define a taxa de dados para 9600 bps
pinMode(13,OUTPUT);// Pino 13 do Arduino, Luz do Quarto
pinMode(12,OUTPUT);// Pino 12 do Arduino, Luz da Cozinha
}
void loop(){
// enviar dados somente quando você receber dados:
if (Serial.available() > 0){// le o byte de entrada:
incomingByte = Serial.read();
// diga o que você tem:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
if (incomingByte==100){
delay(20);//tecla "d" acende
d=!d;
digitalWrite(12,d);
}
if (incomingByte==97) { //tecla "a" apaga
a=!a;
delay(20);
digitalWrite(13,a);
}
}
//Luz do Quarto Pino 13 do Arduino
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por