mirror of
https://github.com/arduino/Arduino.git
synced 2024-12-04 15:24:12 +01:00
75 lines
1.7 KiB
C++
75 lines
1.7 KiB
C++
/*
|
|
Reading a serial ASCII-encoded string.
|
|
|
|
This sketch demonstrates the Serial parseInt() function.
|
|
It looks for an ASCII string of comma-separated values.
|
|
It parses them into ints, and uses those to fade an RGB LED.
|
|
|
|
Circuit: Common-anode RGB LED wired like so:
|
|
* Red cathode: digital pin 3
|
|
* Green cathode: digital pin 5
|
|
* blue cathode: digital pin 6
|
|
* anode: +5V
|
|
|
|
created 13 Apr 2012
|
|
by Tom Igoe
|
|
|
|
This example code is in the public domain.
|
|
*/
|
|
|
|
// pins for the LEDs:
|
|
const int redPin = 3;
|
|
const int greenPin = 5;
|
|
const int bluePin = 6;
|
|
|
|
void setup() {
|
|
// initialize serial:
|
|
Serial.begin(9600);
|
|
// make the pins outputs:
|
|
pinMode(redPin, OUTPUT);
|
|
pinMode(greenPin, OUTPUT);
|
|
pinMode(bluePin, OUTPUT);
|
|
|
|
}
|
|
|
|
void loop() {
|
|
// if there's any serial available, read it:
|
|
while (Serial.available() > 0) {
|
|
|
|
// look for the next valid integer in the incoming serial stream:
|
|
int red = Serial.parseInt();
|
|
// do it again:
|
|
int green = Serial.parseInt();
|
|
// do it again:
|
|
int blue = Serial.parseInt();
|
|
|
|
// look for the newline. That's the end of your
|
|
// sentence:
|
|
if (Serial.read() == '\n') {
|
|
// constrain the values to 0 - 255 and invert
|
|
// if you're using a common-cathode LED, just use "constrain(color, 0, 255);"
|
|
red = 255 - constrain(red, 0, 255);
|
|
green = 255 - constrain(green, 0, 255);
|
|
blue = 255 - constrain(blue, 0, 255);
|
|
|
|
// fade the red, green, and blue legs of the LED:
|
|
analogWrite(redPin, red);
|
|
analogWrite(greenPin, green);
|
|
analogWrite(bluePin, blue);
|
|
|
|
// print the three numbers in one string as hexadecimal:
|
|
Serial.print(red, HEX);
|
|
Serial.print(green, HEX);
|
|
Serial.println(blue, HEX);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|