Led's programation - nataliacatalan/Arduino-Project GitHub Wiki
3 RGB leds
Our product should bring three RGB LEDs to indicate various things in one object. So we have to see how it worked an RGB LED to incorporate it into the product and the Arduino. Firsly we've seen that there's many ways of connecting LED'S depending on the type you have. All of them have 4 legs, but the function of the each leg changes. Some of them are R-GROUND-G-B, other are R-G-GROUND-B or R-5V-B-G. After taste all the options, our LED'S need to be connected the following way, which is R-5V-B-G:
At first, we thought it Led RGB worked like a normal LED, except that had several inputs for different colours. But when we did the first tests, we realized that RGB LED's operate in a different way. First, the output of the LED must go to the 5V instead of Ground, which is what a normal LED works. Then, we observed that in such as Digital as Analog, the activation of Led’s was reversing than normal. That is, for lighting the LED (Digital) has scheduled LOW instead of HIGH, and turn it off, you should also program in reverse; and lighting the LED (Analog) program has 0 instead of 255, and turn it off, you should also program in reverse. Finally, we note that entries for different LED colours are different between RGB LED's. Therefore, we had to discover what order colours have our input Led's.
We create simple code to learn how to use them. The following codes are, firstly a simple blinking led in three colors, secondly the same blinking but activated with a button, then three blinking LEDs activated with three buttons, and finally we've try to adabt the LEDs to the Loop PseudoCode, just like our project will do, but instread of buttons, pressure sensors.
BLINKING LED
int led1R = 13;
int led1G = 11;
int led1B = 12;
void setup() {
pinMode(led1R, OUTPUT);
pinMode(led1G, OUTPUT);
pinMode(led1B, OUTPUT);
}
void loop() {
digitalWrite(led1R, LOW);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, HIGH);
delay(1000);
digitalWrite(led1R, HIGH);
digitalWrite(led1G, LOW);
digitalWrite(led1B, HIGH);
delay(1000);
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, LOW);
delay(1000);
}
BUTTON-BLINKING LED
int led1R = 13;
int led1G = 11;
int led1B = 12;
int but = 8;
///****************************************************
/// FUNCTIONS
void red() {
digitalWrite(led1R, LOW);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, HIGH);
}
void green() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, LOW);
digitalWrite(led1B, HIGH);
}
void blue() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, LOW);
}
void off() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, HIGH);
}
///****************************************************
///SETUP
void setup() {
pinMode(led1R, OUTPUT);
pinMode(led1G, OUTPUT);
pinMode(led1B, OUTPUT);
pinMode(but, INPUT);
Serial.begin(9600);
}
///****************************************************
///LOOP
void loop() {
int button = digitalRead(but);
if (button == 1) {
red();
delay(1000);
green();
delay(1000);
blue();
delay(1000);
} else {
off();
Serial.println(but);
}
}
3 BUTTON-3LED
int led1R = 13;
int led1G = 11;
int led1B = 12;
int led2R = 6;
int led2G = 4;
int led2B = 5;
int led3R = 3;
int led3G = 10;
int led3B = 2;
int sensor1 = 8;
int sensor2 = 7;
int sensor3 = 9;
///****************************************************
/// FUNCTIONS
void red1() {
digitalWrite(led1R, LOW);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, HIGH);
}
void green1() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, LOW);
digitalWrite(led1B, HIGH);
}
void blue1() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, LOW);
}
void red2() {
digitalWrite(led2R, LOW);
digitalWrite(led2G, HIGH);
digitalWrite(led2B, HIGH);
}
void green2() {
digitalWrite(led2R, HIGH);
digitalWrite(led2G, LOW);
digitalWrite(led2B, HIGH);
}
void blue2() {
digitalWrite(led2R, HIGH);
digitalWrite(led2G, HIGH);
digitalWrite(led2B, LOW);
}
void red3() {
digitalWrite(led3R, LOW);
digitalWrite(led3G, HIGH);
digitalWrite(led3B, HIGH);
}
void green3() {
digitalWrite(led3R, HIGH);
digitalWrite(led3G, LOW);
digitalWrite(led3B, HIGH);
}
void blue3() {
digitalWrite(led3R, HIGH);
digitalWrite(led3G, HIGH);
digitalWrite(led3B, LOW);
}
void off() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, HIGH);
digitalWrite(led2R, HIGH);
digitalWrite(led2G, HIGH);
digitalWrite(led2B, HIGH);
digitalWrite(led3R, HIGH);
digitalWrite(led3G, HIGH);
digitalWrite(led3B, HIGH);
}
///****************************************************
///SETUP
void setup() {
pinMode(led1R, OUTPUT);
pinMode(led1G, OUTPUT);
pinMode(led1B, OUTPUT);
pinMode(led2R, OUTPUT);
pinMode(led2G, OUTPUT);
pinMode(led2B, OUTPUT);
pinMode(led3R, OUTPUT);
pinMode(led3G, OUTPUT);
pinMode(led3B, OUTPUT);
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
pinMode(sensor3, INPUT);
}
///****************************************************
///LOOP
void loop() {
int button1 = digitalRead(sensor1);
int button2 = digitalRead(sensor2);
int button3 = digitalRead(sensor3);
if (button1 == 1) {
red1();
delay(1000);
green1();
delay(1000);
blue1();
delay(1000);
}
if (button2 == 1) {
red2();
delay(1000);
green2();
delay(1000);
blue2();
delay(1000);
}
if (button3 == 1) {
red3();
delay(1000);
green3();
delay(1000);
blue3();
delay(1000);
} else {
off();
}
}
LOOP
int led1R = 13;
int led1G = 11;
int led1B = 12;
int led2R = 6;
int led2G = 4;
int led2B = 5;
int led3R = 3;
int led3G = 10;
int led3B = 2;
int sensor1 = 8;
int sensor2 = 7;
int sensor3 = 9;
int startangel;
int startmillis;
int lastmillis;
int startmillis2;
int lastmillis2;
int strarttres;
//*************************************************************************
///SETUP
void setup() {
pinMode(led1R, OUTPUT);
pinMode(led1G, OUTPUT);
pinMode(led1B, OUTPUT);
pinMode(led2R, OUTPUT);
pinMode(led2G, OUTPUT);
pinMode(led2B, OUTPUT);
pinMode(led3R, OUTPUT);
pinMode(led3G, OUTPUT);
pinMode(led3B, OUTPUT);
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
pinMode(sensor2, INPUT);
}
//*************************************************************************
///FUNCTIONS
void red1() {
digitalWrite(led1R, LOW);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, HIGH);
}
void green1() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, LOW);
digitalWrite(led1B, HIGH);
}
void blue1() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, LOW);
}
void red2() {
digitalWrite(led2R, LOW);
digitalWrite(led2G, HIGH);
digitalWrite(led2B, HIGH);
}
void green2() {
digitalWrite(led2R, HIGH);
digitalWrite(led2G, LOW);
digitalWrite(led2B, HIGH);
}
void blue2() {
digitalWrite(led2R, HIGH);
digitalWrite(led2G, HIGH);
digitalWrite(led2B, LOW);
}
void red3() {
digitalWrite(led3R, LOW);
digitalWrite(led3G, HIGH);
digitalWrite(led3B, HIGH);
}
void green3() {
digitalWrite(led3R, HIGH);
digitalWrite(led3G, LOW);
digitalWrite(led3B, HIGH);
}
void blue3() {
digitalWrite(led3R, HIGH);
digitalWrite(led3G, HIGH);
digitalWrite(led3B, LOW);
}
void off() {
digitalWrite(led1R, HIGH);
digitalWrite(led1G, HIGH);
digitalWrite(led1B, HIGH);
digitalWrite(led2R, HIGH);
digitalWrite(led2G, HIGH);
digitalWrite(led2B, HIGH);
digitalWrite(led3R, HIGH);
digitalWrite(led3G, HIGH);
digitalWrite(led3B, HIGH);
}
//*************************************************************************
///LOOP
void loop() {
int valorS1 = digitalRead(sensor1);
int valorS2 = digitalRead(sensor2);
int valorS3 = digitalRead(sensor3);
if (valorS2 > valorS1 && valorS2 > valorS3) {
green2();
delay(1000);
}
if (valorS2 < valorS1 && valorS1 > valorS3) {
blue2();
red1();
delay(1000);
}
if (valorS2 < valorS3 && valorS3 > valorS1) {
blue2();
red3();
delay(1000);
} else {
off();
}
}