Commit f15d4e5a authored by Sebastián Fernández's avatar Sebastián Fernández

Correcciones a sw uv_meter (v1.21) para manejar 7segmentos en todos los...

Correcciones a sw uv_meter (v1.21) para manejar 7segmentos en todos los mensajes y tomar valor de potencia por defecto de eeprom si no hay sensor UVC
parent 0a850ae4
......@@ -29,6 +29,13 @@
* 1) Al grabar valores en la EEPROM, en forma aleatoria el sw no funciona correctamente.
* Se opta por no incluir por el momento el registro de los minutos de funcionamiento y ciclos de uso.
*
* * v1.21 - 2020/08/04 - S.Fernandez
* En funciones que muestran mensajes se agregan para 7 segmentos
* Se valida funcionamiento sin sensor (tomava valor potencia minimo y no default para operar)
* Known issues:
* 1) Al grabar valores en la EEPROM, en forma aleatoria el sw no funciona correctamente.
* Se opta por no incluir por el momento el registro de los minutos de funcionamiento y ciclos de uso.
*
* Timer idea
* https://techtutorialsx.com/2017/10/07/esp32-arduino-timer-interrupts/
*
......@@ -36,6 +43,13 @@
* Instalarla y editar
* #include <avr/pgmspace.h>
* https://github.com/wayoda/LedControl
* Bits de 7 segmentos
* 6
* 1 5
* 0
* 2 4
* 3 7
*
*
* LiquidCrystal_I2C.h: https://github.com/johnrickman/LiquidCrystal_I2C
*
......@@ -89,7 +103,7 @@ por
/****************************************
* User parameters
****************************************/
#define version "Version 1.2"
#define version "Version 1.21"
// UV metering
const float target_dose = 2000; // 2000 mJ/cm2
const float min_percent_initial_adc = 0.45;
......@@ -281,6 +295,8 @@ void display_msg_7seg(const char *chars8) {
}
void display_clear() {
lc.clearDisplay(0);// clear screen
lcd.setCursor(0, 0);
lcd.print(" "); //
lcd.setCursor(0, 1);
......@@ -288,8 +304,16 @@ void display_clear() {
}
void display_calibration_unload() {
//76543210
// ToDo: 7 segment message
lc.setRow(0, 7, B01001110); // C
lc.setRow(0, 6, B01110111); // A
lc.setRow(0, 5, B00001110); // L
lc.setRow(0, 4, B00000000); //
lc.setRow(0, 3, B00001110); // L
lc.setRow(0, 2, B00011101); // o
lc.setRow(0, 1, B01110111); // A
lc.setRow(0, 0, B00111101); // d
lcd.setCursor(0, 0);
lcd.print("Calib. en curso "); //
lcd.setCursor(0, 1);
......@@ -297,8 +321,16 @@ void display_calibration_unload() {
}
void display_calibration_door_open() {
//76543210
// ToDo: 7 segment message
lc.setRow(0, 7, B01001110); // C
lc.setRow(0, 6, B01110111); // A
lc.setRow(0, 5, B00001110); // L
lc.setRow(0, 4, B00000000); //
lc.setRow(0, 3, B00111101); // d
lc.setRow(0, 2, B00011101); // o
lc.setRow(0, 1, B00011101); // o
lc.setRow(0, 0, B00000101); // r
lcd.setCursor(0, 0);
lcd.print("Calib. en curso "); //
lcd.setCursor(0, 1);
......@@ -306,8 +338,21 @@ void display_calibration_door_open() {
}
void display_calibration_power(int value) {
//76543210
// ToDo: 7 segment message
char digitos_disp[4] = {};
int first_digit_pos = 3;
int number_digit = 4;
snprintf(digitos_disp,5,"%04d", value);
lc.setRow(0, 7, B01001110); // C
lc.setRow(0, 6, B01110111); // A
lc.setRow(0, 5, B00001110); // L
lc.setRow(0, 4, B00000000); //
for (int i = 0; i < number_digit; i++) {
lc.setChar(0, first_digit_pos - i, digitos_disp[i], false);
}
lcd.setCursor(0, 0);
lcd.print("Calib. en curso "); //
lcd.setCursor(0, 1);
......@@ -317,6 +362,22 @@ void display_calibration_power(int value) {
}
void display_low_power(int value) {
char digitos_disp[4] = {};
int first_digit_pos = 3;
int number_digit = 4;
snprintf(digitos_disp,5,"%04d", value);
lc.setRow(0, 7, B01100111); // P
lc.setRow(0, 6, B00000000); //
lc.setRow(0, 5, B00001110); // L
lc.setRow(0, 4, B00011101); // o
for (int i = 0; i < number_digit; i++) {
lc.setChar(0, first_digit_pos - i, digitos_disp[i], false);
}
lcd.setCursor(0, 0);
lcd.print("Err: Pot. baja "); //
lcd.setCursor(0, 1);
......@@ -327,7 +388,16 @@ void display_low_power(int value) {
void display_calibration_warming(int value) {
//76543210
// ToDo: 7 segment message
lc.setRow(0, 7, B01001110); // C
lc.setRow(0, 6, B01110111); // A
lc.setRow(0, 5, B00001110); // L
lc.setRow(0, 4, B00000000); //
lc.setRow(0, 3, B01001000); // H
lc.setRow(0, 2, B00011101); // o
lc.setRow(0, 1, B00001111); // t
lc.setRow(0, 0, B00000100); // i
lcd.setCursor(0, 0);
lcd.print("Calib. en curso "); //
lcd.setCursor(0, 1);
......@@ -337,29 +407,30 @@ void display_calibration_warming(int value) {
}
void display_msg_door() {
//76543210
lc.setRow(0, 7, B00111101);
lc.setRow(0, 6, B00011101);
lc.setRow(0, 5, B00011101);
lc.setRow(0, 4, B00000101);
lc.setRow(0, 3, B01111110);
lc.setRow(0, 2, B01100111);
lc.setRow(0, 1, B01001111);
lc.setRow(0, 0, B00010101);
lc.setRow(0, 7, B00111101); // d
lc.setRow(0, 6, B00011101); // o
lc.setRow(0, 5, B00011101); // o
lc.setRow(0, 4, B00000101); // r
lc.setRow(0, 3, B01111110); // O
lc.setRow(0, 2, B01100111); // P
lc.setRow(0, 1, B01001111); // E
lc.setRow(0, 0, B00010101); // n
lcd.setCursor(0, 0);
lcd.print("Puerta abierta "); //
}
void display_msg_load() {
//76543210
lc.setRow(0, 7, B00010101);
lc.setRow(0, 6, B00011101);
lc.setRow(0, 5, B00000000);
lc.setRow(0, 4, B00000000);
lc.setRow(0, 7, B00010101); // n
lc.setRow(0, 6, B00011101); // o
lc.setRow(0, 5, B00000000); //
lc.setRow(0, 4, B00000000); //
lc.setRow(0, 3, B00001110);
lc.setRow(0, 2, B00011101);
lc.setRow(0, 1, B01110111);
lc.setRow(0, 0, B00111101);
lc.setRow(0, 3, B00001110); // L
lc.setRow(0, 2, B00011101); // o
lc.setRow(0, 1, B01110111); // A
lc.setRow(0, 0, B00111101); // d
lcd.setCursor(0, 0);
lcd.print("Carga no presente "); //
......@@ -571,7 +642,7 @@ switch(state)
DEBUGST_PRINT("state: POWER_UP");
if (uvc_sensor_present == 0){
radiation_power = calculate_radiation_power(uvc_read_min);
radiation_power = calculate_radiation_power(uvc_read_def);
state = DOSE_CALCULATION;
} else {
radiation_power = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment