Uart Connecting To An Arduino

 
#1

I'm very new to both the ez-b4 and Arduino and need basic help or advice. With my robot I want to be able to control LEDs through an Arduino. I have a Mega and with it I can add more LED functions to it as I learn. I've been reading a lot of posts on this and I took in so much info, I think I'm just dangerous and not knowledgeable.

I want to start simple, just turn on and off LEDs through my Arduino. I eventually want to control more LEDs and do more than just turn on and off.

Right now my Ez-b is powered through my main power source at 7v. My Arduino is plugged into my laptop and powered with USB, once mounted in my robot, an R2, it will run off the same power source, not through the Ez-b, and will power up when the Ez-b powers up.

Using UART 0 I connect the TX and RX to TX and RX of the Arduino. I'm unsure if it matters which ones. TX0, RX0 or any of the other numbered through 1-3, pins 14-19.

I found a nice Arduino code to get me going for loading onto the Arduino.

Code:


/*
2 Simple LED sketch
3 */
4
5 int led = 13; // Pin 13
6
7 void setup()
8 {
9 pinMode(led, OUTPUT); // Set pin 13 as digital out
10
11 // Start up serial connection
12 Serial.begin(9600); // baud rate
13 Serial.flush();
14 }
15
16 void loop()
17 {
18 String input = "";
19
20 // Read any serial input
21 while (Serial.available() > 0)
22 {
23 input += (char) Serial.read(); // Read in one char at a time
24 delay(5); // Delay for 5 ms so the next char has time to be received
25 }
26
27 if (input == "on")
28 {
29 digitalWrite(led, HIGH); // on
30 }
31 else if (input == "off")
32 {
33 digitalWrite(led, LOW); // off
34 }
35 }



I still have a bunch to read up on the scripting part in EZ-Builder and how to actually send the on off command, but first, how do I correctly connect the two devices together? I know I can connect LEDs to the Ez-b, but it will use up ports and I want to expand my use of LEDS.

Thanks and sorry forwhat I'm guessing is probably very basic question.

#2

And a ground to both boards.

#3

Quote:

And a ground to both boards.



To each other, since they are grounded through the power right? To any ground on the Mega, I've grounded the LEDs at the ground next to pin 13

#4

I recommend looking at post 24 at https://www.ez-robot.com/Community/Forum/Thread?threadId=10451&page=3

You have to have a common ground for the EZ-B to communicate to the Arduino.

You can do this from any digital or analog pin on the EZ-B, or from the UART port. TX from the EZ-B (or any digital pins signal wire) to the Arduino can carry the send data from the EZ-B to the Arduino on its RX pin.

If you need to receive data on the EZ-B, you need to have the TX pin from the Arduino connected to the RX pin on the EZ-B. At this point it also is logical to use the UART port on the EZ-B for this and use the TX port on the EZ-B to connect to the arduinos RX port.

Ground is Ground so it doesnt matter which ground pin you use on the arduino or EZ-B but for simplicity sake, I would use the ground pin that matches the signal pin on the EZ-B (digital or uart depending on which way you wire) to the ground pin that is beside the TX and RX pins on the Arduino.

To see how to send data to the Arduino, and then catch it and process it in the Arduino sketch, I would look at the thread posted above for examples.

#5

Ok, I have it connected but I'm sending my command to the wrong pin. I have connected to UART0

Now when I send the command

Code:

sendSerial(0, 9600, "on")

The servo I have plugged into D0 clicks. How to I find what I'm doing wrong?

Thanks

#6

If you are connected to the uart port of the ezb then why are you using sendserial commamds? It is also not in the proper format anyway... I am not sure what you are trying to do but if you are trying to send commands to your arduino you need to use the uart command ( since your arduino is connected to it... Or are you trying to move a servo plugged into the ezb?
I am on my phone so i have to show the code this way
Uartinit(0,0,9600)
UartWrite(0,0,"on"Winky
I am away from my pc so i can't confirm the right syntax at the moment...

#7

If you are just trying to move a servo plugged into D0 on your ezb the correct syntax is....
Servo(D0,90) # moves the servo to 90 deg

#8

as Richard stated, if you are connecting to the UART port and not a digital port, the command you are using wont work. I am in my shop right now and dont have access to EZ-Builder. In the script you have an option to see the available commands. You can search for UART and see the available commands for the UART port. This should get you there.

#9

I'm using UART and the wrong command, thanks.

#10

Okay, back at my desk now.

I haven't tested this out but I would do something like this in a script.

Code:


if(UARTAvailable( 0, 0 ))
UARTWrite( 0, 0, "Whatever you want to send here" )
else
UARTInit( 0, 0, 9600 )
Sleep(500)
if(UARTAvailable( 0, 0 ))
UARTWrite( 0, 0, "Whatever you want to send here" )
else
SAY("I can't communicate with my light controller")
end if
end if