Vous aurez besoin: 1. un Comité d’arduino uno
2. norme 16 * 2 LCD
3. common anode RGB LED
4. capteur de luminosité standard
Résistances de 5,10 K & 330 ohms
étape 1. connecter l’anode rgb a conduit à l’uno GND
2. Connectez les jambes verts & bleus rouges de la led à travers la résistance de 330 ohms à trois des ports PWM d’uno
3. Brancher le capteur de lumière du vcc au gnd à travers la résistance de 10K (de sorte que le capteur est « up »)
4. Brancher la deuxième jambe du capteur à A5 des entrées analogiques de l’ONU.
5. Branchez l’écran LCD (Regardez le code ou le changer pour le poste de connexions-voir file:///D:/My%20Documents/Arduino/arduino-1.0.1/reference/LiquidCrystalConstructor.html pour la référence)
6. après l’adjosments du code, compilez et gravez-le sur l’ONU et de votre fait:-)
Il y a beaucoup de créativité en remplaçant le détecteur de lumière par presque chaque capteur analogique... Profitez !
le code :
#include / / pour itoa() appel
#include
Innovente lcd (7, 6, 2, 3, 4, 5) ;
void setup() {}
LCD.Begin(16,2) ; Démarrer la bibliothèque
lcd.setCursor(0,0) ;
}
void loop() {}
int puissance = 150 ;
Beg:analogWrite(11,0) ;
analogWrite(10,0) ;
analogWrite(9,0) ;
digitalWrite(8,HIGH); / / fournissant Réf V
int a ;
un = analogRead (A5); //read la valeur
char bufg [5] ;
convertir une chaîne [buf]
EGTI (a, bufg, 10) ;
LCD.Print (itoa (a, bufg, 10)); //print valeur
retard (1000); //delay
LCD.Clear(); / / clear LCD pour l’itération suivante
Si (une > puissance) {goto mendier;} else {goto prochaine;} vérifier s’il y a lumière
suivant :
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 vecteur aléatoire, mais constant
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 la RGB vers reff vec
tandis que (1) {}
char bufr1 [5] ;
convertir 123 en chaîne [buf]
;
char bufg1 [5] ;
convertir 123 en chaîne [buf]
EGTI (vec1 [0], bufg1, 10) ;
char bufb1 [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
EGTI peut convertir une valeur integer en string
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 chaîne [buf]
;
char bufg [5] ;
convertir 123 en chaîne [buf]
EGTI (g, bufg, 10) ;
char bufb [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
EGTI peut convertir une valeur integer en string
retard (10) ;
Si (r == vec1 [0] & & g == vec1 [1] & & b==vec1[2]) Pause ; //this zooms de boucle les entiers de RVB vers la cible vector & le changement avec un retard de sortie
(se répète pour tous les vecteurs d’un après l’autre)
digitalWrite(8,HIGH); / / fournissant Réf V
un = analogRead (A5); //read
Si (une > puissance) {analogWrite(11,0) ;
analogWrite(10,0) ;
analogWrite(9,0) ;
Goto mendier;}
}
tandis que (1) {}
char bufr1 [5] ;
convertir 123 en chaîne [buf]
;
char bufg1 [5] ;
convertir 123 en chaîne [buf]
EGTI (vec2 [0], bufg1, 10) ;
char bufb1 [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
EGTI peut convertir une valeur integer en string
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 chaîne [buf]
;
char bufg [5] ;
convertir 123 en chaîne [buf]
EGTI (g, bufg, 10) ;
char bufb [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
ITOA peut convertir une vlue de nombre entier en chaîne
retard (10) ;
Si (r == vec2 [0] & & g == vec2 [1] & & b==vec2[2]) Pause ;
digitalWrite(8,HIGH); / / fournissant Réf V
un = analogRead (A5); //read
Si (une > puissance) {analogWrite(11,0) ;
analogWrite(10,0) ;
analogWrite(9,0) ;
Goto mendier;}
}
tandis que (1) {}
char bufr1 [5] ;
convertir 123 en chaîne [buf]
;
char bufg1 [5] ;
convertir 123 en chaîne [buf]
EGTI (vec4 [0], bufg1, 10) ;
char bufb1 [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
EGTI peut convertir une valeur integer en string
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 chaîne [buf]
;
char bufg [5] ;
convertir 123 en chaîne [buf]
EGTI (g, bufg, 10) ;
char bufb [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
ITOA peut convertir une vlue de nombre entier en chaîne
retard (10) ;
Si (r == vec4 [0] & & g == vec4 [1] & & b==vec4[2]) Pause ;
digitalWrite(8,HIGH); / / fournissant Réf V
un = analogRead (A5); //read
Si (une > puissance) {analogWrite(11,0) ;
analogWrite(10,0) ;
analogWrite(9,0) ;
Goto mendier;}
}
tandis que (1) {}
char bufr1 [5] ;
convertir 123 en chaîne [buf]
;
char bufg1 [5] ;
convertir 123 en chaîne [buf]
EGTI (vec5 [0], bufg1, 10) ;
char bufb1 [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
EGTI peut convertir une valeur integer en string
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 chaîne [buf]
;
char bufg [5] ;
convertir 123 en chaîne [buf]
EGTI (g, bufg, 10) ;
char bufb [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
ITOA peut convertir une vlue de nombre entier en chaîne
retard (10) ;
Si (r == vec5 [0] & & g == vec5 [1] & & b==vec5[2]) Pause ;
digitalWrite(8,HIGH); / / fournissant Réf V
un = analogRead (A5); //read
Si (une > puissance) {analogWrite(11,0) ;
analogWrite(10,0) ;
analogWrite(9,0) ;
Goto mendier;}
}
tandis que (1) {}
char bufr1 [5] ;
convertir 123 en chaîne [buf]
;
char bufg1 [5] ;
convertir 123 en chaîne [buf]
EGTI (vec6 [0], bufg1, 10) ;
char bufb1 [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
EGTI peut convertir une valeur integer en string
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 chaîne [buf]
;
char bufg [5] ;
convertir 123 en chaîne [buf]
EGTI (g, bufg, 10) ;
char bufb [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
ITOA peut convertir une vlue de nombre entier en chaîne
retard (10) ;
Si (r == vec6 [0] & & g == vec6 [1] & & b==vec6[2]) Pause ;
digitalWrite(8,HIGH); / / fournissant Réf V
un = analogRead (A5); //read
Si (une > puissance) {analogWrite(11,0) ;
analogWrite(10,0) ;
analogWrite(9,0) ;
Goto mendier;}
}
tandis que (1) {}
char bufr1 [5] ;
convertir 123 en chaîne [buf]
;
char bufg1 [5] ;
convertir 123 en chaîne [buf]
EGTI (vec3 [0], bufg1, 10) ;
char bufb1 [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
EGTI peut convertir une valeur integer en string
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 chaîne [buf]
;
char bufg [5] ;
convertir 123 en chaîne [buf]
EGTI (g, bufg, 10) ;
char bufb [5] ;
convertir 123 en chaîne [buf]
EGTI (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 les valeurs de RVB led par usinf « itoa » fonction
ITOA peut convertir une vlue de nombre entier en chaîne
retard (10) ;
Si (r == vec3 [0] & & g == vec3 [1] & & b==vec3[2]) Pause ; //the dernière boucle renvoie les entiers de RVB à la référence, ce vecteur est critique
donc leur ne sera pas n’importe quel « sauts » en couleurs
digitalWrite(8,HIGH); / / fournissant Réf V
un = analogRead (A5); //read
Si (une > puissance) {analogWrite(11,0) ;
analogWrite(10,0) ;
analogWrite(9,0) ;
Goto mendier;}
}
Goto prochaine ;
}
Veuillez noter que le code original était pour un écran LCD qui n’est pas disponible et a été acheté ici :
http://www.Dan-e.co.il/index.php?route=Common/Home
Notez également, que le programme mon contiennent des parties uneeded et est builed « patch traversons » donc il y a du travail à faire si vous voulez que le code soit « propre » vous mon également utiliser des ports différents à l’ONU, mais n’oubliez pas d’ajuster le code pour ces changements.
bonne chance:-)
Dekel Ziv