Cours:ArduinoAnalog : Différence entre versions
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 | + | {{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[ | + | char pinListe[3]={A2,A3,A4}; |
+ | char * typeMesure[3]={"PCR = ","LDR = ","CTN = "}; | ||
</source> | </source> | ||
Version actuelle datée du 6 novembre 2014 à 08:25
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
Sommaire
Ex 1: Découverte
Recopier le programme donné en exemple et constater son fonctionnement
Ajouter un message indiquant le type de capteur. (Ex d'affichage souhaité : Température = 500)
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%.
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);
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.
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);
}
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.