|
|
|
|
@ -12,6 +12,9 @@
|
|
|
|
|
|
|
|
|
|
#define TIMEOUT 255
|
|
|
|
|
|
|
|
|
|
const uint16_t LED_GREEN_TEMP = 300;
|
|
|
|
|
const uint16_t LED_RED_TEMP = 1200;
|
|
|
|
|
|
|
|
|
|
const uint16_t TARGET_TEMP_MAX = 1520;
|
|
|
|
|
|
|
|
|
|
uint8_t led_color = 0;
|
|
|
|
|
@ -20,7 +23,6 @@ uint8_t setting_timeout = 0;
|
|
|
|
|
|
|
|
|
|
uint8_t adc_pos = 0;
|
|
|
|
|
uint16_t adc_sum = 0;
|
|
|
|
|
uint16_t temperature_adc = 0;
|
|
|
|
|
uint16_t target = 0;
|
|
|
|
|
|
|
|
|
|
uint16_t temperature = 0;
|
|
|
|
|
@ -71,13 +73,13 @@ ISR(PCINT0_vect)
|
|
|
|
|
input_state = new_state;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t control_output(uint16_t current_temp, uint16_t target_temp)
|
|
|
|
|
uint8_t control_output()
|
|
|
|
|
{
|
|
|
|
|
if (current_temp > target_temp)
|
|
|
|
|
if (temperature > target)
|
|
|
|
|
{
|
|
|
|
|
return 0;
|
|
|
|
|
} else {
|
|
|
|
|
return (uint8_t)((uint16_t)((uint32_t)((uint32_t)255*target_temp)/current_temp)/TARGET_TEMP_MAX);
|
|
|
|
|
return (uint8_t)((uint16_t)((uint32_t)((uint32_t)255*target)/temperature)/TARGET_TEMP_MAX);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -142,7 +144,14 @@ void led_init(void)
|
|
|
|
|
|
|
|
|
|
void led_set(uint16_t value)
|
|
|
|
|
{
|
|
|
|
|
OCR0A = OCR0B = led_color = value >> 8;
|
|
|
|
|
if (LED_GREEN_TEMP < value && value < LED_RED_TEMP) {
|
|
|
|
|
value = (value-LED_GREEN_TEMP) * 255/(LED_RED_TEMP-LED_GREEN_TEMP);
|
|
|
|
|
} else if (value < LED_GREEN_TEMP) {
|
|
|
|
|
value = 0;
|
|
|
|
|
} else {
|
|
|
|
|
value = 255;
|
|
|
|
|
}
|
|
|
|
|
OCR0A = OCR0B = (uint8_t)value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void led_off(void)
|
|
|
|
|
@ -192,11 +201,10 @@ int main(void)
|
|
|
|
|
adc_sum += ADC;
|
|
|
|
|
if(++adc_pos == 64)
|
|
|
|
|
{
|
|
|
|
|
temperature_adc = adc_sum;
|
|
|
|
|
temperature = linearize_temp(adc_sum);
|
|
|
|
|
adc_sum = 0;
|
|
|
|
|
adc_pos = 0;
|
|
|
|
|
temperature = linearize_temp(temperature_adc);
|
|
|
|
|
heat_output = control_output(temperature, target);
|
|
|
|
|
heat_output = control_output();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|