Différences entre versions de « ARDX-Montages-CIRC09 »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(2 versions intermédiaires par le même utilisateur non affichées)
Ligne 38 : Ligne 38 :
 
   |label2=x1
 
   |label2=x1
 
   |img=ARDX-PhotoResistance.png
 
   |img=ARDX-PhotoResistance.png
   |pl=34
+
   |pl=58
 
}}
 
}}
  
Ligne 73 : Ligne 73 :
  
 
=== 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]]
  

Version actuelle datée du 23 février 2018 à 21:38


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Ce que nous faisons

.: Lumière :.

.: Les photorésistances :.

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). Arduino ne peut pas directement percevoir la résistance (il perçoit la tension) donc nous utilisons un pont diviseur de tension (ardx.org/VODI anglais). 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é.

Le montage

Le matériel nécessaire

ARDX-circ-sheet.png

Fiche de montage CIRC-09
x1

ARDX-pin-header.png

2 Pin header
x4

ARDX-PhotoResistance.png

Photo-résistance
x1

ARDX-R560.png

Résistance de 560 Ohms (vert-bleu-brun)
x1

ARDX-R10K.png

Résistance de 10K Ohms (brun-noir-orange)
x1

ARDX-LED-verte.png

LED (ou DEL)
x1

 

Tous ces éléments sont disponibles dans le Kit Ardx proposé sur shop.mchobby.be.

Schéma

Attention: La LED est branchée sur la broche 9 d'Arduino... pas la broche 13 comme indiqué sur lr graphique ci-dessous.

Circ09-schema.png

Montage

Cir09-montage.png

Le code

Pas besoin de copier tout le code, vous pouvez le télécharger depuis

/*
 * 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);
}

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

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:

analogWrite(ledPin, lightLevel);

vers

analogWrite(ledPin, 255 - lightLevel);

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 loop() avec....

void loop(){
   int threshold = 300; // valeur du seuil
   if(analogRead(lightPin) > threshold)
   {
      digitalWrite(ledPin, HIGH);
   }
   else{
      digitalWrite(ledPin, LOW);
   }
}

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

val = map(val, 0, 1023, 0, 179);

Pour des astuces sur ce qu'il faut faire, visitez arduino.cc/en/Reference/Map (anglais)

Plus, plus et encore plus

Plus d'information, où poser vos autres questions:

ardx.org/CIRC09 (anglais)

Internet

.:téléchargement:.

LA fiche de montage est disponible sur ardx.org/BBLS09

.: Vidéo :.

La vidéo du montage est disponible sur ardx.org/VIDE09 (anglais)


Tutoriel/Manuel traduit par Meurisse D. pour MCHobby.be licence Creative Commons BY-SA.

Crédit de traduction
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (shop.MCHobby.be) - Vente de kit et composants » et ce quelque soit le média utilisé.

Utilisation commerciale
L'utilisation commercial de cette traduction (y compris sur site produisant des revenus par l'intermédiaire de publicité), même partielle, est soumise à redevance (license fee).


Le présent manuel a été traduit et autorisé à la vente avec l'aimable autorisation conjointe de Oomlout (www.oomlout.com) et d'AdaFruit (www.adafruit.com).

Produit sous licence Creative Commons BY-SA License and available for download: ardx.org/src/