Modifications

Sauter à la navigation Sauter à la recherche
1 667 octets ajoutés ,  13 décembre 2015 à 11:58
Ligne 139 : Ligne 139 :     
=== Seuil d'allumage (threshold) ===
 
=== Seuil d'allumage (threshold) ===
Vous voulez parfois activer une sortie lorsqu'une valeur a atteint un certain seuil. Pour faire cela avec un potentiomètre, changez le code de {{fname|loop()}} comme suit :
+
Vous voulez parfois activer une sortie lorsqu'une valeur a atteint un certain seuil.  
   −
<nowiki>void loop() {
+
Dans cet exemple de programme, nous avons fait le choix délibéré d'utiliser un seuil en pourcentage. Nous aurions pu choisir la valeur 1843 produite par le convertisseur digital -> analogique.
  int threshold = 512; // seuil = 512
  −
  if(analogRead(sensorPin) > threshold){
  −
      digitalWrite(ledPin, HIGH);
  −
  }
  −
  else{
  −
      digitalWrite(ledPin, LOW);
  −
  }
  −
}</nowiki>
     −
Cela allumera la LED lorsque la valeur sera supérieure à 512 (mi-course), vous pouvez adapter la sensibilité en modifiant la valeur du seuil (la variable {{fname|threshold}} ).
+
1843 représente quand même 1843 / 4096 * 100 = 44.99% de la valeur maximale retournée par le convertisseur.
 +
 
 +
Si je vous dis, "mettez le potentiomètre à la valeur 1843!" ou "mettez le potentiomètre à 45%" vous remarquerez que la seconde expression est naturellement transposable en action physique.
 +
 
 +
Nous allons donc:
 +
# Réutiliser la fonction magique {{fname|arduino_map}} pour transformer la valeur du convertisseur analogique digital (0-4096) en valeur de 0 à 100.
 +
# Comparer la valeur obtenue à un seuil exprimé en "pourcentage", voyez la variable {{fname|seuil_pc}}
 +
 
 +
Pour faire cela avec un potentiomètre, changez le code de votre programme comme suit :
 +
 
 +
<nowiki># Lecture analogique pour contrôler allumer une LED sur base d'un seuil.
 +
# ATTENTION: échantillonnage 12 Bits (valeur de 0 à 4096)
 +
from pyb import Timer, delay
 +
 
 +
adc = pyb.ADC(pyb.Pin.board.X19)    # Créer ADC sur la broche  X19
 +
led = pyb.Pin(pyb.Pin.board.X1, pyb.Pin.OUT_PP ) # Créer la sortie pour la LED
 +
led.low()                          # Led éteinte
 +
seuil_pc = 45                      # seuil à 45%
 +
 
 +
# fonction qui permet de passer d'un range de valeur (in_) à une autre
 +
#    (out_) en appliquant une règle de trois.
 +
def arduino_map(x, in_min, in_max, out_min, out_max):
 +
    return int( (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min )
 +
 
 +
while True:
 +
# Lectures analogiques
 +
    ivalue = adc.read()
 +
   
 +
    # Transformer une valeur analogique (0 à 4096) en pourcent (0 à 100)
 +
    position_pc = arduino_map( ivalue, 0, 4096, 0, 100 )
 +
   
 +
    # Activer la sortie si plus grand que seuil
 +
    if position_pc > seuil_pc:
 +
led.high()
 +
    else:
 +
        led.low()
 +
   
 +
    delay( 100 )
 +
</nowiki>
 +
 
 +
Cela allumera la LED lorsque la valeur sera supérieure à 45% de la course du potentiomètre, vous pouvez adapter la sensibilité en modifiant la valeur du seuil (la variable {{fname|seuil_pc}}) avec une valeur entre 0 et 100.
    
=== Faire un Dimmer (fading) ===
 
=== Faire un Dimmer (fading) ===
29 880

modifications

Menu de navigation