1
0
mirror of https://github.com/ArduinoHannover/Maiskolben.git synced 2025-09-02 17:42:40 +02:00

Refactoring, higher temperature bar, correct EEPROM update

- EEPROM autoboot/auto shutdown was set to auto shutdown when updating
temperature
- Indentation for definition.h altered
- More constants
- Better constant names
- Individual temperature bar height
- Starting bar at TEMP_COLD
- Higher "cold" temperature
This commit is contained in:
Luca
2017-06-01 14:27:33 +02:00
parent f4048419dd
commit f211f56990
2 changed files with 55 additions and 55 deletions

View File

@@ -331,7 +331,7 @@ void updateEEPROM(void) {
}
EEPROM.update(8, set_t >> 8);
EEPROM.update(9, set_t & 0xFF);
EEPROM.update(EEPROM_OPTIONS, 1); //Defaults to auto power down
EEPROM.update(EEPROM_OPTIONS, (bootheat << 1) | autopower);
}
int getTemperature(void) {
@@ -348,9 +348,8 @@ int getTemperature(void) {
} else {
analogWrite(HEATER_PWM, pwm); //switch heater back to last value
}
return round(adc*0.574503+43.5); //nasty resistors...
//return round(adc < 210 ? (((float)adc) * 0.530805 + 38.9298) : (((float)adc) * 0.415375 + 64.6123)); //old conversion
//return round(((float) adc)*ADC_TO_TEMP_GAIN+ADC_TO_TEMP_OFFSET); //even older conversion
return round(((float) adc) * ADC_TO_TEMP_GAIN + ADC_TO_TEMP_OFFSET);
}
void measureVoltage(void) {
@@ -461,8 +460,8 @@ void timer_sw_poll(void) {
cnt_but_press++;
if((cnt_but_press >= 100) || sw_changed) {
setStandby(false);
if(sw_up && set_t < MAX_TEMP) set_t++;
else if (sw_down && set_t > MIN_TEMP) set_t--;
if(sw_up && set_t < TEMP_MAX) set_t++;
else if (sw_down && set_t > TEMP_MIN) set_t--;
if(!sw_changed) cnt_but_press = 97;
updateEEPROM();
}
@@ -569,8 +568,8 @@ void display(void) {
tft.setTextColor(ST7735_WHITE, ST7735_BLACK);
tft.write(' ');
tft.print(set_t);
tft.fillTriangle(149, 50, 159, 50, 154, 38, (set_t < MAX_TEMP) ? ST7735_WHITE : ST7735_GRAY);
tft.fillTriangle(149, 77, 159, 77, 154, 90, (set_t > MIN_TEMP) ? ST7735_WHITE : ST7735_GRAY);
tft.fillTriangle(149, 50, 159, 50, 154, 38, (set_t < TEMP_MAX) ? ST7735_WHITE : ST7735_GRAY);
tft.fillTriangle(149, 77, 159, 77, 154, 90, (set_t > TEMP_MIN) ? ST7735_WHITE : ST7735_GRAY);
}
}
if (!off) {
@@ -609,8 +608,8 @@ void display(void) {
if (cur_t_old == 999) {
tft.fillRect(44,76,72,16,ST7735_BLACK);
}
tft.setTextColor(off ? temperature < 50 ? ST7735_CYAN : ST7735_RED : tft.Color565(min(10,abs(temperature-target_t))*25, 250 - min(10,max(0,(abs(temperature-target_t)-10)))*25, 0), ST7735_BLACK);
if (temperature < 60) {
tft.setTextColor(off ? temperature < TEMP_COLD ? ST7735_CYAN : ST7735_RED : tft.Color565(min(10,abs(temperature-target_t))*25, 250 - min(10,max(0,(abs(temperature-target_t)-10)))*25, 0), ST7735_BLACK);
if (temperature < TEMP_COLD) {
tft.print("COLD");
} else {
tft.write(' ');
@@ -619,10 +618,10 @@ void display(void) {
}
}
if (temperature < cur_t_old)
tft.drawFastHLine((int)(temperature/2.6), 0, 160-(int)(temperature/2.6), ST7735_BLACK);
tft.fillRect(max(0, (temperature - TEMP_COLD)/2.4), 0, 160-max(0, (temperature - TEMP_COLD)/2.4), BAR_HEIGHT, ST7735_BLACK);
else if (cur_t != 999) {
for (int16_t i = 0; i < temperature/2.6; i++) {
tft.drawPixel(i, 0, tft.Color565(min(255, max(0, i*5)), min(255, max(0, 400-i*2.5)), 0));
for (int16_t i = max(0, (cur_t_old - TEMP_COLD)/2.4); i < max(0, (temperature - TEMP_COLD)/2.4); i++) {
tft.drawFastVLine(i, 0, BAR_HEIGHT, tft.Color565(min(255, max(0, i*5)), min(255, max(0, 450-i*2.5)), 0));
}
}
cur_t_old = temperature;
@@ -730,7 +729,7 @@ void compute(void) {
}
} else {
if (stby_layoff || stby) {
target_t = STBY_TEMP;
target_t = TEMP_STBY;
} else {
target_t = set_t;
}
@@ -834,7 +833,7 @@ void loop(void) {
if (Serial.available() >= 3) {
t = serialReadTemp();
//Serial.println(t);
if (t <= MAX_TEMP && t >= MIN_TEMP) {
if (t <= TEMP_MAX && t >= TEMP_MIN) {
set_t = t;
updateEEPROM();
}
@@ -846,7 +845,7 @@ void loop(void) {
uint8_t slot = Serial.read()-'1';
if (slot < 3) {
t = serialReadTemp();
if (t <= MAX_TEMP && t >= MIN_TEMP) {
if (t <= TEMP_MAX && t >= TEMP_MIN) {
stored[slot] = t;
updateEEPROM();
}

View File

@@ -1,14 +1,16 @@
#define VERSION "2.7"
#define VERSION "2.8"
#define EE_VERSION 27
#define EEPROM_CHECK 42
#define STBY_TEMP 150
#define BAR_HEIGHT 4 //Should be no bigger than 5
/*
* TIPS ARE SPECIFIED FOR 450 DEGREE MAX
* If read 1023 on Analog in, the tip is turned off
* If read 1023 on Analog in, the tip is turned off automatically
*/
#define MAX_TEMP 450
#define MIN_TEMP 100
#define TEMP_MAX 450
#define TEMP_MIN 100
#define TEMP_STBY 150
#define TEMP_COLD 70
#define SHUTOFF_ACTIVE
#define BOOTHEAT_ACTIVE
@@ -16,55 +18,54 @@
#define STANDBY_TIMEOUT 240 // seconds without any significant temperature drop, if exceeded it will standby
#define OFF_TIMEOUT 900 // seconds in standby before turning off
#define TEMP_THRESHOLD 50 //threshold voltage, that must be exceeded in given time:
#define TEMP_THRESHOLD 50 //threshold voltage, that must be exceeded in given time:
#define TEMP_UNDER_THRESHOLD 150 //*10ms
#define THRES_MAX_DECEED 2 //max times the threshold temperature may be undercut by the current temperature
#define THRES_MAX_DECEED 2 //max times the threshold temperature may be undercut by the current temperature
//Temperature in degree to rise at least in given time
#define TEMP_MIN_RISE 10
#define TEMP_MIN_RISE 10
//Time in that the temperature must rise by the set temperature
#define TEMP_RISE_TIME 1000
#define TEMP_RISE_TIME 1000
//#define OLD_PWM
// RX 0
// TX 1
#define SW_STBY 2
#define HEATER_PWM 3
#define SW_DOWN 4
#define HEAT_LED 5
#define SW_UP 6
#define SW_T3 7
#define SW_T2 8
#define SW_T1 9
#define TFT_CS 10
// MOSI 11
// RX 0
// TX 1
#define SW_STBY 2
#define HEATER_PWM 3
#define SW_DOWN 4
#define HEAT_LED 5
#define SW_UP 6
#define SW_T3 7
#define SW_T2 8
#define SW_T1 9
#define TFT_CS 10
// MOSI 11
#define TFT_BL 12 //use MISO PULLUP as switch
// SCK 13
#define TEMP_SENSE A0
#define STBY_NO A1
#define BAT_C3 A2
#define BAT_C2 A3
#define BAT_C1 A4
#define TFT_DC A5
// SCK 13
#define TEMP_SENSE A0
#define STBY_NO A1
#define BAT_C3 A2
#define BAT_C2 A3
#define BAT_C1 A4
#define TFT_DC A5
#ifdef PIN_A7
#define VIN A7
#define VIN A7
#endif
#define kp 0.03
#define ki 0.00001
#define kd 0.0
#define kp 0.03
#define ki 0.00001
#define kd 0.0
#define TIME_COMPUTE_IN_MS 10
#define TIME_COMPUTE_IN_MS 10
#define TIME_MEASURE_VOLTAGE_IN_MS 200
#define TIME_SW_POLL_IN_MS 10
#define DELAY_BEFORE_MEASURE 10
#define DELAY_MAIN_LOOP 10
#define PID_SAMPLE_TIME 10
#define TIME_SW_POLL_IN_MS 10
#define DELAY_BEFORE_MEASURE 10
#define DELAY_MAIN_LOOP 10
#define PID_SAMPLE_TIME 10
#define ADC_TO_TEMP_GAIN 0.39
#define ADC_TO_TEMP_OFFSET 23.9
#define CTRL_GAIN 10
#define ADC_TO_TEMP_GAIN 0.574503
#define ADC_TO_TEMP_OFFSET 43.5
#define EEPROM_SET_T 8
#define EEPROM_VERSION 10