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

Exibições: 5084

Responder esta

Respostas a este tópico

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

perae ja faço isso

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));}


}

hunnnn perae

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
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço