U zult moeten: 1. een arduino uno board
2. standaard 16 * 2 LCD
3. gemeenschappelijke anode RGB LED
4. standaard lichtsensor
5.10K & 330 ohm weerstanden
stap 1. de rgb led anode verbinden met de uno GND
2. Sluit de rode groen & blauwe benen van de led door de weerstand van 330 ohm tot drie van de PWM-poorten van de uno
3. Sluit de lichtsensor van vcc aan gnd via 10K Ohm weerstand (zodat de sensor is "up")
4. Sluit de tweede etappe van de sensor aan de analoge ingang van de A5 voor uno.
5. verbind ik het LCD (kijk naar de code of wijzigen naar de positie van verbindingen-Zie file:///D:/My%20Documents/Arduino/arduino-1.0.1/reference/LiquidCrystalConstructor.html voor referentie)
6. na het adjosments van het Wetboek, compileren en brandwond op voor de UNO en je bent klaar :-)
Er is veel voor creativiteit in de vervanging van de licht detector door bijna elke analoge sensor... Geniet van!
de code:
#include / / voor itoa() gesprek
#include
LiquidCrystal lcd (7, 6, 2, 3, 4, 5);
VOID Setup {}
LCD.begin(16,2); Start de bibliotheek
lcd.setCursor(0,0);
}
void loop {}
int macht = 150;
Beg:analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
digitalWrite(8,HIGH); / / verstrekken van ref V
int;
een = analogRead (A5); //read de waarde
char bufg [5];
converteert een tekenreeks [buf]
Itoa (a, bufg, 10);
LCD.Print (itoa (a, bufg, 10)); //print waarde
vertraging (1000); //delay
LCD.Clear(); / / clear LCD voor de volgende iteratie
Als (een > macht) {goto smeken;} else {goto komende;} Controleer of er licht
volgende:
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 vector-random, maar 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 van de RGB naar reff vec
terwijl (1) {}
char bufr1 [5];
123 converteren naar tekenreeks [buf]
;
char bufg1 [5];
123 converteren naar tekenreeks [buf]
Itoa (vec1 [0], bufg1, 10);
char bufb1 [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een geheel getal converteren naar een tekenreeks
delay(10);
Als (r > vec1[0]) {r--;} else
Als (r
Als (g > vec1[1]) {g--;} else
Als (g
Als (b > vec1[2]) {b--;} else
Als (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5];
123 converteren naar tekenreeks [buf]
;
char bufg [5];
123 converteren naar tekenreeks [buf]
Itoa (g, bufg, 10);
char bufb [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een geheel getal converteren naar een tekenreeks
vertraging (10);
Als (r == vec1 [0] & & g == vec1 [1] & & b==vec1[2])-einde; //this lus zoomt de gehele getallen van RGB naar het doel vector & output van de verandering met vertraging
(wordt herhaald voor alle vectoren een na de ander)
digitalWrite(8,HIGH); / / verstrekken van ref V
een = analogRead (A5); //read
Als (een > macht) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
goto smeken;}
}
terwijl (1) {}
char bufr1 [5];
123 converteren naar tekenreeks [buf]
;
char bufg1 [5];
123 converteren naar tekenreeks [buf]
Itoa (vec2 [0], bufg1, 10);
char bufb1 [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een geheel getal converteren naar een tekenreeks
delay(10);
Als (r > vec2[0]) {r--;} else
Als (r
Als (g > vec2[1]) {g--;} else
Als (g
Als (b > vec2[2]) {b--;} else
Als (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5];
123 converteren naar tekenreeks [buf]
;
char bufg [5];
123 converteren naar tekenreeks [buf]
Itoa (g, bufg, 10);
char bufb [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een vlue geheel getal converteren naar een tekenreeks
vertraging (10);
Als (r == vec2 [0] & & g == vec2 [1] & & b==vec2[2]) onderbreking;
digitalWrite(8,HIGH); / / verstrekken van ref V
een = analogRead (A5); //read
Als (een > macht) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
goto smeken;}
}
terwijl (1) {}
char bufr1 [5];
123 converteren naar tekenreeks [buf]
;
char bufg1 [5];
123 converteren naar tekenreeks [buf]
Itoa (vec4 [0], bufg1, 10);
char bufb1 [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een geheel getal converteren naar een tekenreeks
delay(10);
Als (r > vec4[0]) {r--;} else
Als (r
Als (g > vec4[1]) {g--;} else
Als (g
Als (b > vec4[2]) {b--;} else
Als (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5];
123 converteren naar tekenreeks [buf]
;
char bufg [5];
123 converteren naar tekenreeks [buf]
Itoa (g, bufg, 10);
char bufb [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een vlue geheel getal converteren naar een tekenreeks
vertraging (10);
Als (r == vec4 [0] & & g == vec4 [1] & & b==vec4[2]) onderbreking;
digitalWrite(8,HIGH); / / verstrekken van ref V
een = analogRead (A5); //read
Als (een > macht) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
goto smeken;}
}
terwijl (1) {}
char bufr1 [5];
123 converteren naar tekenreeks [buf]
;
char bufg1 [5];
123 converteren naar tekenreeks [buf]
Itoa (vec5 [0], bufg1, 10);
char bufb1 [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een geheel getal converteren naar een tekenreeks
delay(10);
Als (r > vec5[0]) {r--;} else
Als (r
Als (g > vec5[1]) {g--;} else
Als (g
Als (b > vec5[2]) {b--;} else
Als (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5];
123 converteren naar tekenreeks [buf]
;
char bufg [5];
123 converteren naar tekenreeks [buf]
Itoa (g, bufg, 10);
char bufb [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een vlue geheel getal converteren naar een tekenreeks
vertraging (10);
Als (r == vec5 [0] & & g == vec5 [1] & & b==vec5[2]) onderbreking;
digitalWrite(8,HIGH); / / verstrekken van ref V
een = analogRead (A5); //read
Als (een > macht) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
goto smeken;}
}
terwijl (1) {}
char bufr1 [5];
123 converteren naar tekenreeks [buf]
;
char bufg1 [5];
123 converteren naar tekenreeks [buf]
Itoa (vec6 [0], bufg1, 10);
char bufb1 [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een geheel getal converteren naar een tekenreeks
delay(10);
Als (r > vec6[0]) {r--;} else
Als (r
Als (g > vec6[1]) {g--;} else
Als (g
Als (b > vec6[2]) {b--;} else
Als (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5];
123 converteren naar tekenreeks [buf]
;
char bufg [5];
123 converteren naar tekenreeks [buf]
Itoa (g, bufg, 10);
char bufb [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een vlue geheel getal converteren naar een tekenreeks
vertraging (10);
Als (r == vec6 [0] & & g == vec6 [1] & & b==vec6[2]) onderbreking;
digitalWrite(8,HIGH); / / verstrekken van ref V
een = analogRead (A5); //read
Als (een > macht) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
goto smeken;}
}
terwijl (1) {}
char bufr1 [5];
123 converteren naar tekenreeks [buf]
;
char bufg1 [5];
123 converteren naar tekenreeks [buf]
Itoa (vec3 [0], bufg1, 10);
char bufb1 [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een geheel getal converteren naar een tekenreeks
delay(10);
Als (r > vec3[0]) {r--;} else
Als (r
Als (g > vec3[1]) {g--;} else
Als (g
Als (b > vec3[2]) {b--;} else
Als (b
analogWrite(11,b);
analogWrite(10,g);
analogWrite(9,r);
char bufr [5];
123 converteren naar tekenreeks [buf]
;
char bufg [5];
123 converteren naar tekenreeks [buf]
Itoa (g, bufg, 10);
char bufb [5];
123 converteren naar tekenreeks [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 de waarden voor rgb led door usinf "itoa"-functie
Itoa kan een vlue geheel getal converteren naar een tekenreeks
vertraging (10);
Als (r == vec3 [0] & & g == vec3 [1] & & b==vec3[2])-einde; //the laatste lus geeft als resultaat de RGB gehele getallen tot de referentie vector-dit is van cruciaal belang
dus hun zullen niet alle "sprongen" in de kleuren
digitalWrite(8,HIGH); / / verstrekken van ref V
een = analogRead (A5); //read
Als (een > macht) {analogWrite(11,0);
analogWrite(10,0);
analogWrite(9,0);
goto smeken;}
}
goto volgende;
}
Neem merk op dat de oorspronkelijke code was voor een LCD schild dat is niet beschikbaar en hier werd gekocht:
http://www.dan-e.co.Il/index.php?route=common/Home
ook opmerken, dat het programma mijn uneeded delen bevatten en is builed "patch over patch" dus er wat werk is te doen als u wilt dat de code "schoon" u mijn ook gebruik maken van verschillende havens in het uno, vergeet dan niet om de code voor deze wijzigingen.
goed geluk :-)
Dekel Ziv