Question
Asked June 16 2017

Community Question

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.

June 17 2017
I get an error message-

Code:

Error on line 1: Missing 2 closing statement (ENDIF/ENDREPEAT/ENDREPEATUNTIL/ENDREPEATWHILE/etc)
Done (00:00:00)



I tried running just

Code:

 UARTWrite( 0, 0, "on" )

I get a done message, but my lights don't turn on. They are plugged in correct, I tested them before changing it to the code above. If I reupload the sketch, the light on pin 13 blinks.

I put the UARTthe Init( 0, 0, 9600 ) in the connection script area.

DJ Sures
Synthiam
June 17 2017
Dave, your code in the previous response doesn't make sense :). Checking UartAvailable() returns the number of bytes in the input buffer.

Also, kashyyk, the error you are receiving is telling you exactly what is missing. Read the error and understand each word in the sentence. Just like you are reading my response, the error message is also a sentence. It's telling you something :)
DJ Sures
Synthiam
June 17 2017
Don't use words for commands like "ON" or "OFF". Create a protocol instead. If you simply use a BYTE (0-255), then you have 255 different commands to send. You can make it so some commands have parameters, but don't use the word "ON" or "OFF", that's getting into writing console commands for user interfaces and entirely out of scope for the question.

Look at the EZ-B protocol if you need an example of what a protocol looks like. You can view it here: http://www.ez-robot.com/Tutorials/Lesson/18?courseId=4

Here is working sample code...

ARDUINO

Code:


int led = 13; // Pin 13

void setup() {

pinMode(led, OUTPUT); // Set pin 13 as digital out

// Start up serial connection
Serial.begin(9600); // baud rate
Serial.flush();
}

void loop() {

// Wait until there is data
while (Serial.available() > 0) {

int input = Serial.read();

if (input == 33)
digitalWrite(led, HIGH); // on
else if (input == 44)
digitalWrite(led, LOW); // off
}
}



EZ-SCRIPT

Code:


UARTInit(0, 0, 9600)

:loop

sayezbWait("I am turning on LED")
UARTWrite(0, 0, 33)

sleep(4000)

sayezbWait("I am turning off LED")
UARTWrite(0, 0, 44)

sleep(4000)

goto(loop)

June 18 2017
Thanks for the correction DJ. What I was doing in my C# project didnt transfer well here.
June 18 2017
Thanks DJ! I'll try it out later this afternoon.