Hi!
As you can probably guess I am a noob and am trying to learn arduino with close to no programming experience. I am trying to use the virtual serial monitor to recieve multiple inputs from one message. I HAVE googled this but being the noob I am I can't seem to gain anything from what I have read.
My project is basically just trying to get my arduino to ask for three values(Red, Green, Blue) and then use those values to create colors on my RGB led. My led is wired correctly as I have tested it with other programs from the net just to see if it worked.
The code I semi-made semi-stole is below. Please help!
Code:
int redPin = 11;
int greenPin = 10;
int bluePin = 9;
int Red = 0;
int Green = 0;
int Blue = 0;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
if (Serial.available())
{
Serial.print("Red Value?");
Serial.println(" ");
delay(2000);
int Red = Serial.read();
Serial.print("Green Value?");
Serial.println(" ");
int Green = Serial.read();
delay(2000);
Serial.print("Blue Value?");
Serial.println(" ");
int Blue = Serial.read();
setColor(Red, Green, Blue);
delay(2000);
}
else
{
setColor(Red, Green, Blue);
}
}
void setColor(int red, int green, int blue)
{
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
#endif
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
Yes, I did post this twice but I thought the people viewing Programming Questions could help me out more than project guidance
Not too dissimilar, below is code that receives messages via the serial port and parses the received data to send specific servos to specific positions.
//zoomkat 11-22-12 simple delimited ',' string parse
//from serial port input (via serial monitor)
//and print result out serial port
//multi servos added
// Powering a servo from the arduino usually *DOES NOT WORK*.
String readString;
#include <Servo.h>
Servo myservoa, myservob, myservoc, myservod; // create servo object to control a servo
void setup() {
Serial.begin(9600);
//myservoa.writeMicroseconds(1500); //set initial servo position if desired
myservoa.attach(6); //the pin for the servoa control
myservob.attach(7); //the pin for the servob control
myservoc.attach(8); //the pin for the servoc control
myservod.attach(9); //the pin for the servod control
Serial.println("multi-servo-delimit-test-dual-input-11-22-12"); // so I can keep track of what is loaded
}
void loop() {
//expect single strings like 700a, or 1500c, or 2000d,
//or like 30c, or 90a, or 180d,
//or combined like 30c,180b,70a,120d,
if (Serial.available()) {
char c = Serial.read(); //gets one byte from serial buffer
if (c == ',') {
if (readString.length() >1) {
Serial.println(readString); //prints string to serial port out
int n = readString.toInt(); //convert readString into a number
// auto select appropriate value, copied from someone elses code.
if(n >= 500)
{
Serial.print("writing Microseconds: ");
Serial.println(n);
if(readString.indexOf('a') >0) myservoa.writeMicroseconds(n);
if(readString.indexOf('b') >0) myservob.writeMicroseconds(n);
if(readString.indexOf('c') >0) myservoc.writeMicroseconds(n);
if(readString.indexOf('d') >0) myservod.writeMicroseconds(n);
}
else
{
Serial.print("writing Angle: ");
Serial.println(n);
if(readString.indexOf('a') >0) myservoa.write(n);
if(readString.indexOf('b') >0) myservob.write(n);
if(readString.indexOf('c') >0) myservoc.write(n);
if(readString.indexOf('d') >0) myservod.write(n);
}
readString=""; //clears variable for new input
}
}
else {
readString += c; //makes the string readString
}
}
}
Thanks for the reply but as I said, I am a noob. thus I have no clue what I am looking at ... If someone could completely breakdown going from an input of x,y,z to 3 separate variables that would be very appreciated Sorry for being such a noob...