Modifications

Sauter à la navigation Sauter à la recherche
6 386 octets supprimés ,  20 février 2016 à 17:14
Contenu remplacé par « {{MicroPython-Hack-Prepare-NAV}} {{MicroPython-Hack-LDR-core}} {{MicroPython-Hack-MCH-TRAILER}} »
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}}
31 005

modifications

Menu de navigation