6.5 Conversion A/N |
Sous Flowcode, pour réaliser une Conversion Analogique/Numérique à l'aide d'un microcontrôleur, il faut ajouter au "Panneau tableau de bord" un composant de type "Potentiometer" qui se trouve dans la "Boîte Outils Composants" pictogramme "Inputs"
Dés lors, dans la partie "Macros" des Propriétés du composant, apparaissent les nouvelles fonctions disponibles pour gérer une Conversion Analogique/Numérique. Avec entre autres: GetInt, retourne un nombre, résultat de la conversion (sur 10bits) GetVoltage, retourne un nombre en virgule flottante, directement représentatif de la Tension (en Volt) GetByte, retourne un nombre (octet), résultat de la conversion (sur 8bits donc) |
Exemple: Réalisation d'un Voltmètre à affichage Numérique
Simulation sous Proteus 8
Téléchargement du schéma structurel sous Proteus 8: Flowcode_328P_ADC.pdsprj
Sous Arduino |
La fonction en langage C permettant de lire le résultat d'une conversion Analogique/Numérique du microcontrôleur est : analogRead()
Lit la valeur de la broche analogique spécifiée. Les cartes Arduino contiennent un convertisseur analogique/numérique 10 bits (210 = 1024) multicanal. Cela signifie qu'il mappera les tensions d'entrée entre 0 et la tension de fonctionnement (5 V ou 3,3 V) en valeurs entières entre 0 et 1023. Sur un Arduino UNO, par exemple, cela donne une résolution entre les lectures de : 5 volts / 1024 unités ou , 0,0049 volt (4,9 mV) par unité.
Voir le tableau ci-dessous pour les broches utilisables, la tension de fonctionnement et la résolution maximale pour certaines cartes Arduino.
Cartes |
Tension de service |
Broches analogiques |
Résolution |
Uno |
5 V |
A0 to A5 |
10 bits |
Mini, Nano |
5 V |
A0 to A7 |
10 bits |
Mega, Mega2560 |
5 V |
A0 to A14 |
10 bits |
Micro |
5 V |
A0 to A11 |
10 bits |
Leonardo |
5 V |
A0 to A11 |
10 bits |
Zero |
3,3 V |
A0 to A5 |
10 / 12 bits |
Due |
3,3 V |
A0 to A11 |
10 / 12 bits |
MKR Family boards |
3,3 V |
A0 to A6 |
10 / 12 bits |
La plage d'entrée peut être modifiée à l'aide de analogReference(), tandis que la résolution peut être modifiée (uniquement pour les cartes Zero, Due et MKR) à l'aide de analogReadResolution().
analogRead(pin)
pin: le nom de la broche d'entrée analogique à lire (A0 à A5 sur la plupart des cartes, A0 à A6 sur les cartes MKR, A0 à A7 sur les Mini et Nano, A0 à A15 sur les Mega).
La lecture analogique sur la broche. Bien qu'il soit limité à la résolution du convertisseur analogique-numérique (0-1023 pour 10 bits ou 0-4095 pour 12 bits). Type de données : int.
/*
LED bar graph
Turns on a series of LEDs based on the value of an analog sensor.
This is a simple way to make a bar graph display. Though this graph uses 10
LEDs, you can use any number by changing the LED count and the pins in the
array.
This method can be used to control any series of digital outputs that depends
on an analog input.
The circuit:
- LEDs from pins 2 through 11 to ground
This example code is in the public domain.
https://docs.arduino.cc/built-in-examples/display/BarGraph
by Tom Igoe
*/
// these constants won't change:
const int analogPin = A0; // the pin that the potentiometer is attached to
const int ledCount = 10; // the number of LEDs in the bar graph
int ledPins[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; // an array of pin numbers to which LEDs are attached
void setup() {
for (int thisLed = 0; thisLed < ledCount; thisLed++) { // loop over the pin array and set them all to output:
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop() {
int sensorReading = analogRead(analogPin); // read the potentiometer:
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount); // map the result to a range from 0 to the number of LEDs:
for (int thisLed = 0; thisLed < ledCount; thisLed++) { // loop over the LED array:
if (thisLed < ledLevel) { // if the array element's index is less than ledLevel,
digitalWrite(ledPins[thisLed], HIGH); // turn the pin for this element on:
}
else {
digitalWrite(ledPins[thisLed], LOW); // turn off all pins higher than the ledLevel:
}
}
}
Simulation sous Proteus
Téléchargement du schéma structurel sous Proteus 8: Arduino 328_barGraph.pdsprj
Créé avec HelpNDoc Personal Edition: Faites de la documentation d'aide un jeu d'enfant avec un outil de création d'aide