Modifications

Sauter à la navigation Sauter à la recherche
4 113 octets ajoutés ,  23 février 2018 à 21:38
Ligne 1 : Ligne 1 :  
{{ARDX-NAV}}
 
{{ARDX-NAV}}
   −
.: Lumière :.
+
== Ce que nous faisons ==
 +
'''.: Lumière :.'''
   −
.: Les photorésistances :.
+
'''.: Les photorésistances :.'''
   −
== Ce que faisons nous ==
   
{{bloc-etroit|text=Acquérir une valeur en provenance d'un potentiomètre peut être utile pour une expérience contrôlée par un humain.
 
{{bloc-etroit|text=Acquérir une valeur en provenance d'un potentiomètre peut être utile pour une expérience contrôlée par un humain.
 
Mais que pouvons nous utiliser pour une expérience contrôlée par l'environnement lui-même? Nous gardons exactement
 
Mais que pouvons nous utiliser pour une expérience contrôlée par l'environnement lui-même? Nous gardons exactement
Ligne 38 : Ligne 38 :  
   |label2=x1
 
   |label2=x1
 
   |img=ARDX-PhotoResistance.png
 
   |img=ARDX-PhotoResistance.png
   |pl=34
+
   |pl=58
 
}}
 
}}
   Ligne 65 : Ligne 65 :  
   |label=LED (ou DEL)
 
   |label=LED (ou DEL)
 
   |label2=x1
 
   |label2=x1
   |img=ARDX-LED.png
+
   |img=ARDX-LED-verte.png
 
   |pl=66
 
   |pl=66
 
}}
 
}}
    
{{ARDX-composant-end}}
 
{{ARDX-composant-end}}
 +
Tous ces éléments sont disponibles dans [http://shop.mchobby.be/product.php?id_product=11 le Kit Ardx proposé sur shop.mchobby.be].
    
=== Schéma ===
 
=== Schéma ===
 +
<div style="margin: 15px 0; background: rgba(255,204,102,.3); display: block; padding: 15px 15px 15px 15px; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; border: 1px solid #ff9900;" >'''Attention:''' La LED est branchée sur la broche 9 d'Arduino... pas la broche 13 comme indiqué sur lr graphique ci-dessous.</div>
 
[[Fichier:circ09-schema.png|250px]]
 
[[Fichier:circ09-schema.png|250px]]
   Ligne 78 : Ligne 80 :     
== Le code ==
 
== Le code ==
xxx
+
Pas besoin de copier tout le code, vous pouvez le télécharger depuis
 +
 
 +
<nowiki>/*
 +
* Un programme simple qui modifie l'intensité
 +
* d'une LED en fonction de la quantité de
 +
* lumière frappant la photorésistance
 +
*/
 +
 
 +
// Pin de la photorésistance
 +
int lightPin = 0; // la broche analogique
 +
    // sur laquelle la photorésistance est connectée n'est pas calibrée
 +
    // pour une unité particulière . Il s'agit donc simplement de la valeur
 +
    // brute du senseur (lumière relative)
 +
 
 +
// Broche de la LED
 +
int ledPin = 9; //Pin sur laquelle la LED est
 +
    // branchée. Comme nous contrôlons la luminosité nous utilisons une des
 +
    // broches PWM (modulation de longueur d'impulsion)
 +
 
 +
void setup() {
 +
  // déclarer la pin de la LED comme sortie
 +
  pinMode(ledPin, OUTPUT);
 +
}
 +
 
 +
/*
 +
* loop() - cette fonction démarre après
 +
* l'initialisation puis se répète
 +
*/
 +
void loop() {
 +
  // lecture du taux d'éclairage
 +
  int lightLevel = analogRead(lightPin);
 +
 
 +
  // ajuste la valeur de 0 - 900 à 0 - 255
 +
  lightLevel = map(lightLevel, 0, 900, 0, 255);
 +
 
 +
  // Assure que la valeur est entre 0 - 255
 +
  lightLevel = constrain(lightLevel, 0, 255);
   −
<nowiki>/* code */</nowiki>
+
  // écrire la valeur
 +
  analogWrite(ledPin, lightLevel);
 +
}</nowiki>
    
== Cela ne fonctionne pas? ==
 
== Cela ne fonctionne pas? ==
 
Voici 3 choses à essayer.
 
Voici 3 choses à essayer.
=== xxx 1 ===
+
=== La LED reste éteinte ===
yyyy
+
C'est une erreur que nous continuons à faire de temps à autre, si seulement ils savaient faire des LEDs qui fonctionne dans les deux sens!
 +
 
 +
Sortez la et retournez la.
 +
 
 +
=== Ne réagit pas au changement de lumière ===
 +
Il est facile de mal placer la photorésistance parce que l'écartement des broches n'est pas standard.
   −
=== xxx 2 ===
+
Vérifiez si elle est bien à la bonne place.
yyyy
     −
=== xxx 3 ===
+
=== Ne fonctionne toujours pas? ===
yyyy
+
Vous êtes peut-être dans une pièce trop lumineuse ou trop sombre.
 +
 
 +
Essayez d'allumer et éteindre la lumière pour voir si cela aide.
 +
 
 +
Si vous avez une lampe de poche, tentez votre chance avec elle.
    
== Faire encore mieux ==
 
== Faire encore mieux ==
=== zzz 1 ===
+
=== Inverser la réponse ===
zzzz
+
Vous voudriez peut-être une réponse inversée. Pas de problème nous pouvons facilement inverser cette réponse en changeant:
 +
<nowiki>analogWrite(ledPin, lightLevel);</nowiki>
 +
 
 +
vers
 +
 
 +
<nowiki>analogWrite(ledPin, 255 - lightLevel);</nowiki>
 +
 
 +
Chargez le programme et notez la modification de la réponse.
 +
 
 +
=== La veilleuse ===
 +
Plutôt que de contrôler la luminosité d'une LED en réponse à la lumière, essayons plutôt de l'allumer ou l'éteindre en fonction d'un seuil.
 +
 
 +
Changer le code de {{fname|loop()}} avec....
 +
 
 +
<nowiki>void loop(){
 +
  int threshold = 300; // valeur du seuil
 +
  if(analogRead(lightPin) > threshold)
 +
  {
 +
      digitalWrite(ledPin, HIGH);
 +
  }
 +
  else{
 +
      digitalWrite(ledPin, LOW);
 +
  }
 +
}</nowiki>
 +
 
 +
=== Un servo contrôlé par la lumière ===
 +
Utilisons notre toute nouvelle compétence sur les senseurs de lumière pour contrôler un servo (et en même temps en apprendre un peu plus sur la programmation Arduino).
 +
 
 +
Connectez un servo moteur sur la pin 9 (comme au CIRC-04).
 +
 
 +
Ouvrez ensuite l'exemple « Knob » (le même que nous avons utilisé dans CIRC-08)
 +
 
 +
'''Fichier > Exemples > Servo > Knob'''
 +
 
 +
Chargez le code sur la carte et regardez comment il fonctionne sans aucune modification supplémentaire.
 +
 
 +
=== Utiliser toute la portée angulaire du servo moteur ===
 +
Vous noterez que le servo n'utilise qu'une partie limité de sa rotation angulaire.
 +
 
 +
C'est parce qu'avec le pont diviseur de tension que nous utilisons, la tension sur la pin 0 ne varie pas de 0 à 5 volts mais entre deux valeurs plus petites (valeurs qui dépendent de votre montage).
 +
 
 +
Pour corriger cela, modifiez et testez vos propres valeurs avec la ligne
 +
 
 +
<nowiki>val = map(val, 0, 1023, 0, 179);</nowiki>
 +
 
 +
Pour des astuces sur ce qu'il faut faire, visitez [http://arduino.cc/en/Reference/Map arduino.cc/en/Reference/Map] (''anglais'')
    
== Plus, plus et encore plus ==
 
== Plus, plus et encore plus ==
29 836

modifications

Menu de navigation