Se necesita: 1. una placa de arduino uno
2. estándar de 16 * 2 LCD
3. común ánodo RGB LED
4. estándar sensor de luz
5,10 K y 330 ohm resistencias
Paso 1. conectar el ánodo rgb llevado a la ONU GND
2. Conecte las piernas rojo verdes y azules del led a través de la resistencia de 330 ohm a tres de los puertos PWM de la ONU
3. Conecte el sensor de luz de vcc a gnd a través de la resistencia de 10K (de modo que el sensor está "arriba")
4. Conecte la segunda etapa del sensor a entrada analógica A5 de la ONU.
5. Conecte la pantalla LCD (mirar el código o cambiar la posición de conexiones ver file:///D:/My%20Documents/Arduino/arduino-1.0.1/reference/LiquidCrystalConstructor.html para la referencia)
6. después de la adjosments del código, compilar y grabar a la ONU y listo :-)
hay mucha creatividad en cambiar la luz por casi cada sensor análogo... ¡ Disfrute!
el código:
#include / / para itoa() llamada
#include
LiquidCrystal lcd (7, 6, 2, 3, 4, 5);
void setup() {}
LCD.Begin(16,2); iniciar la biblioteca
lcd.setCursor(0,0);
}
void loop() {}
int potencia = 150;
Beg:analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
digitalWrite(8,HIGH); / / proporcionar ref V
int a;
un = analogRead (A5); //read el valor
bufg Char [5];
convertir una cadena [buf]
itoa (, bufg, 10);
LCD.Print (itoa (, bufg, 10)); //print valor
Delay (1000); //delay
LCD.Clear(); / / clear LCD para la siguiente iteración
Si (un > poder) {beg goto;} else {goto siguiente;} Compruebe si hay luz
siguiente:
int vec2[3]={random(255),random(130),random(30)}; //random vec2
int vec1[3]={random(255),random(130),random(30)}; //random vec1
vec3 int [3] = {234,100,20}; //reff vector-random, pero constante
int vec4[3]={random(255),random(130),random(30)}; //random vec4
int vec5[3]={random(255),random(130),random(30)}; //random vec5
int vec6[3]={random(255),random(130),random(30)}; //random vec6
int r = vec3 [0];
int g = vec3 [1];
int b = vec3 [2]; //initiation de RGB a vec reff
mientras que {} (1)
char bufr1 [5];
convertir 123 en cadena [buf]
;
char bufg1 [5];
convertir 123 en cadena [buf]
itoa (vec1 [0], bufg1, 10);
char bufb1 [5];
convertir 123 en cadena [buf]
itoa (vec1 [1], bufb1, 10);
LCD.Clear();
lcd.setCursor(0,1);
LCD.Print ("R:");
LCD.Print (itoa (vec1 [0], bufr1, 10));
LCD.Print ("G:");
LCD.Print (itoa (vec1 [1], bufg1, 10));
LCD.Print ("B:");
LCD.Print (itoa (vec1 [2], bufb1, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay(10);
Si (r > vec1[0]) {r--;} else
Si (r
Si (g > vec1[1]) {g--;} else
Si (g
Si (b > vec1[2]) {b--;} else
Si (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
bufr Char [5];
convertir 123 en cadena [buf]
;
bufg Char [5];
convertir 123 en cadena [buf]
itoa (g, bufg, 10);
char bufb [5];
convertir 123 en cadena [buf]
itoa (b, bufb, 10);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("R:");
LCD.Print (itoa (r, bufr, 10));
LCD.Print ("G:");
LCD.Print (itoa (g, bufg, 10));
LCD.Print ("B:");
LCD.Print (itoa (b, bufb, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay (10);
Si (r == vec1 [0] & & g == vec1 [1] & & break b==vec1[2]); //this zooms de lazo los enteros RGB en el destino del vector y el cambio con retraso de salida
(se repite para todos los vectores uno después del otro)
digitalWrite(8,HIGH); / / proporcionar ref V
un = analogRead (A5); //read
Si (a > energía) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
Goto beg;}
}
mientras que {} (1)
char bufr1 [5];
convertir 123 en cadena [buf]
;
char bufg1 [5];
convertir 123 en cadena [buf]
itoa (vec2 [0], bufg1, 10);
char bufb1 [5];
convertir 123 en cadena [buf]
itoa (vec2 [1], bufb1, 10);
LCD.Clear();
lcd.setCursor(0,1);
LCD.Print ("R:");
LCD.Print (itoa (vec2 [0], bufr1, 10));
LCD.Print ("G:");
LCD.Print (itoa (vec2 [1], bufg1, 10));
LCD.Print ("B:");
LCD.Print (itoa (vec2 [2], bufb1, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay(10);
Si (r > vec2[0]) {r--;} else
Si (r
Si (g > vec2[1]) {g--;} else
Si (g
Si (b > vec2[2]) {b--;} else
Si (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
bufr Char [5];
convertir 123 en cadena [buf]
;
bufg Char [5];
convertir 123 en cadena [buf]
itoa (g, bufg, 10);
char bufb [5];
convertir 123 en cadena [buf]
itoa (b, bufb, 10);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("R:");
LCD.Print (itoa (r, bufr, 10));
LCD.Print ("G:");
LCD.Print (itoa (g, bufg, 10));
LCD.Print ("B:");
LCD.Print (itoa (b, bufb, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay (10);
Si (r == vec2 [0] & & g == vec2 [1] & & rotura de la b==vec2[2]);
digitalWrite(8,HIGH); / / proporcionar ref V
un = analogRead (A5); //read
Si (a > energía) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
Goto beg;}
}
mientras que {} (1)
char bufr1 [5];
convertir 123 en cadena [buf]
;
char bufg1 [5];
convertir 123 en cadena [buf]
itoa (vec4 [0], bufg1, 10);
char bufb1 [5];
convertir 123 en cadena [buf]
itoa (vec4 [1], bufb1, 10);
LCD.Clear();
lcd.setCursor(0,1);
LCD.Print ("R:");
LCD.Print (itoa (vec4 [0], bufr1, 10));
LCD.Print ("G:");
LCD.Print (itoa (vec4 [1], bufg1, 10));
LCD.Print ("B:");
LCD.Print (itoa (vec4 [2], bufb1, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay(10);
Si (r > vec4[0]) {r--;} else
Si (r
Si (g > vec4[1]) {g--;} else
Si (g
Si (b > vec4[2]) {b--;} else
Si (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
bufr Char [5];
convertir 123 en cadena [buf]
;
bufg Char [5];
convertir 123 en cadena [buf]
itoa (g, bufg, 10);
char bufb [5];
convertir 123 en cadena [buf]
itoa (b, bufb, 10);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("R:");
LCD.Print (itoa (r, bufr, 10));
LCD.Print ("G:");
LCD.Print (itoa (g, bufg, 10));
LCD.Print ("B:");
LCD.Print (itoa (b, bufb, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay (10);
Si (r == vec4 [0] & & g == vec4 [1] & & rotura de la b==vec4[2]);
digitalWrite(8,HIGH); / / proporcionar ref V
un = analogRead (A5); //read
Si (a > energía) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
Goto beg;}
}
mientras que {} (1)
char bufr1 [5];
convertir 123 en cadena [buf]
;
char bufg1 [5];
convertir 123 en cadena [buf]
itoa (vec5 [0], bufg1, 10);
char bufb1 [5];
convertir 123 en cadena [buf]
itoa (vec5 [1], bufb1, 10);
LCD.Clear();
lcd.setCursor(0,1);
LCD.Print ("R:");
LCD.Print (itoa (vec5 [0], bufr1, 10));
LCD.Print ("G:");
LCD.Print (itoa (vec5 [1], bufg1, 10));
LCD.Print ("B:");
LCD.Print (itoa (vec5 [2], bufb1, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay(10);
Si (r > vec5[0]) {r--;} else
Si (r
Si (g > vec5[1]) {g--;} else
Si (g
Si (b > vec5[2]) {b--;} else
Si (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
bufr Char [5];
convertir 123 en cadena [buf]
;
bufg Char [5];
convertir 123 en cadena [buf]
itoa (g, bufg, 10);
char bufb [5];
convertir 123 en cadena [buf]
itoa (b, bufb, 10);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("R:");
LCD.Print (itoa (r, bufr, 10));
LCD.Print ("G:");
LCD.Print (itoa (g, bufg, 10));
LCD.Print ("B:");
LCD.Print (itoa (b, bufb, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay (10);
Si (i == vec5 [0] & & g == vec5 [1] & & rotura de la b==vec5[2]);
digitalWrite(8,HIGH); / / proporcionar ref V
un = analogRead (A5); //read
Si (a > energía) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
Goto beg;}
}
mientras que {} (1)
char bufr1 [5];
convertir 123 en cadena [buf]
;
char bufg1 [5];
convertir 123 en cadena [buf]
itoa (vec6 [0], bufg1, 10);
char bufb1 [5];
convertir 123 en cadena [buf]
itoa (vec6 [1], bufb1, 10);
LCD.Clear();
lcd.setCursor(0,1);
LCD.Print ("R:");
LCD.Print (itoa (vec6 [0], bufr1, 10));
LCD.Print ("G:");
LCD.Print (itoa (vec6 [1], bufg1, 10));
LCD.Print ("B:");
LCD.Print (itoa (vec6 [2], bufb1, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay(10);
Si (r > vec6[0]) {r--;} else
Si (r
Si (g > vec6[1]) {g--;} else
Si (g
Si (b > vec6[2]) {b--;} else
Si (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
bufr Char [5];
convertir 123 en cadena [buf]
;
bufg Char [5];
convertir 123 en cadena [buf]
itoa (g, bufg, 10);
char bufb [5];
convertir 123 en cadena [buf]
itoa (b, bufb, 10);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("R:");
LCD.Print (itoa (r, bufr, 10));
LCD.Print ("G:");
LCD.Print (itoa (g, bufg, 10));
LCD.Print ("B:");
LCD.Print (itoa (b, bufb, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay (10);
Si (i == vec6 [0] & & g == vec6 [1] & & rotura de la b==vec6[2]);
digitalWrite(8,HIGH); / / proporcionar ref V
un = analogRead (A5); //read
Si (a > energía) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
Goto beg;}
}
mientras que {} (1)
char bufr1 [5];
convertir 123 en cadena [buf]
;
char bufg1 [5];
convertir 123 en cadena [buf]
itoa (vec3 [0], bufg1, 10);
char bufb1 [5];
convertir 123 en cadena [buf]
itoa (vec3 [1], bufb1, 10);
LCD.Clear();
lcd.setCursor(0,1);
LCD.Print ("R:");
LCD.Print (itoa (vec3 [0], bufr1, 10));
LCD.Print ("G:");
LCD.Print (itoa (vec3 [1], bufg1, 10));
LCD.Print ("B:");
LCD.Print (itoa (vec3 [2], bufb1, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay(10);
Si (r > vec3[0]) {r--;} else
Si (r
Si (g > vec3[1]) {g--;} else
Si (g
Si (b > vec3[2]) {b--;} else
Si (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
bufr Char [5];
convertir 123 en cadena [buf]
;
bufg Char [5];
convertir 123 en cadena [buf]
itoa (g, bufg, 10);
char bufb [5];
convertir 123 en cadena [buf]
itoa (b, bufb, 10);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("R:");
LCD.Print (itoa (r, bufr, 10));
LCD.Print ("G:");
LCD.Print (itoa (g, bufg, 10));
LCD.Print ("B:");
LCD.Print (itoa (b, bufb, 10)); / / prins los valores de rgb led por usinf "itoa" función
itoa puede convertir un valor entero a una cadena
Delay (10);
Si (r == vec3 [0] & & g == vec3 [1] & & break b==vec3[2]); //the lazo pasado devuelve los enteros RGB a la referencia de este vector es fundamental
por lo que su no será ningún "saltos" en colores
digitalWrite(8,HIGH); / / proporcionar ref V
un = analogRead (A5); //read
Si (a > energía) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
Goto beg;}
}
Goto siguiente;
}
por favor observe que el código original era por una pantalla LCD que no está disponible y fue comprada aquí:
http://www.dan-e.co.il/index.php?Route=Common/Home
Observe también, que el programa mi contienen partes innecesarios y es construido "parche sobre parche" hay algún trabajo para hacer si desea que el código "limpio" mi también utilizar puertos diferentes en la ONU, sólo no olvides ajustar el código para esos cambios.
buena suerte :-)
Dekel Ziv