RGB LED ändring av färger + ljussensor + LCD
Behöver du: 1. en arduino uno ombord
2. standard 16 * 2 LCD
3. gemensam anod RGB LED
4. standard ljussensor
5.10 Karlsson & 330 ohm motstånd
steg 1. ansluta rgb ledde anoden till uno GND
2. Anslut de röda grön & blå ben av led genom 330 ohm resistor till tre PWM hamnar i uno
3. Anslut ljussensorn från vcc till gnd genom 10K resistor (så att sensorn är "up")
4. Anslut den andra delen av sensorn till A5 analog ingång av uno.
5. Anslut LCD (titta på koden eller ändra den för placera av anslutningar-se file:///D:/My%20Documents/Arduino/arduino-1.0.1/reference/LiquidCrystalConstructor.html för referens)
6. efter adjosments i koden, sammanställa och bränna den till UNO och din gjort :-)
Det finns en hel del för kreativitet i att ersätta de ljus detektorn av nästan varje analog sensor... Njut!
koden:
#include / / för itoa() samtal
#include
LiquidCrystal lcd (7, 6, 2, 3, 4, 5);
void setup() {
LCD.BEGIN(16,2); Starta biblioteket
lcd.setCursor(0,0);
}
void loop() {
int power = 150;
beg:analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
digitalWrite(8,HIGH); / / som tillhandahåller ref V
int a;
en = analogRead (A5); //read värdet
char bufg [5].
konvertera en sträng [buf]
itoa (en, bufg, 10);
LCD.Print (itoa (en, bufg, 10)), //print värde
fördröjning (1000); //delay
LCD.Clear(); / / clear LCD för nästa iteration
om (en > power) {goto tigga;} annat {goto nästa;} Kontrollera om det finns ljus
Nästa:
int vec2[3]={random(255),random(130),random(30)}; //random vec2
int vec1[3]={random(255),random(130),random(30)}; //random vec1
int vec3 [3] = {234,100,20}; //reff vektor-random, men konstant
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 av RGB till reff vec
samtidigt (1) {
char bufr1 [5].
konvertera 123 strängen [buf]
;
char bufg1 [5].
konvertera 123 strängen [buf]
itoa (vec1 [0], bufg1, 10);
char bufb1 [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera ett heltal till en sträng
Delay(10);
om (r > vec1[0]) {r--;} annat
om (r
om (g > vec1[1]) {g--;} annat
om (g
om (b > vec1[2]) {b--;} annat
om (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5].
konvertera 123 strängen [buf]
;
char bufg [5].
konvertera 123 strängen [buf]
itoa (g, bufg, 10);
char bufb [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera ett heltal till en sträng
fördröjning (10).
om (r == vec1 [0] & & g == vec1 [1] & & b==vec1[2]) break; //this loop zoomar RGB heltalen till målet vektor & utgång ändringen med fördröjning
(upprepas för alla vektorer en efter den andra)
digitalWrite(8,HIGH); / / som tillhandahåller ref V
en = analogRead (A5), //read
om (en > power) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
gå till tigga;}
}
samtidigt (1) {
char bufr1 [5].
konvertera 123 strängen [buf]
;
char bufg1 [5].
konvertera 123 strängen [buf]
itoa (vec2 [0], bufg1, 10);
char bufb1 [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera ett heltal till en sträng
Delay(10);
om (r > vec2[0]) {r--;} annat
om (r
om (g > vec2[1]) {g--;} annat
om (g
om (b > vec2[2]) {b--;} annat
om (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5].
konvertera 123 strängen [buf]
;
char bufg [5].
konvertera 123 strängen [buf]
itoa (g, bufg, 10);
char bufb [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera vlue ett heltal till en sträng
fördröjning (10).
om (r == vec2 [0] & & g == vec2 [1] & & b==vec2[2]) semester.
digitalWrite(8,HIGH); / / som tillhandahåller ref V
en = analogRead (A5), //read
om (en > power) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
gå till tigga;}
}
samtidigt (1) {
char bufr1 [5].
konvertera 123 strängen [buf]
;
char bufg1 [5].
konvertera 123 strängen [buf]
itoa (vec4 [0], bufg1, 10);
char bufb1 [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera ett heltal till en sträng
Delay(10);
om (r > vec4[0]) {r--;} annat
om (r
om (g > vec4[1]) {g--;} annat
om (g
om (b > vec4[2]) {b--;} annat
om (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5].
konvertera 123 strängen [buf]
;
char bufg [5].
konvertera 123 strängen [buf]
itoa (g, bufg, 10);
char bufb [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera vlue ett heltal till en sträng
fördröjning (10).
om (r == vec4 [0] & & g == vec4 [1] & & b==vec4[2]) semester.
digitalWrite(8,HIGH); / / som tillhandahåller ref V
en = analogRead (A5), //read
om (en > power) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
gå till tigga;}
}
samtidigt (1) {
char bufr1 [5].
konvertera 123 strängen [buf]
;
char bufg1 [5].
konvertera 123 strängen [buf]
itoa (vec5 [0], bufg1, 10);
char bufb1 [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera ett heltal till en sträng
Delay(10);
om (r > vec5[0]) {r--;} annat
om (r
om (g > vec5[1]) {g--;} annat
om (g
om (b > vec5[2]) {b--;} annat
om (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5].
konvertera 123 strängen [buf]
;
char bufg [5].
konvertera 123 strängen [buf]
itoa (g, bufg, 10);
char bufb [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera vlue ett heltal till en sträng
fördröjning (10).
om (r == vec5 [0] & & g == vec5 [1] & & b==vec5[2]) semester.
digitalWrite(8,HIGH); / / som tillhandahåller ref V
en = analogRead (A5), //read
om (en > power) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
gå till tigga;}
}
samtidigt (1) {
char bufr1 [5].
konvertera 123 strängen [buf]
;
char bufg1 [5].
konvertera 123 strängen [buf]
itoa (vec6 [0], bufg1, 10);
char bufb1 [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera ett heltal till en sträng
Delay(10);
om (r > vec6[0]) {r--;} annat
om (r
om (g > vec6[1]) {g--;} annat
om (g
om (b > vec6[2]) {b--;} annat
om (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5].
konvertera 123 strängen [buf]
;
char bufg [5].
konvertera 123 strängen [buf]
itoa (g, bufg, 10);
char bufb [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera vlue ett heltal till en sträng
fördröjning (10).
om (r == vec6 [0] & & g == vec6 [1] & & b==vec6[2]) semester.
digitalWrite(8,HIGH); / / som tillhandahåller ref V
en = analogRead (A5), //read
om (en > power) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
gå till tigga;}
}
samtidigt (1) {
char bufr1 [5].
konvertera 123 strängen [buf]
;
char bufg1 [5].
konvertera 123 strängen [buf]
itoa (vec3 [0], bufg1, 10);
char bufb1 [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera ett heltal till en sträng
Delay(10);
om (r > vec3[0]) {r--;} annat
om (r
om (g > vec3[1]) {g--;} annat
om (g
om (b > vec3[2]) {b--;} annat
om (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5].
konvertera 123 strängen [buf]
;
char bufg [5].
konvertera 123 strängen [buf]
itoa (g, bufg, 10);
char bufb [5].
konvertera 123 strängen [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 värden för rgb led av usinf "itoa" funktion
itoa kan konvertera vlue ett heltal till en sträng
fördröjning (10).
om (r == vec3 [0] & & g == vec3 [1] & & b==vec3[2]) break; //the sista slinga returnerar RGB heltalen till hänvisning vektor-detta är kritiska
så deras kommer inte att vara någon "hopp" i färger
digitalWrite(8,HIGH); / / som tillhandahåller ref V
en = analogRead (A5), //read
om (en > power) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
gå till tigga;}
}
gå till nästa;
}
Vänligen uppmärksamma att den ursprungliga koden för en LCD sköld som inte är tillgänglig och köptes här:
http://www.Dan-e.co.Il/index.php?Route=common/Home
också märka, att programmet min uneeded på delar och är uppfört "patch över patch" så det finns lite arbete för att göra om du vill att koden till vara "ren" du min också använda olika portar på uno, glöm bara inte att justera koden för dessa förändringar.
bra lycka till :-)
Dekel Ziv