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 70 : |
Ligne 70 : |
| | | |
| {{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 80 : |
Ligne 82 : |
| Pas besoin de copier tout le code, vous pouvez le télécharger depuis | | Pas besoin de copier tout le code, vous pouvez le télécharger depuis |
| | | |
− | <nowiki>www</nowiki> | + | <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); |
| + | |
| + | // é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 == |