Cours:ArduinoAnalog : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
m ({{Bleu|Ex 3: Fonction %}})
 
Ligne 21 : Ligne 21 :
 
{{Question|Ajouter}} [http://arduino.cc/en/Serial/Print un message] indiquant le type de capteur. (Ex d'affichage souhaité : Température = 500)
 
{{Question|Ajouter}} [http://arduino.cc/en/Serial/Print un message] indiquant le type de capteur. (Ex d'affichage souhaité : Température = 500)
  
{{Question|Modifier le programme précédent pour afficher successivement la valeur des 4 capteurs}}
+
{{Question|Modifier le programme précédent pour afficher successivement la valeur des 3 capteurs}}
  
 +
 +
'''Remarque :'''
 
Vous pourrez astucieusement vous servir d'un tableau comme :
 
Vous pourrez astucieusement vous servir d'un tableau comme :
 
<source lang=c>
 
<source lang=c>
char * typeMesure[4]={"PCR = ","LDR = ","CTN = ","U = "};
+
char  pinListe[3]={A2,A3,A4};
 +
char * typeMesure[3]={"PCR = ","LDR = ","CTN = "};
 
</source>
 
</source>
  

Version actuelle datée du 6 novembre 2014 à 08:25

Retour à la liste des Tps

Éléments de correction


Nous avons exploré dans les Tps précédents les e/s binaires. Ici nous nous intéresserons aux entrées analogiques et utiliserons la fonction analogRead() permettant de lire l'état d'une des entrées analogiques.


La carte d'extension que nous utilisons possèdent plusieurs capteurs délivrant des signaux analogiques variant au maximum entre 0V et 5V.


Vous utiliserez la liaison série afin de vérifier le bon fonctionnement de votre programme


Ex 1: Découverte

Todo.jpg Recopier le programme donné en exemple et constater son fonctionnement

Question.jpg Ajouter un message indiquant le type de capteur. (Ex d'affichage souhaité : Température = 500)

Question.jpg Modifier le programme précédent pour afficher successivement la valeur des 3 capteurs


Remarque : Vous pourrez astucieusement vous servir d'un tableau comme :

char  pinListe[3]={A2,A3,A4};
char * typeMesure[3]={"PCR = ","LDR = ","CTN = "};

Ex 2: Extremums

Nous ne nous intéresserons dans cette partie qu'au capteur de luminosité. L'objectif est d'afficher la valeur mesurée en pourcentage de la valeur maximum d'éclairement mesurée. Il s'agit donc de réussir à trouver les valeurs min et max de l'éclairement.

Si la valeur actuellement mesurée est

  • la valeur min, on affichera 0%.
  • la valeur max, on affichera 100%.

Question.jpg Réaliser le programme correspondant

Ex 3: Fonction %

Une valeur en pourcentage ne dépend que des valeurs minimum, maximum et de la mesure. On peut donc écrire le prototype de la foncion comme suit :

// 0 < val,min,max < 1024 (car conversion sur 10 bits)
// par contre on retourne unsigned char car entre 0 et 100
unsigned char valPourcent(int val, int min, int max);

Question.jpg Modifier votre programme pour utiliser la fonction valPourcent(), que vous implémenterez.

Ex 4: Affichage

Plutôt que d'afficher la valeur des capteurs sur la liaison série, on souhaite faire un affichage directement sur la carte. Vous avez le choix entre l'utilisation des leds ou des afficheurs 7 segements.

Question.jpg En utilisant les Tps précédents (7segts,chenillard) réaliser cet affichage.

Ex 5: Etalonnage du photo-coupleur

La relation entre la valeur donnée par un capteur et la valeur que l'on cherche à mesurer n'est pas toujours linéaire. Faire une étude à partir du programme simple ci-dessous de la linéarité ou non de votre capteur.

Pour une surface donnée (qui restera la même) comme une main ou une feuille de papier, on vous demande de réaliser un programme qui transforme la valeur donnée par la conversion en une valeur en millimètre qui nous intéresse beaucoup plus en général.

void setup()
{
  Serial.begin(9600);
}
 
void loop()
{
  Serial.print("Photocoupleur : ");
  Serial.println(analogRead(A2),DEC);
  delay(500);  
}

Question.jpg Pour une surface donnée (qui reste la même toujours) comme une main ou une feuille de papier, on vous demande de réaliser un programme qui transforme la valeur donnée par la conversion en une valeur en millimètre. Montrer à l'enseignant votre résultat.