I am trying to solve a certain exercise in class by my teacher. Basically the exercise is: With two arduinos prepared to make serial communication between TX and RX, it must transmit four code sequences through a two-key keyboard.
Pin 0 - RX
Pin 1 - TX
Pin 7 - Key A
Pin 8 - Key B
Pin 13 - Led
Key A Key B
Result 0 0 Led Off
0 1 Cast 1010101010101010
Cast 11111100000101010
1 1 Led On
I studied the material on Arduino's own site on serial programming, I developed my own code but encountered problems with it. I'll drop you down for those who want to take a look.
NOTE: I can guarantee that there is nothing wrong with the hardware and this question only concerns the programming itself.
CODE:
// TRANSMISSOR
int numA = 7;
int numB = 8;
void setup(){
Serial.begin(9600); // Configurado a serial
}
void loop(){
numA = 0; // Bit 0A criado
numB = 0; // Bit 0B criado
Serial.write(numA); // Bit 0A transmitido
Serial.write(numB); // Bit 0B transmitido
delay(2000); // Tempo de 2 segundos
numA = 1; // Bit 1A criado
numB = 1; // Bit 1B criado
Serial.write(numA); // Bit 1A transmitido
Serial.write(numB); // Bit 1B transmitido
delay(2000); // Tempo de 2 segundos
}
//RECEPTOR
int recByteA;
int recByteB;
int led = 13;
void setup(){
Serial.begin(9600); // Configurado a comunicação serial
pinMode(led,OUTPUT); // Configurado o LED como saída
}
void loop(){
if(Serial.available() > 0){ // Verifica se existe informação na serial em
Serial.avaliable
recByteA = Serial.read(); // Caso sim o Bit é gravado em recByte que vem de Serial.read
}
if(Serial.available() > 0){ // Verifica se existe informação na serial em Serial.avaliable
recByteB = Serial.read(); // Caso sim o Bit é gravado em recByte que vem de Serial.read
}
if(recByteA == 0 && recByteB == 0){ // Testa se o Bit que esta em recByteA e B é igual a 0
digitalWrite(led,LOW); // Se o Bit for Zero o LED apaga
}
else if(recByteA == 1 && recByteB == 1){ // Testa se o Bit que esta em recByteA e B é igual a 1
digitalWrite(led,HIGH); // Se o Bit for Um o LED liga
}
else if(recByteA == 0 && recByteB == 1){ // Testa se o Bit que esta em recByteA é igual a 0 e recByteB é igual a 1
recByteA = 1;
recByteB = 0;
recByteA = 1;
recByteB = 0;
recByteA = 1;
recByteB = 0;
recByteA = 1;
recByteB = 0;
recByteA = 1;
recByteB = 0;
recByteA = 1;
recByteB = 0;
recByteA = 1;
recByteB = 0;
recByteA = 1;
recByteB = 0;
}
else if(recByteA == 1 && recByteB == 0){ // Testa se o Bit que esta em recByteA é igual a 1 e recByteB é igual a 0
recByteA = 1;
recByteB = 1;
recByteA = 1;
recByteB = 1;
recByteA = 1;
recByteB = 1;
recByteA = 0;
recByteB = 0;
recByteA = 0;
recByteB = 0;
recByteA = 0;
recByteB = 1;
recByteA = 0;
recByteB = 1;
recByteA = 0;
recByteB = 1;
recByteA = 0;
}
}