Étape 2: Temps de code !
Écrire le code ci-dessus sur le programme Arduino.Plus sombre la lumière ambiante est, le plus élevé est la valeur lue de la LDR.
J’ai utilisé PWM à conduit le changement de luminosité.
Lampe de humeur lisse RGB
Change de couleur d’une LED RGB douceur qui ne tourne que sur
quand il fait sombre autour d’elle.
Auteur : Ricardo Ouvina
Date : 19/07/2012
Version : 2.0
// ---------------------------------------------------
La luminosité des leds suit ces équations :
Rouge = Sin (x)
Vert = sin (x + PI/3)
Bleu = sin (x + 2PI/3)
pour x de 0 à PI
// ---------------------------------------------------
flotteur RVB [3] ;
int ldrPin = 0 ; LDR en entrée analogique 0 à lire à la lumière ambiante
ambientLight int ; variable pour stocker la valeur de la lumière ambiante
int redLed = 11 ; LED rouge en numérique Pin 11 (PWM)
Qu’int = 10 ; LED verte en numérique Pin 10 (PWM)
int blueLed = 9 ; LED bleue en numérique broche 9 (PWM)
void setup() {}
pinMode(redLed,OUTPUT) ; dire qu’arduino c’est une sortie
pinMode(greenLed,OUTPUT); / / dire arduino c’est une sortie
pinMode(blueLed,OUTPUT) ; dire qu’arduino c’est une sortie
la valeur de toutes les sorties à faible
digitalWrite(redLed,LOW) ;
digitalWrite(greenLed,LOW) ;
digitalWrite(blueLed,LOW) ;
}
void loop() {}
pour (float x = 0; x < PI; x = x + 0,00001) {}
RGB[0]=255*ABS(Sin(x*(180/pi))) ; calculer la luminosité de la led rouge
RGB[1]=255*ABS(Sin((x+pi/3)*(180/pi))) ; calculer la luminosité de la led verte
RGB[2]=255*ABS(Sin((x+(2*pi)/3)*(180/pi))); / / calculer la luminosité de la led bleue
ambientLight=analogRead(ldrPin) ; lire un magasin de la lumière ambiante
if(ambientLight>600) {/ / start seulement si la lumière ambiante est très faible
écrire la luminosité des voyants
analogWrite(redLed,RGB[0]) ;
analogWrite(greenLed,RGB[1]) ;
analogWrite(blueLed,RGB[2]) ;
}
else {}
digitalWrite(redLed,LOW) ;
digitalWrite(greenLed,LOW) ;
digitalWrite(blueLed,LOW) ;
}
pour (int i = 0; i < 3; i ++) {}
Si (RVB [i] < 1) {}
Delay(100) ;
}
Si (RVB [i] < 5) {}
Delay(50) ;
}
Si (RVB [i] < 10) {}
Delay(10) ;
}
Si (RVB [i] < 100) {}
Delay(5) ;
}
}
Delay(1) ;
}
}