Étape 6: Échantillonnage, calcul de la moyenne et affichage
Le schéma ci-dessous utilise d’échantillonnage et une moyenne pour améliorer les valeurs affichées. Copier et coller à l’IDE Arduino et compiler et charger.
// -----------------Sketch Start-----------------------------
/*--------------------------------------------------------------
Programme: 1 canal DVM avec échantillonnage
Description : Lit la valeur A0 d’entrée analogique et calcule
la tension avec un diviseur de tension
réseau sur la broche A0 qui divise par 10.195 et une tension de référence de 5.0V.
Matériel : Arduinonano ou Uno avec diviseur de tension sur A0.
Logiciel : Développé à l’aide du logiciel Arduino 1.0.3
Devrait être compatible avec Arduino 1.0 +
Date : 25 mars 2014
Auteur :
--------------------------------------------------------------*/
#define NUMSAMP 100 / / nombre d’échantillons à prendre avant l’étalement et l’affichage
#define sclk 13
#define mosi 11
#define cs 10
#define dc 9
#define rst 8 / / reset
#define 10.915 Dv1 / / valeur de diviseur de tension
#define VREF 5.0 / / tension mesurée broches 5V
#include < Adafruit_GFX.h > / / bibliothèque graphique de base
#include < Adafruit_ST7735.h > / / spécifiques au matériel bibliothèque
#include < SPI.h >
Tft Adafruit_ST7735 = Adafruit_ST7735 (cs, dc, rst) ;
int somme = 0 ; Somme des échantillons prélevés
unsigned char Scount = 0 ; Numéro de l’échantillon actuel
float AVvolts = 0.0 ; Tension moyenne calculée
void setup()
{/ / Affichage de la configuration et d’imprimer des éléments statiques
tft.initR(INITR_BLACKTAB) ; initialiser un onglet de puce, noire ST7735S
tft.fillScreen(ST7735_BLACK) ; effacer l’écran
tft.setTextColor(ST7735_WHITE) ;
tft.setTextSize(1) ;
tft.setCursor(10,0) ;
TFT.println ("voltmètre CC DVM") ;
TFT.println("") ;
TFT.println("") ;
TFT.Print ("tension @ broches A0") ;
tft.setTextColor(ST7735_RED) ;
tft.setCursor(0,140) ;
TFT.println ("attention tension max 55vdc") ;
}
void loop()
{
prendre un certain nombre d’échantillons analogiques et les additionner
tandis que (Scount < NUMSAMP) {}
somme += analogRead(A0) ; lire et ajouter les échantillons
Scount ++ ; incrémente le nombre d’échantillons
Delay(10) ; Attendre 10 mS avant de lire le prochain échantillon
}
AVvolts = (somme (float) / (float) NUMSAMP * VRÉF) / 1023 ; calculer la tension moyenne
Affichage de la tension moyenne calculée
tft.setTextColor(ST7735_YELLOW,ST7735_BLACK) ;
tft.setTextSize(2) ;
tft.setCursor (45, 50) ;
TFT.println ("V1") ;
tft.setCursor (10, 80) ;
tft.setTextSize(2) ;
TFT.Print(AVvolts * DV1) ;
TFT.println ("Vdc") ;
Scount = 0 ;
somme = 0 ;
}
// -----------------Sketch End-----------------------------