
|
![]() | #12 (permalink) Top | |
User Data registr.: 03-09-2012 Residenza: Gubbio-Ravenna
Messaggi: 1.771
| Citazione:
Codice: #define sclk 13 #define mosi 11 #define cs 10 #define dc 9 #define rst 8 // reset #include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_ST7735.h> // Hardware-specific library #include <SPI.h> Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, rst); // number of analog samples to take per reading, per channel #define NSAMP 128 // number of samples to take befor displaying (128=2^7) // voltage divider calibration values #define Dv1 11.00 #define Dv2 11.00 //number of channels #define N_CH 2 // ADC reference voltage / calibration value #define VREF 5.00 unsigned int u16_sum[2] = {0, 0}; // u16_sums of samples taken unsigned char u8_Scount = 0; // current sample number float f32_AVvolts[2] = {0.0, 0.0}; // calculated voltages char u8_cnt1 = 0; // used in 'for' loops float f32_V_max[2] = {0.00 ,0.00}; float f32_V_min[2] = {100.00, 100.00}; void setup() { tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab tft.fillScreen(ST7735_BLACK); // clear screen tft.setTextColor(ST7735_WHITE); tft.drawRoundRect(2, 10, 120, 110, 5,ST7735_WHITE); tft.setTextSize(1); tft.setCursor(5,0); tft.println("2 channel voltmeter"); tft.setTextColor(0XFF00); tft.setCursor(0,140); tft.println(" Caution max voltage 55vdc"); } void loop() { ADC_Reading(); //Read voltages MaxMin_Detection(); //Detect MAX/MIN and mean Print_V1(); //Display V1 and V2 voltages Print_V2(); tft.drawRoundRect(2, 10, 120, 120, 5,ST7735_WHITE); // draw a rectangle Reset_var(); //Reset variables } void ADC_Reading(){ while (u8_Scount < NSAMP) { // sample each channel A0 to A1 for (u8_cnt1 = 0; u8_cnt1 < N_CH; u8_cnt1++) { u16_sum[u8_cnt1] += analogRead(A0 + u8_cnt1); } u8_Scount++; delay(10); } } void MaxMin_Detection(){ // calculate the voltage for each channel for (u8_cnt1 = 0; u8_cnt1 < N_CH; u8_cnt1++) { f32_AVvolts[u8_cnt1] = ((u16_sum[u8_cnt1]>>7) * VREF) / 1024.0; if(f32_AVvolts[u8_cnt1] > f32_V_max[u8_cnt1]){ //get MAX value of sample f32_V_max[u8_cnt1] = f32_AVvolts[u8_cnt1]; } if(f32_AVvolts[u8_cnt1] < f32_V_min[u8_cnt1]){ //get MIN value of sample f32_V_min[u8_cnt1] = f32_AVvolts[u8_cnt1]; } } } void Print_V1(){ // voltage 1 - V1(pin A0) tft.setTextColor(ST7735_YELLOW,ST7735_BLACK); // set color for V1 tft.setTextSize(3); tft.setCursor(15, 20); tft.print("V1 "); tft.print(f32_AVvolts[0] * Dv1, 1); tft.print("V "); // voltage 1 - mean of V1 tft.setTextColor(ST7735_GREEN,ST7735_BLACK);// set color for V1 tft.setTextSize(2); tft.setCursor(15, 46); tft.print("Vmax "); tft.print(f32_V_max[1] * Dv1, 1); tft.print("V "); tft.setCursor(15, 63); tft.print("Vmin "); tft.print(f32_V_min[1] * Dv1, 1); tft.print("V "); } void Print_V2(){ // voltge 2 - V2 (pin A1) tft.setTextColor(ST7735_CYAN,ST7735_BLACK);// set color for V3 tft.setTextSize(3); tft.setCursor(15, 80); tft.print("V2 "); tft.print(f32_AVvolts[2] * Dv2, 1); tft.print("V "); // voltage 2 - mean of V2 tft.setTextColor(ST7735_WHITE,ST7735_BLACK);// set color for V4 tft.setTextSize(2); tft.setCursor(15, 106); tft.print("Vmax "); tft.print(f32_V_max[2] * Dv2, 1); tft.print("V "); tft.setCursor(15, 123); tft.print("Vmin "); tft.print(f32_V_min[2] * Dv2, 1); tft.print("V "); } void Reset_var(){ // reset variables u8_Scount = 0; for (u8_cnt1 = 0; u8_cnt1 < N_CH; u8_cnt1++) { u16_sum[u8_cnt1] = 0; } } 2 channels voltmeter /--------------------------------------------\ V1 0.00 V Vmax 0.00V Vmin 0.00V V2 0.00 V Vmax 0.00V Vmin 0.00V \--------------------------------------------/ Caution max voltage 55vdc Se le scritte sono decentrate o non allineate correggi tu in base a quello che vedi su display agendo su tft.setTextSize(), tft.setCursor() e tft.drawRoundRect()
__________________ Divertirsi insieme e con poco? Prova il combat! Curtman Squadron Combat Sito Web: https://sites.google.com/site/curtmansquadroncombat/ ![]() Ultima modifica di aero330 : 23 maggio 17 alle ore 18:49 | |
![]() | ![]() |
Bookmarks |
| |
![]() | ||||
Discussione | Autore discussione | Forum | Commenti | Ultimo Commento |
arduino uno e ..... | FLYTS | Circuiti Elettronici | 3 | 23 settembre 14 14:50 |