mirror of
https://github.com/arduino/Arduino.git
synced 2025-02-21 15:54:39 +01:00
parent
f8b764a3a6
commit
33b67c0391
@ -1,235 +0,0 @@
|
|||||||
/*
|
|
||||||
Serial RGB controller
|
|
||||||
|
|
||||||
Reads a serial input string looking for three comma-separated
|
|
||||||
integers with a newline at the end. Values should be between
|
|
||||||
0 and 255. The sketch uses those values to set the color
|
|
||||||
of an RGB LED attached to pins 9 - 11.
|
|
||||||
|
|
||||||
The circuit:
|
|
||||||
* Common-anode RGB LED cathodes attached to pins 9 - 11
|
|
||||||
* LED anode connected to pin 13
|
|
||||||
|
|
||||||
To turn on any given channel, set the pin LOW.
|
|
||||||
To turn off, set the pin HIGH. The higher the analogWrite level,
|
|
||||||
the lower the brightness.
|
|
||||||
|
|
||||||
created 29 Nov 2010
|
|
||||||
by Tom Igoe
|
|
||||||
|
|
||||||
This example code is in the public domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
String inString = ""; // string to hold input
|
|
||||||
int currentColor = 0;
|
|
||||||
int red, green, blue = 0;
|
|
||||||
|
|
||||||
void setup() {
|
|
||||||
// Open serial communications and wait for port to open:
|
|
||||||
Serial.begin(9600);
|
|
||||||
while (!Serial) {
|
|
||||||
; // wait for serial port to connect. Needed for Leonardo only
|
|
||||||
}
|
|
||||||
|
|
||||||
// send an intro:
|
|
||||||
Serial.println("\n\nString toInt() RGB:");
|
|
||||||
Serial.println();
|
|
||||||
// set LED cathode pins as outputs:
|
|
||||||
pinMode(9, OUTPUT);
|
|
||||||
pinMode(10, OUTPUT);
|
|
||||||
pinMode(11, OUTPUT);
|
|
||||||
// turn on pin 13 to power the LEDs:
|
|
||||||
pinMode(13, OUTPUT);
|
|
||||||
digitalWrite(13, HIGH);
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop() {
|
|
||||||
int inChar;
|
|
||||||
|
|
||||||
// Read serial input:
|
|
||||||
if (Serial.available() > 0) {
|
|
||||||
inChar = Serial.read();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isDigit(inChar)) {
|
|
||||||
// convert the incoming byte to a char
|
|
||||||
// and add it to the string:
|
|
||||||
inString += (char)inChar;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if you get a comma, convert to a number,
|
|
||||||
// set the appropriate color, and increment
|
|
||||||
// the color counter:
|
|
||||||
if (inChar == ',') {
|
|
||||||
// do something different for each value of currentColor:
|
|
||||||
switch (currentColor) {
|
|
||||||
case 0: // 0 = red
|
|
||||||
red = inString.toInt();
|
|
||||||
// clear the string for new input:
|
|
||||||
inString = "";
|
|
||||||
break;
|
|
||||||
case 1: // 1 = green:
|
|
||||||
green = inString.toInt();
|
|
||||||
// clear the string for new input:
|
|
||||||
inString = "";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
currentColor++;
|
|
||||||
}
|
|
||||||
// if you get a newline, you know you've got
|
|
||||||
// the last color, i.e. blue:
|
|
||||||
if (inChar == '\n') {
|
|
||||||
blue = inString.toInt();
|
|
||||||
|
|
||||||
// set the levels of the LED.
|
|
||||||
// subtract value from 255 because a higher
|
|
||||||
// analogWrite level means a dimmer LED, since
|
|
||||||
// you're raising the level on the anode:
|
|
||||||
analogWrite(11, 255 - red);
|
|
||||||
analogWrite(9, 255 - green);
|
|
||||||
analogWrite(10, 255 - blue);
|
|
||||||
|
|
||||||
// print the colors:
|
|
||||||
Serial.print("Red: ");
|
|
||||||
Serial.print(red);
|
|
||||||
Serial.print(", Green: ");
|
|
||||||
Serial.print(green);
|
|
||||||
Serial.print(", Blue: ");
|
|
||||||
Serial.println(blue);
|
|
||||||
|
|
||||||
// clear the string for new input:
|
|
||||||
inString = "";
|
|
||||||
// reset the color counter:
|
|
||||||
currentColor = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Here's a Processing sketch that will draw a color wheel and send a serial
|
|
||||||
string with the color you click on:
|
|
||||||
|
|
||||||
// Subtractive Color Wheel with Serial
|
|
||||||
// Based on a Processing example by Ira Greenberg.
|
|
||||||
// Serial output added by Tom Igoe
|
|
||||||
//
|
|
||||||
// The primaries are red, yellow, and blue. The secondaries are green,
|
|
||||||
// purple, and orange. The tertiaries are yellow-orange, red-orange,
|
|
||||||
// red-purple, blue-purple, blue-green, and yellow-green.
|
|
||||||
//
|
|
||||||
// Create a shade or tint of the subtractive color wheel using
|
|
||||||
// SHADE or TINT parameters.
|
|
||||||
|
|
||||||
// Updated 29 November 2010.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import processing.serial.*;
|
|
||||||
|
|
||||||
int segs = 12;
|
|
||||||
int steps = 6;
|
|
||||||
float rotAdjust = TWO_PI / segs / 2;
|
|
||||||
float radius;
|
|
||||||
float segWidth;
|
|
||||||
float interval = TWO_PI / segs;
|
|
||||||
|
|
||||||
Serial myPort;
|
|
||||||
|
|
||||||
void setup() {
|
|
||||||
size(200, 200);
|
|
||||||
background(127);
|
|
||||||
smooth();
|
|
||||||
ellipseMode(RADIUS);
|
|
||||||
noStroke();
|
|
||||||
// make the diameter 90% of the sketch area
|
|
||||||
radius = min(width, height) * 0.45;
|
|
||||||
segWidth = radius / steps;
|
|
||||||
|
|
||||||
// swap which line is commented out to draw the other version
|
|
||||||
// drawTintWheel();
|
|
||||||
drawShadeWheel();
|
|
||||||
// open the first serial port in your computer's list
|
|
||||||
myPort = new Serial(this, Serial.list()[0], 9600);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void drawShadeWheel() {
|
|
||||||
for (int j = 0; j < steps; j++) {
|
|
||||||
color[] cols = {
|
|
||||||
color(255-(255/steps)*j, 255-(255/steps)*j, 0),
|
|
||||||
color(255-(255/steps)*j, (255/1.5)-((255/1.5)/steps)*j, 0),
|
|
||||||
color(255-(255/steps)*j, (255/2)-((255/2)/steps)*j, 0),
|
|
||||||
color(255-(255/steps)*j, (255/2.5)-((255/2.5)/steps)*j, 0),
|
|
||||||
color(255-(255/steps)*j, 0, 0),
|
|
||||||
color(255-(255/steps)*j, 0, (255/2)-((255/2)/steps)*j),
|
|
||||||
color(255-(255/steps)*j, 0, 255-(255/steps)*j),
|
|
||||||
color((255/2)-((255/2)/steps)*j, 0, 255-(255/steps)*j),
|
|
||||||
color(0, 0, 255-(255/steps)*j),
|
|
||||||
color(0, 255-(255/steps)*j, (255/2.5)-((255/2.5)/steps)*j),
|
|
||||||
color(0, 255-(255/steps)*j, 0),
|
|
||||||
color((255/2)-((255/2)/steps)*j, 255-(255/steps)*j, 0)
|
|
||||||
};
|
|
||||||
for (int i = 0; i < segs; i++) {
|
|
||||||
fill(cols[i]);
|
|
||||||
arc(width/2, height/2, radius, radius,
|
|
||||||
interval*i+rotAdjust, interval*(i+1)+rotAdjust);
|
|
||||||
}
|
|
||||||
radius -= segWidth;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void drawTintWheel() {
|
|
||||||
for (int j = 0; j < steps; j++) {
|
|
||||||
color[] cols = {
|
|
||||||
color((255/steps)*j, (255/steps)*j, 0),
|
|
||||||
color((255/steps)*j, ((255/1.5)/steps)*j, 0),
|
|
||||||
color((255/steps)*j, ((255/2)/steps)*j, 0),
|
|
||||||
color((255/steps)*j, ((255/2.5)/steps)*j, 0),
|
|
||||||
color((255/steps)*j, 0, 0),
|
|
||||||
color((255/steps)*j, 0, ((255/2)/steps)*j),
|
|
||||||
color((255/steps)*j, 0, (255/steps)*j),
|
|
||||||
color(((255/2)/steps)*j, 0, (255/steps)*j),
|
|
||||||
color(0, 0, (255/steps)*j),
|
|
||||||
color(0, (255/steps)*j, ((255/2.5)/steps)*j),
|
|
||||||
color(0, (255/steps)*j, 0),
|
|
||||||
color(((255/2)/steps)*j, (255/steps)*j, 0)
|
|
||||||
};
|
|
||||||
for (int i = 0; i < segs; i++) {
|
|
||||||
fill(cols[i]);
|
|
||||||
arc(width/2, height/2, radius, radius,
|
|
||||||
interval*i+rotAdjust, interval*(i+1)+rotAdjust);
|
|
||||||
}
|
|
||||||
radius -= segWidth;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void draw() {
|
|
||||||
// nothing happens here
|
|
||||||
}
|
|
||||||
|
|
||||||
void mouseReleased() {
|
|
||||||
// get the color of the mouse position's pixel:
|
|
||||||
color targetColor = get(mouseX, mouseY);
|
|
||||||
// get the component values:
|
|
||||||
int r = int(red(targetColor));
|
|
||||||
int g = int(green(targetColor));
|
|
||||||
int b = int(blue(targetColor));
|
|
||||||
// make a comma-separated string:
|
|
||||||
String colorString = r + "," + g + "," + b + "\n";
|
|
||||||
// send it out the serial port:
|
|
||||||
myPort.write(colorString );
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user