I am trying to send and recive serial communication with the help from 2 max485 and 2 arduinos.
There seems to be something wrong with the code (suprice? ;)), it doenst get every bit that i am sending. I am sending a "1" .. wait... then sending "0" and so on.
The LED on the reciving board turns on, and off. But doenst do anything for 2-3-4 pulses and then keeps on going like before - totaly random.
they are both powered on by USB from the same PC.
Arduino 1 - Sending unit
void setup(){
Serial.begin(9600); //opens serial port, sets data rate to 9600 bps
pinMode(2, OUTPUT);
}
void loop()
{
digitalWrite(2, HIGH); // Set pin2 HIGH
Serial.write(1); // send a byte with the value 1
delay(2000); // Wait 2sec
Serial.write(0); // send a byte with the value 0
delay(2000); // Wait 2sec
}
Arduino 2 - Reciving unit
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
pinMode(13, OUTPUT);
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
}
// turn on/off LED
if (incomingByte > 0) {
digitalWrite(13, HIGH);
}
else
{
digitalWrite(13, LOW);
}
}
Any suggestions i have done wrong? Seems pretty basic, but cant find the mistake.
I am getting some thing like "110101001" so somehow it doenst recive every time i send a 1 or 0.
The LED changes when it is 1 and 0. So no problem there. But the information recived is not correct with the information send.
Update
this is the exact serial monitor "010101001010110101001010010101" - The time between i get each number is difrent. Sometimes i get 0101 as i should. Other times there are a bigger delay.
I think you might have data type mismatches, so that you think you sending
0x00 or B00000000 but are actually sending '0' which is 0x30, B00110000
and 0x01 or B00000001 vs '1', 0x31 B00110001
The code looks reasonable so I would suspect there's a problem with the serial communication mechanism.
You say you're using a pair of max485 transceivers. How have you connected them to each other and to the Arduinos? Did you remember to connect the grounds?
DI to TX(1) and RO to RX(0) on both sender and reciver.
Update
Forgot about the resistors. I got a resistor of 150ohm between A and B on both max485. Got a 560 resistor from the one end of A to GND and B to 5V. Altso 560 ohm.
No. I tried that "case '1' " code as suggested. That was when i got these in weird numbers in the serial monitor. Must be the cause, because i got "10101100101" with the code from first post.
MrMr:
No. I tried that "case '1' " code as suggested. That was when i got these in weird numbers in the serial monitor. Must be the cause, because i got "10101100101" with the code from first post.
The code in your first post (Arduino 1 - Sending unit) does not generate those numbers.
The code is exactly the same as in the first post. Thats why i am confused. I will upload the code again and the problem should be gone, cant see why this suddently happens when i am sending 1 and 0s.
At the moment i have the pin2 (my enable) on HIGH always. Maybe this is the problem, i will read your post and see if it explains the problems.