Stap 7: De programma's in programmeerbare
Tot nu toe hebben we geleerd hoe samen te stellen een Arduino en het toevoegen van spanning dividers om de conditie van het analoog ingangssignaal (spanning) door het verminderen van het signaal naar een niveau dat binnen de parameters van de specificaties van de Arduino. Wij vervolgens wordt verzameld en geüpload sommige schetsen die lezen de signalen en toonde hen op de seriële monitor en het TFT LCD-scherm. Nu is het aan jou om te bestuderen van de code en het werk voortzetten. Ik ben met inbegrip van de code voor de andere schetsen die met de hardware die we samen worden uitgevoerd.
/*--------------------------------------------------------------
Programma: 1-kanalige DVM met Sampling
Beschrijving: Leest waarde op analoge input A0 en berekend uitgaande van de spanning
Er is een divider spanning op pin A0 die worden gedeeld door 10.195
Hardware: Arduino NANO of UNO met spanning divider op A0.
Software: Geschreven met behulp van de Arduino 1.0.3 IDE
Datum: 25 maart 2014
Auteur:
--------------------------------------------------------------*/
aantal analoge monsters te nemen per lezing
#define NSAMP 100
#define sclk 13
#define mosi 11
#define cs 10
#define dc 9
#define rst 8 / / reset
#include / / core grafische bibliotheek
#include / / hardwarespecifieke bibliotheek
#include
Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, rst);
int som = 0; som van monsters
unsigned char Scount = 0; het nummer van het monster van de huidige
zweven V1 = 0,00; berekende gemiddelde spanning
zweven VMAX = 0,00;
zweven VMIN = 100,00;
zweven val = 0,00;
zweven VREF = 5.0;
zweven Dv1 = 10,935;
VOID Setup
{
tft.initR(INITR_BLACKTAB); initialiseren van een tab ST7735S-chip, zwart
tft.fillScreen(ST7735_BLACK); scherm wissen
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(1);
tft.setCursor(10,0);
TFT.println ("DC voltmeter DVM");
tft.setTextColor(ST7735_WHITE);
TFT.println ("spanning @ pin A0");
TFT.Print ("met MAX, MIN-waarden");
tft.setTextColor(ST7735_RED);
tft.setCursor(0,140);
TFT.println ("Let op max spanning 55vdc");
}
void loop
{
een aantal analoge monsters nemen en ze optellen
terwijl (Scount < NSAMP) {}
som += analogRead(A0); / / lezen en toevoegen van de monsters
Val = (analogRead(A0)); opslag voor MAX Temp / MIN
tft.setCursor (45, 110);
TFT.println(val);
if(Val > Vmax) {//get MAX waarde van monster
(VMAX = val);
}
if(Val < VMIN) {//get MIN waarde van monster
(VMIN = val);
}
Scount ++; //increment de graaf monster
vertraging (10); //Wait 10 mS vóór het lezen van de volgende monster
}
Zodra gedaan bemonstering, berekenen en weergeven van de berekende gemiddelde spanning
V1 = ((float)sum / (float)NSAMP * VREF * Dv1 ) / 1024.0;
tft.setTextColor(ST7735_YELLOW,ST7735_BLACK);
tft.setCursor (45, 40);
tft.setTextSize(2);
TFT.println ("V1");
tft.setCursor (10, 60);
TFT.Print(v1);
TFT.println ("Vdc");
tft.setCursor (20, 90);
tft.setTextSize(1);
tft.setTextColor(0xff00,ST7735_BLACK);
TFT.Print ("VMAX");
TFT.Print ((float) VMAX * VREF/1023 * Dv1) ;// berekenen en weergeven van de berekende maximale spanning
TFT.println ("Vdc");
tft.setCursor (20, 100);
tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
TFT.Print ("VMIN");
TFT.Print ((float) VMIN * VREF/1023 * Dv1) ;// berekenen en weergeven van de berekende Minimum spanning
TFT.Print ("Vdc");
Scount = 0; Reset monster graaf
som = 0; resetten van de som
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/*--------------------------------------------------------------
Programma: 4 kanaal voltmeter voltmeter
Beschrijving: 4 kanaals DC voltmeter met spanningen weergegeven
op kleur TFT LCD tot op 1 decimaal, met behulp van bemonstering en gemiddeld
Hardware: Arduino NANO of UNO met spanning dividers op A0 tot A3.
TFT LCD aangesloten
Software: Ontwikkeld met behulp van de Arduino 1.0.3 software
Datum: 10 maart 2014
Auteur:
--------------------------------------------------------------*/
#define sclk 13
#define mosi 11
#define cs 10
#define dc 9
#define rst 8 / / reset
#include / / core grafische bibliotheek
#include / / hardwarespecifieke bibliotheek
#include
Adafruit_ST7735 tft = Adafruit_ST7735 (cs, dc, rst);
aantal analoge monsters te nemen per lezing, per kanaal
#define NSAMP 100 / / aantal monsters te nemen befor weergeven
voltage divider kalibratie waarden
#define Dv1 11,00
#define Dv2 11.001
#define Dv3 11,00
#define Dv4 10.985
ADC referentie spanning / kalibratie waarde
#define VREF 5,00
int som [4] = {0}; bedragen van monsters
unsigned char Scount = 0; het nummer van het monster van de huidige
zweven AVvolts [4] = {0,0}; berekende spanningen
char cnt1 = 0; gebruikt 'voor' loops
VOID Setup
{
tft.initR(INITR_BLACKTAB); initialiseren van een tab ST7735S-chip, zwart
tft.fillScreen(ST7735_BLACK); scherm wissen
tft.setTextColor(ST7735_WHITE);
tft.drawRoundRect (2, 20, 120, 110, 5, ST7735_WHITE);
tft.setTextSize(1);
tft.setCursor(5,0);
TFT.println ("4 kanaal voltmeter");
tft.setTextColor(0XFF00);
tft.setCursor(0,140);
TFT.println ("Let op max spanning 55vdc");
}
void loop
{
een aantal analoge monsters nemen en ze optellen
terwijl (Scount < NSAMP) {}
genieten van elk kanaal A0 tot A3
voor (cnt1 = 0; cnt1 < 4; cnt1 ++) {}
[cnt1] som += analogRead (A0 + cnt1);
}
Scount ++;
delay(10);
}
Bereken de spanning voor elk kanaal
voor (cnt1 = 0; cnt1 < 4; cnt1 ++) {}
AVvolts [cnt1] = ((float) som [cnt1] / (zweven) NSAMP * VREF) / 1024.0;
}
spanningen op het TFT LCC weergeven weergeven
spanning 1 - V1(pin A0
tft.setTextColor(ST7735_YELLOW,ST7735_BLACK); Stel de kleur voor V1
tft.setTextSize(2);
tft.setCursor (15, 40);
TFT.Print ("V1");
TFT.Print (AVvolts [0] * Dv1, 1);
TFT.Print ("V");
spanning 2 - V2(pin A1)
tft.setTextColor(ST7735_GREEN,ST7735_BLACK); / / kleur voor V2 instellen
tft.setCursor (15, 60);
TFT.Print ("V2");
TFT.Print (AVvolts [1] * Dv2, 1);
TFT.Print ("V");
voltge 3 - V3(pin A2)
tft.setTextColor(ST7735_CYAN,ST7735_BLACK); / / kleur instellen voor V3
tft.setCursor (15, 80);
TFT.Print ("V3");
TFT.Print (AVvolts [2] * Dv3, 1);
TFT.Print ("V");
spanning 4 - V4(pin A3)
tft.setTextColor(ST7735_WHITE,ST7735_BLACK); / / kleur voor V4 instellen
tft.setCursor (15, 100);
TFT.Print ("V4");
TFT.Print (AVvolts [3] * Dv4, 2);
TFT.Print ("V");
tft.drawRoundRect (2, 20, 120, 110, 5, ST7735_WHITE);
Reset tellen en bedragen
Scount = 0;
voor (cnt1 = 0; cnt1 < 4; cnt1 ++) {}
som [cnt1] = 0;
}
}