Gör en Mini Arduino programmerbar 4 kanal DC-DVM (6 / 8 steg)
Steg 6: Provtagning, genomsnitt och Visa
Skissen nedan använder provtagning och i genomsnitt för att förbättra de Visa värdena. Kopiera och klistra in den till Arduino IDE och kompilera och ladda den.
// -----------------Sketch Start-----------------------------
/*--------------------------------------------------------------
Program: 1 kanal DVM med provtagning
Beskrivning: Läser värdet på analog ingång A0 och beräknar
spänning med en spänningsavdelare
nätverk för pin A0 som delar upp av 10.195 och en referens spänning på 5.0V.
Hårdvara: Arduinonano eller Uno med spänningsavdelare på A0.
Programvara: Utvecklad med Arduino 1.0.3 programvara
Bör vara förenliga med Arduino 1.0 +
Datum: Mars 25 2014
Författare:
--------------------------------------------------------------*/
#define NUMSAMP 100 / / antalet prover att ta innan genomsnitt och visar
#define sclk 13
#define mosi 11
#define cs 10
#define dc 9
#define rst 8 / / reset
#define Dv1 10.915 / / spänningsavdelare värde
#define VREF 5.0 / / spänning mätt 5V pin
#include < Adafruit_GFX.h > / / Core grafik bibliotek
#include < Adafruit_ST7735.h > / / maskinvaruspecifika bibliotek
#include < SPI.h >
Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, rst);
int summa = 0; Summan av prover
unsigned char Scount = 0; Aktuella antalet stickprov
flyta AVvolts = 0,0; Beräknade genomsnittliga spänning
void setup()
{/ / Setup skärm och skriva ut statiska objekt
tft.initR(INITR_BLACKTAB); initiera en ST7735S chip, svart flik
tft.fillScreen(ST7735_BLACK); Rensa skärmen
tft.setTextColor(ST7735_WHITE);
tft.setTextSize(1);
tft.setCursor(10,0);
TFT.println ("DC voltmeter DVM");
TFT.println("");
TFT.println("");
TFT.Print ("spänning @ pin A0");
tft.setTextColor(ST7735_RED);
tft.setCursor(0,140);
TFT.println ("försiktighet max spänning 55vdc");
}
void loop()
{
ta ett antal analoga prover och lägga upp dem
medan (Scount < NUMSAMP) {
summa += analogRead(A0); Läs och Lägg till proverna
Scount ++; öka antalet prov
Delay(10); Vänta 10 mS innan du läser nästa prov
}
AVvolts = ((float) summan / (float) NUMSAMP * VREF) / 1023; beräkna genomsnittlig spänning
Visa den beräknade genomsnittliga spänningen
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;
summa = 0;
}
// -----------------Sketch End-----------------------------