add ac control
This commit is contained in:
		
							parent
							
								
									b05c75a0a1
								
							
						
					
					
						commit
						8c01ccb18a
					
				
					 2 changed files with 100 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -15,7 +15,12 @@ NexButton row3_lv1 = NexButton(1,10,"row3_lv1");
 | 
			
		|||
NexButton row3_lv2 = NexButton(1,7,"row3_lv2");
 | 
			
		||||
NexButton row4_lv1 = NexButton(1,9,"row4_lv1");
 | 
			
		||||
NexButton row4_lv2 = NexButton(1,8,"row4_lv2");
 | 
			
		||||
 | 
			
		||||
NexButton temp_plus = NexButton(1,18,"temp_plus");
 | 
			
		||||
NexButton temp_neg = NexButton(1,17,"temp_neg");
 | 
			
		||||
NexButton fan = NexButton(1,16,"fan");
 | 
			
		||||
NexButton mode = NexButton(1,15,"mode");
 | 
			
		||||
NexButton ac_toggle = NexButton(1,1,"ac_toggle");
 | 
			
		||||
NexText cur_temp = NexText(1,19,"cur_temp");
 | 
			
		||||
// List of Component ID Message to listen to
 | 
			
		||||
NexTouch *nex_listen_list[] =
 | 
			
		||||
    {
 | 
			
		||||
| 
						 | 
				
			
			@ -32,6 +37,11 @@ NexTouch *nex_listen_list[] =
 | 
			
		|||
        &row3_lv2,
 | 
			
		||||
        &row4_lv1,
 | 
			
		||||
        &row4_lv2,
 | 
			
		||||
        &temp_plus,
 | 
			
		||||
        &temp_neg,
 | 
			
		||||
        &fan,
 | 
			
		||||
        &mode,
 | 
			
		||||
        &ac_toggle,
 | 
			
		||||
        NULL};
 | 
			
		||||
 | 
			
		||||
bool row_is_on(int light1_pin, int light2_pin) {
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +101,51 @@ void row4_lv2_pop_callback(void *ptr)
 | 
			
		|||
    pwm_toggle(ROW4_LIGHT2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void increase_temp() {
 | 
			
		||||
    uint8_t current_temp = ac_get_temperature();
 | 
			
		||||
    ac_set_state(ac_get_mode(), current_temp+1, ac_get_fan_speed());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void decrease_temp() {
 | 
			
		||||
    uint8_t current_temp = ac_get_temperature();
 | 
			
		||||
    ac_set_state(ac_get_mode(), current_temp-1, ac_get_fan_speed());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void temp_plus_pop_callback(void *ptr)
 | 
			
		||||
{
 | 
			
		||||
    increase_temp();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void temp_neg_pop_callback(void *ptr)
 | 
			
		||||
{
 | 
			
		||||
    decrease_temp();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void fan_pop_callback(void *ptr)
 | 
			
		||||
{
 | 
			
		||||
    uint8_t current_fan_speed = ac_get_fan_speed();
 | 
			
		||||
    uint8_t new_fan_speed = (current_fan_speed + 1) % 4; // Loop back to 0 when reaching 3
 | 
			
		||||
    ac_set_state(ac_get_mode(), ac_get_temperature(), new_fan_speed);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void mode_pop_callback(void *ptr)
 | 
			
		||||
{
 | 
			
		||||
    uint8_t current_mode = ac_get_mode();
 | 
			
		||||
    uint8_t new_mode = (current_mode + 1) % 3; // Loop back to 0 when reaching 2
 | 
			
		||||
    ac_set_state(new_mode, ac_get_temperature(), ac_get_fan_speed());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ac_toggle_pop_callback(void *ptr)
 | 
			
		||||
{
 | 
			
		||||
    //this function should set the state of the AC to toggle between off (mode 0) and the same state as before store in variable acmode
 | 
			
		||||
    if (ac_get_mode() == 0) {
 | 
			
		||||
        ac_set_state(acmode, ac_get_temperature(), ac_get_fan_speed());
 | 
			
		||||
    } else {
 | 
			
		||||
        acmode = ac_get_mode();
 | 
			
		||||
        ac_set_state(0, ac_get_temperature(), ac_get_fan_speed());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void row1_master_pop_callback(void *ptr)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -150,8 +204,12 @@ void user_init()
 | 
			
		|||
    row2_master.attachPop(row2_master_pop_callback, &row2_master);
 | 
			
		||||
    row3_master.attachPop(row3_master_pop_callback, &row3_master);
 | 
			
		||||
    row4_master.attachPop(row4_master_pop_callback, &row4_master);
 | 
			
		||||
    temp_plus.attachPop(temp_plus_pop_callback, &temp_plus);
 | 
			
		||||
    temp_neg.attachPop(temp_neg_pop_callback, &temp_neg);
 | 
			
		||||
    fan.attachPop(fan_pop_callback, &fan);
 | 
			
		||||
    mode.attachPop(mode_pop_callback, &mode);
 | 
			
		||||
    ac_toggle.attachPop(ac_toggle_pop_callback, &ac_toggle);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
This code will run once every event loop
 | 
			
		||||
*/
 | 
			
		||||
| 
						 | 
				
			
			@ -218,6 +276,34 @@ void update_toggle_button() {
 | 
			
		|||
    light_toggle.Set_background_image_pic(current_state?3:4);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void update_lcd_ac() {
 | 
			
		||||
    //update the current temperature
 | 
			
		||||
    char temp_str[3];
 | 
			
		||||
    sprintf(temp_str, "%d", ac_get_temperature());
 | 
			
		||||
    cur_temp.setText(temp_str);
 | 
			
		||||
    //update the fan speed auto is 18, high 19, medium 21, low 20
 | 
			
		||||
    // Fan Speed 0: Auto, 1: High, 2: Mid, 3: Low
 | 
			
		||||
    uint8_t fan_speed = ac_get_fan_speed();
 | 
			
		||||
    if(fan_speed == 0) {
 | 
			
		||||
        fan.Set_background_image_pic(18);
 | 
			
		||||
    } else if(fan_speed == 1) {
 | 
			
		||||
        fan.Set_background_image_pic(19);
 | 
			
		||||
    } else if(fan_speed == 2) {
 | 
			
		||||
        fan.Set_background_image_pic(21);
 | 
			
		||||
    } else if(fan_speed == 3) {
 | 
			
		||||
        fan.Set_background_image_pic(20);
 | 
			
		||||
    } else {
 | 
			
		||||
        fan.Set_background_image_pic(18);
 | 
			
		||||
    }
 | 
			
		||||
    //update the mode cool is 22, fan mode is 24, for off the toggle button act as indicator
 | 
			
		||||
    //Mode 0: Off, 1: Cool, 2: Fan 
 | 
			
		||||
    uint8_t mode_state = ac_get_mode();
 | 
			
		||||
    mode.Set_background_image_pic(mode_state==1?22:24);
 | 
			
		||||
    //update the ac toggle button
 | 
			
		||||
    ac_toggle.Set_background_image_pic(ac_get_mode()==0?1:2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void pwm_changed_user_callback(int pin)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -60,10 +60,13 @@
 | 
			
		|||
// Analog Module Configuration
 | 
			
		||||
#define ANALOG_REPORTING_INTERVAL 500
 | 
			
		||||
 | 
			
		||||
// User Defined Variables
 | 
			
		||||
uint8_t acmode = 0;
 | 
			
		||||
 | 
			
		||||
// User Defined Functions
 | 
			
		||||
#define elcd ESPMega_EXTLCD
 | 
			
		||||
void elcd_send_stop_bit();
 | 
			
		||||
bool row1_is_on();
 | 
			
		||||
bool row_is_on(int light1_pin, int light2_pin);
 | 
			
		||||
void update_lcd_row1();
 | 
			
		||||
void update_lcd_row2();
 | 
			
		||||
void update_lcd_row3();
 | 
			
		||||
| 
						 | 
				
			
			@ -82,6 +85,14 @@ void row1_master_pop_callback(void *ptr);
 | 
			
		|||
void row2_master_pop_callback(void *ptr);
 | 
			
		||||
void row3_master_pop_callback(void *ptr);
 | 
			
		||||
void row4_master_pop_callback(void *ptr);
 | 
			
		||||
void increase_temp();
 | 
			
		||||
void decrease_temp();
 | 
			
		||||
void temp_plus_pop_callback(void *ptr);
 | 
			
		||||
void temp_neg_pop_callback(void *ptr);
 | 
			
		||||
void fan_pop_callback(void *ptr);
 | 
			
		||||
void mode_pop_callback(void *ptr);
 | 
			
		||||
void ac_toggle_pop_callback(void *ptr);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// User Defined IoT Core Callback Functions (Required)
 | 
			
		||||
void user_mqtt_callback(char* topic, uint8_t topic_length, char* payload, unsigned int payload_length);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue