For this week, I will make a GUI using Processing IDE, which can be downloaded from "Click here to dowonload". I did use in this assignment the Final Project Board.
After downloading and installing the software, we can see that it looks very similar to the Arduino IDE. Similarily to arduino IDE, we need to install libraries to use certain functions. As I want to create a GUI using buttons, I will install the controlP5 library, which makes this very easy.
Processing runs in windows in my computer, so for my board to be able to communicate, I will use the FTDI cable. For this, I install the drivers of the cable to my computer, and then use the cable to connect to the pc.
I did use the final project board in this assignment
The following close-up shows the output elements
The following close-up shows the input elements. Focused on pins , 11, A2, A5, A4, A3, A1, 4, 3, 2, A0, 1, 0 and 1
And are connected to the ATMAEGA using its pins which I found in the datasheet.
For my communication Week, I did an example of how to control RGB LED (that has common ground) in my slave board using two push buttons connected in my master board. For this week, I plan to control the RGB LED on my board, using two buttons created on my GUI. Processing will communicate with my Arduino using serial communication.
In processing, I will create 2 buttons, that will turn on the RGB LED once the buttons once pressed. For this, I will use the serial library and the controlP5 Library. Once a button is pressed, the processing interface will send a character through serial communication to the Arduino, to then control the state of the LED.
This will be the code for the Processing.
I did use the common cathode to connect the RGB LED
import controlP5.*; //import ControlP5 library
import processing.serial.*;
Serial port;
ControlP5 cp5; //create ControlP5 object
PFont font;
void setup(){ //same as arduino program
size(300, 250); //window size, (width, height)
printArray(Serial.list()); //prints all available serial ports
port = new Serial(this, "COM3", 9600); //i have connected arduino to com13, it would be different in linux and mac os
//lets add buton to empty window
cp5 = new ControlP5(this);
font = createFont("calibri light bold", 20); // custom fonts for buttons and title
cp5.addButton("LED1") //"LED1" is the name of button
.setPosition(100, 50) //x and y coordinates of upper left corner of button
.setSize(120, 70) //(width, height)
.setFont(font)
;
cp5.addButton("LED2") //"LED2" is the name of button
.setPosition(100, 150) //x and y coordinates of upper left corner of button
.setSize(120, 70) //(width, height)
.setFont(font)
;
}
void draw(){ //same as loop in arduino
background(150, 150 , 150); // background color of window (r, g, b) or (0 to 255)
//lets give title to our window
fill(0, 255, 0); //text color (r, g, b)
textFont(font);
text("LED CONTROL", 80, 30); // ("text", x coordinate, y coordinat)
}
//lets add some functions to our buttons
//so whe you press any button, it sends perticular char over serial port
void LED1(){
port.write('1');
}
void LED2(){
port.write('2');
}
At the other end, Arduino receives the char '1' or char ‘2’ and according to the received character it changes state of the output pins
This will be the code for arduino.
void setup() {
pinMode(5, OUTPUT); //set pin as output , LED1
pinMode(7, OUTPUT); //set pin as output , LED2
Serial.begin(9600); //start serial communication @9600 bps
}
void loop(){
digitalWrite(5, LOW); //Turn off Both LEDs
digitalWrite(7, LOW); //Turn off Both LEDs
if(Serial.available()){ //id data is available to read
char val = Serial.read();
if(val == '1'){ //if r received
digitalWrite(5, HIGH); //turn on red1
delay(500);
}
if(val == '2'){ //if b received
digitalWrite(7, HIGH); //turn on led2
delay(500);
}
}
}
This is a simple example of how to create a Graphic User Interface using processing and Arduino. This has a lot of potential because you can create many applications to control your Arduino from a computer using serial communication.