Ligne 1 : |
Ligne 1 : |
| {{MicroPython-Hack-Prepare-NAV}} | | {{MicroPython-Hack-Prepare-NAV}} |
| | | |
− | {{traduction}} | + | {{MicroPython-Hack-LDR-core}} |
− | | |
− | == Ce que nous faisons ==
| |
− | '''.: Les photorésistances :.'''
| |
− | | |
− | {{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
| |
− | les mêmes principes mais à la place du potentiomètre (résistance basée sur une torsion), nous utilisons une
| |
− | photorésistance (résistance basée sur la lumière). PyBoard ne peut pas directement percevoir la résistance (il perçoit la
| |
− | tension) donc nous utilisons un pont diviseur de tension pour créer une tension qui varie avec la résistance de la photo-résistance (résistance qui change avec l'intensité lumineuse).
| |
− | | |
− | La tension exacte sur la broche du senseur peut être calculée mais pour notre usage (juste percevoir la lumière relative), nous pouvons tester les valeurs et retenir celles qui nous conviennent.
| |
− | | |
− | Le senseur retourne une petite valeur lorsqu'il est bien éclairé et une grande valeur lorsqu'il est placé dans l'obscurité.
| |
− | }}
| |
− | | |
− | === Voir l'invite REPL ===
| |
− | Une petite note complémentaire, ce montage affiche des information via connexion série disponible sur le port USB de la PyBoard.
| |
− | | |
− | Il sera nécessaire de maîtriser [[MicroPython-Hack-REPL|L'invite REPL]] pour voir le résultat de vos mesures de températures.
| |
− | | |
− | [[Fichier:MicroPython-Hack-REPL-Python-exemple.jpg]]
| |
− | | |
− | == Le montage ==
| |
− | === Le matériel nécessaire ===
| |
− | {{ARDX-composant-begin}}
| |
− | | |
− | {{ARDX-composant
| |
− | |label=Photo-résistance
| |
− | |label2=x1
| |
− | |img=ARDX-PhotoResistance.png
| |
− | |pl=34
| |
− | }}
| |
− | | |
− | {{ARDX-composant
| |
− | |label=Fils
| |
− | |label2=
| |
− | |img=ARDX-fils.png
| |
− | |pl=34
| |
− | }}
| |
− | | |
− | {{ARDX-composant
| |
− | |label=Résistance de 100 Ohms (brun-noir-rbrun)
| |
− | |label2=x1
| |
− | |img=ARDX-R100.png
| |
− | |pl=43
| |
− | }}
| |
− | | |
− | {{ARDX-composant
| |
− | |label=Résistance de 10K Ohms (brun-noir-orange)
| |
− | |label2=x1
| |
− | |img=ARDX-R10K.png
| |
− | |pl=43
| |
− | }}
| |
− | | |
− | {{ARDX-composant
| |
− | |label=LED (ou DEL)
| |
− | |label2=x1
| |
− | |img=ARDX-LED-verte.png
| |
− | |pl=66
| |
− | }}
| |
− | | |
− | {{ARDX-composant-end}}
| |
− | Tous ces éléments sont disponibles sur [http://shop.mchobby.be shop.mchobby.be].
| |
− | | |
− | === Schéma ===
| |
− | [[Fichier:MicroPython-Hack-LDR-schema.png|250px]]
| |
− | | |
− | === Montage ===
| |
− | [[Fichier:MicroPython-Hack-LDR-montage.jpg|800px]]
| |
− | | |
− | == Le code ==
| |
− | Explications
| |
− | | |
− | <nowiki>ldr = pyb.ADC( 'X19' )
| |
− | while True:
| |
− | lecture = ldr.read()
| |
− | tension = (lecture * 3.3) / 4095
| |
− | print( 'valeur = %s, tension = %s volts' % (lecture, tension) )
| |
− | pyb.delay( 300 )</nowiki>
| |
− | | |
− | Code qui produit les résultats suivant:
| |
− | | |
− | <nowiki>valeur = 2728, tension = 2.198388 volts
| |
− | valeur = 2750, tension = 2.216117 volts
| |
− | valeur = 2762, tension = 2.225787 volts
| |
− | valeur = 2807, tension = 2.262051 volts
| |
− | valeur = 2795, tension = 2.252381 volts
| |
− | valeur = 2814, tension = 2.267692 volts
| |
− | valeur = 2799, tension = 2.255605 volts
| |
− | valeur = 2754, tension = 2.219341 volts
| |
− | valeur = 2287, tension = 1.843004 volts
| |
− | valeur = 1886, tension = 1.519853 volts
| |
− | valeur = 1919, tension = 1.546447 volts
| |
− | valeur = 1905, tension = 1.535165 volts
| |
− | valeur = 1910, tension = 1.539194 volts
| |
− | valeur = 1887, tension = 1.520659 volts
| |
− | valeur = 1815, tension = 1.462637 volts
| |
− | valeur = 1225, tension = 0.9871795 volts
| |
− | valeur = 680, tension = 0.5479854 volts
| |
− | valeur = 751, tension = 0.6052015 volts
| |
− | valeur = 819, tension = 0.6599999 volts
| |
− | valeur = 1766, tension = 1.42315 volts
| |
− | valeur = 1915, tension = 1.543223 volts
| |
− | valeur = 1903, tension = 1.533553 volts
| |
− | valeur = 1960, tension = 1.579487 volts
| |
− | valeur = 1976, tension = 1.592381 volts
| |
− | valeur = 1983, tension = 1.598022 volts
| |
− | valeur = 1988, tension = 1.602051 volts
| |
− | valeur = 1990, tension = 1.603663 volts
| |
− | valeur = 1991, tension = 1.604469 volts
| |
− | valeur = 1997, tension = 1.609304 volts</nowiki>
| |
− | | |
− | == Cela ne fonctionne pas? ==
| |
− | Voici 3 choses à essayer.
| |
− | === La LED reste éteinte ===
| |
− | 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.
| |
− | | |
− | Vérifiez si elle est bien à la bonne place.
| |
− | | |
− | === Ne fonctionne toujours pas? ===
| |
− | 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 ==
| |
− | {{traduction}}
| |
− | | |
− | === Inverser la réponse ===
| |
− | 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 ==
| |
− | xxx
| |
− | == Internet ==
| |
− | === .:téléchargement:. ===
| |
− | xxxx
| |
− | | |
| | | |
| {{MicroPython-Hack-MCH-TRAILER}} | | {{MicroPython-Hack-MCH-TRAILER}} |