Exercice 1
Faire clignoter une
RGB (passage par 3 couleurs différentes) à fréquence variable (fréquence gérée
via un
capteur à Ultrason HC-SR04) et intensité variable (réglable par un potentiomètre).
Utiliser l’appel à une fonction pour déterminer la distance via le
capteur à Ultrason.
Remarque : Pour le capteur à Ultrason, 1cm = délai de 100 msec.
Loi linéaire.
solution :
#define echoPin 6 #define ledR 10 #define ledG 12 #define ledB 11 #define pot A0 long duration; int distanceCm; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(ledR, OUTPUT); pinMode(ledG, OUTPUT); pinMode(ledB, OUTPUT); Serial.begin(9600); } void distance() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin,
HIGH); distanceCm = duration*0.034/2; Serial.print("Distance:
"); Serial.print(distanceCm); Serial.println("
cm"); } void loop() { float valeur =
analogRead(pot); float valeurMap; valeurMap =
map(valeur,0,1023,0,255); Serial.println(valeurMap); distance(); analogWrite(ledB,LOW); analogWrite(ledR,valeurMap); delay(distanceCm*10); distance(); analogWrite(ledR,LOW); analogWrite(ledG,valeurMap); delay(distanceCm*10); distance(); analogWrite(ledG,LOW); analogWrite(ledB,valeurMap); delay(distanceCm*10); } |
Exercice 2:
Grâce à 3 BP, une barre LED RGB devra afficher le
spectre des couleurs. Un BP réglera l’intensité du rouge, un second l’intensité
du vert et un dernier l’intensité du bleu.
Lors d’un appui
sur un BP, la sortie PWM correspondante s’incrémentera de 10. Une fois la
valeur maximum atteinte, la PWM recommencera à 0.
Utiliser le
moniteur série pour afficher les valeurs des PWM (cet affichage s’effectuera
toutes les secondes.)
Attention : La barre LED s’alimente en 24
volts (courant 20 mA). Utiliser donc un transistor bipolaire (2N3904) pour
commander les LEDs.
Modification possible : Lorsque le PWM atteint son
maximum, il diminuera (plutôt que de repartir de 0)
solution :
int ledv=10; int pot2=4; int ledb=11; int pot3=7; int ledr=9; int vert=0; int rouge=0; int blue=0; int max; char
etatpot1; char
etatpot2; char
etatpot3; void
setup() { Serial.begin(9600); pinMode(pot1,INPUT); pinMode(ledr,OUTPUT); pinMode(pot2,INPUT); pinMode(ledb,OUTPUT); pinMode(pot3,INPUT); pinMode(ledv,OUTPUT); etatpot1= HIGH; etatpot2= HIGH; etatpot3= HIGH; max=80; } void
loop(){ etatpot1=digitalRead(pot1); etatpot2=digitalRead(pot2);
etatpot3=digitalRead(pot3); if(etatpot1==LOW) { vert=vert+10; analogWrite(ledv,vert); Serial.print(vert); Serial.print("-"); etatpot1++; delay(50); while (vert==max){ vert=0; etatpot1= HIGH; analogWrite(ledv,0); }
} if(etatpot2==LOW){ blue=blue+10; analogWrite(ledb,blue); Serial.print(blue); Serial.print("-"); etatpot2++; delay(50); while (blue==max){ vert=0; etatpot2= HIGH; analogWrite(ledb,0); } } if(etatpot3==LOW){ rouge=rouge+10; analogWrite(ledr,rouge); Serial.print(rouge); Serial.print("-"); etatpot3++; delay(50); while (rouge==max){ rouge=0; etatpot3= HIGH; analogWrite(ledr,0); }} } |
Exercice 3
Utiliser le capteur VMA 303 (capteur d’humidité analogique) pour
réaliser une alarme pour plante. Au-delà d’un certain seuil (simulant la
sècheresse de la plante), le buzzer commencera à émettre un son (choisir une
fréquence audible) et une LED se mettra à clignoter (utiliser la fonction
millis()).
Dès que la plante sera arrosée, le buzzer s’arrêtera et la LED
s’éteindra.
solution :
const char LED = 8; const char buzz = 5; int humidity; int preMillis=0; int led_pin=LOW; void setup() { Serial.begin(9600); // Moniteur Série pinMode(LED,OUTPUT);
//définir la const char en sortie OUTPUT pinMode(buzz,OUTPUT); noTone(buzz); } void
loop() {humidity
= analogRead(captHumidity); // Lit la valeur du captHumidity qui sera = a
humidity Serial.print("L'humidité est de :
"); // On affiche l'humidité Serial.println(humidity); if (humidity <100) // Si humidity est
plus grand que 100 { digitalWrite(LED,HIGH); // Eteindre la lampe noTone(buzz); // Arrete le buzzer } else { if( millis()-preMillis>100){
preMillis=millis();
if(led_pin==LOW) {
led_pin=HIGH;} else {
led_pin=LOW;}
digitalWrite(LED,led_pin);
tone(buzz,2000); // active le buzze }} } |
Modification : Remplacer le son à fréquence
fixe par un son composé de 5 fréquences différentes.
solution :
Modification : (on
peu ajouter une resistence 220ohms ontre le+ et ele chiffre) tone(buzz,
2093, 200); delay(200); tone(buzz, 1975, 200); delay(400); tone(buzz, 1975, 200); delay(200); tone(buzz, 2093, 200); delay(200); tone(buzz, 2349, 200); delay(400); |
Commentaires
Enregistrer un commentaire
Nous pouvons toujours vous aider et résoudre les exercices pour vous, il suffit de demander.