Paso 7: Los programas programable
Hasta ahora, hemos aprendido cómo armar un Arduino y añadir divisores del voltaje para acondicionar la señal de entrada analógica (voltaje) por reducir la señal a un nivel que está dentro de los parámetros de las especificaciones de Arduino. Luego compilado y había subido algunos bocetos que lea las señales y aparecen en el monitor serial y la pantalla de LCD de TFT. Ahora depende de usted a estudiar el código y continuar con el trabajo. Estoy incluyendo el código de los bocetos de oter que funcionará con el hardware que armamos.
/*--------------------------------------------------------------
Programa: 1 canal DVM con muestreo
Descripción: Lee el valor analógico A0 entrada y calcula suponiendo que el voltaje
hay un divisor del voltaje en el pin A0 que divide por 10.195
Hardware: Arduino NANO o UNO con divisor de voltaje en A0.
Software: Escrito usando Arduino 1.0.3 IDE
Fecha: 25 de marzo de 2014
Autor:
--------------------------------------------------------------*/
número de muestras analógicas tomar por lectura
#define NSAMP 100
#define sclk 13
#define mosi 11
#define cs 10
#define dc 9
#define rst 8 / rearme
#include / / librería gráfica de base
#include / / específicos de hardware de biblioteca
#include
Tft de Adafruit_ST7735 = Adafruit_ST7735 (cs, dc, rst);
int suma = 0; suma de las muestras tomadas
unsigned char Scount = 0; número de muestra
Float V1 = 0.00; tensión media calculada
flotador de VMAX = 0.00;
flotador de VMIN = 100.00;
flotador val = 0.00;
flotador de VREF = 5.0;
flotador de Dv1 = 10.935;
void setup()
{
tft.initR(INITR_BLACKTAB); inicializar una ficha de chip, negro ST7735S
tft.fillScreen(ST7735_BLACK); borrar la pantalla
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(1);
tft.setCursor(10,0);
TFT.println ("voltímetro de CD DVM");
tft.setTextColor(ST7735_WHITE);
TFT.println ("tensión @ pin A0");
TFT.Print ("con MAX, MIN valores");
tft.setTextColor(ST7735_RED);
tft.setCursor(0,140);
TFT.println ("PRECAUCIÓN máxima tensión 55vdc");
}
void loop()
{
un número de muestras analógicas y añadir
mientras que (Scount < NSAMP) {}
suma += analogRead(A0); / / leer y añadir las muestras
Val = (analogRead(A0)); temperatura almacenamiento de MAX / MIN
tft.setCursor (45, 110);
TFT.println(Val);
if(Val > Vmax) {//get valor máximo de la muestra
(VMAX = val);
}
if(Val < VMIN) {//get MIN valor de la muestra
(VMIN = val);
}
Scount ++; //increment la cuenta de muestra
Delay (10); //Wait 10 mS antes de leer la siguiente muestra
}
Una vez realizado el muestreo, calcular y mostrar la tensión media calculada
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 ("CC");
tft.setCursor (20, 90);
tft.setTextSize(1);
tft.setTextColor(0xff00,ST7735_BLACK);
TFT.Print ("VMAX");
TFT.Print ((float) VMAX * VREF/1023 * Dv1) ;// calculará y mostrará la tensión máxima calculada
TFT.println ("CC");
tft.setCursor (20, 100);
tft.setTextColor(ST7735_GREEN,ST7735_BLACK);
TFT.Print ("VMIN");
TFT.Print ((float) VMIN * VREF/1023 * Dv1) ;// calculará y mostrará el voltaje mínimo calculado
TFT.Print ("CC");
Scount = 0; restablecer cuenta de muestra
suma = 0; restablecer la suma
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/*--------------------------------------------------------------
Programa de: voltímetro de voltímetro de canal 4
Descripción: voltímetro de 4 canales DC tensiones de muestra
en Color TFT LCD con 1 decimal, utilizando el muestreo y con un promedio de
Hardware: Arduino NANO o UNO con divisores del voltaje en A0 a A3.
TFT LCD conectado
Software: Desarrollado utilizando el software de Arduino 1.0.3
Fecha: 10 de marzo de 2014
Autor:
--------------------------------------------------------------*/
#define sclk 13
#define mosi 11
#define cs 10
#define dc 9
#define rst 8 / rearme
#include / / librería gráfica de base
#include / / específicos de hardware de biblioteca
#include
Tft de Adafruit_ST7735 = Adafruit_ST7735 (cs, dc, rst);
número de muestras analógicas para tomar por la lectura, por el canal
#define NSAMP 100 / / número de muestras a tomar la muestra antes
valores de calibración de divisor de tensión
#define Dv1 11.00
#define Dv2 11.001
#define Dv3 11.00
#define Dv4 10.985
Tensión de referencia del ADC / valor de calibración
#define VREF 5.00
int suma [4] = {0}; sumas de las muestras tomadas
unsigned char Scount = 0; número de muestra
Float AVvolts [4] = {0,0}; tensiones calculadas
char la cnt1 = 0; utilizado en 'bucles for'
void setup()
{
tft.initR(INITR_BLACKTAB); inicializar una ficha de chip, negro ST7735S
tft.fillScreen(ST7735_BLACK); borrar la pantalla
tft.setTextColor(ST7735_WHITE);
tft.drawRoundRect (2, 20, 120, 110, 5, ST7735_WHITE);
tft.setTextSize(1);
tft.setCursor(5,0);
TFT.println ("voltímetro de canal 4");
tft.setTextColor(0XFF00);
tft.setCursor(0,140);
TFT.println ("PRECAUCIÓN máxima tensión 55vdc");
}
void loop()
{
un número de muestras analógicas y añadir
mientras que (Scount < NSAMP) {}
muestra cada canal A0 a A3
para (cnt1 = 0; cnt1 < 4; cnt1 ++) {}
suma [cnt1] += analogRead (A0 + cnt1);
}
Scount ++;
Delay(10);
}
calcular el voltaje para cada canal
para (cnt1 = 0; cnt1 < 4; cnt1 ++) {}
AVvolts [cnt1] = (suma (flotador) [cnt1] / (float) NSAMP * VREF) / 1024.0;
}
tensión pantalla TFT pantalla de LCC
voltaje 1 - V1(pin A0
tft.setTextColor(ST7735_YELLOW,ST7735_BLACK); establecer color para V1
tft.setTextSize(2);
tft.setCursor (15, 40);
TFT.Print ("V1");
TFT.Print (AVvolts [0] * Dv1, 1);
TFT.Print ("V");
voltaje 2 - V2(pin A1)
tft.setTextColor(ST7735_GREEN,ST7735_BLACK); / / establecer color para V2
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); / / establecer color para V3
tft.setCursor (15, 80);
TFT.Print ("V3");
TFT.Print (AVvolts [2] * Dv3, 1);
TFT.Print ("V");
tensión 4 - V4(pin A3)
tft.setTextColor(ST7735_WHITE,ST7735_BLACK); / / establecer color para V4
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);
restablecer la cuenta y sumas
Scount = 0;
para (cnt1 = 0; cnt1 < 4; cnt1 ++) {}
suma [cnt1] = 0;
}
}