#include #include #include #include #include #include "ili9341.h" #include "ili9341gfx.h" #include "ads1115.h" #define Fan 3 #define supply_volt 5.03 #define ACS712_out (supply_volt/2) #define ref_volt 4.096 #define R1 18 #define R2 2 #define div_coeff ((R1+R2)/R2) extern volatile uint16_t backup_x,backup_y; uint16_t Voutx,Vouty,Ix,Iy,Tempx,Tempy; void load_screen1(void) { ili9341_setcursor(0,0); ili9341_settextsize(3); ili9341_settextcolour(WHITE,BLACK); ili9341_printstring("VOLT - ");//voltage measurements ili9341_settextsize(5); ili9341_settextcolour(GREEN,BLACK); ili9341_backupcursor(); Voutx=backup_x; Vouty=backup_y;//coordinates to update voltage ili9341_printstring("00.00V\n\n"); ili9341_settextsize(3); ili9341_settextcolour(WHITE,BLACK); ili9341_printstring("AMP - "); ili9341_settextsize(5); ili9341_settextcolour(GREEN,BLACK); ili9341_backupcursor(); Ix=backup_x; Iy=backup_y;//coordinates to update ampere ili9341_printstring("00.00A\n\n"); ili9341_settextsize(3); ili9341_settextcolour(WHITE,BLACK); ili9341_printstring("TEMP - "); ili9341_settextsize(5); ili9341_settextcolour(GREEN,BLACK); ili9341_backupcursor(); Tempx=backup_x; Tempy=backup_y;//coordinates to update voltage ili9341_printstring("00"); ili9341_write(0xF7);//degree sign ili9341_write(' '); ili9341_settextsize(3); ili9341_settextcolour(WHITE,BLACK); ili9341_printstring("FAN"); ili9341_setcursor(245,190); ili9341_printstring("OFF"); } void display1(uint16_t x1,uint16_t y1,uint8_t size,uint16_t colour,uint16_t displaydata) { ili9341_setcursor(x1,y1); _delay_ms(1); ili9341_settextsize(size); _delay_ms(1); ili9341_settextcolour(colour,BLACK); _delay_ms(1); ili9341_write((displaydata/1000)+48); displaydata%=1000; ili9341_write((displaydata/100)+48); displaydata%=100; ili9341_write('.'); _delay_ms(1); ili9341_write((displaydata/10)+48); displaydata%=10; ili9341_write(displaydata+48); } void display_temp(uint8_t x1,uint8_t y1,uint8_t size,uint16_t colour,uint8_t temp) { ili9341_setcursor(x1,y1); _delay_ms(1); ili9341_settextsize(size); _delay_ms(1); ili9341_settextcolour(colour,BLACK); _delay_ms(1); ili9341_write((temp/10)+48); _delay_ms(1); ili9341_write((temp%10)+48); _delay_ms(1); } uint16_t measure_volt(void) { uint16_t result,volt; double temp_val; result=read_ads1115_single_ended(0); temp_val=(result * ref_volt * div_coeff)/32768; volt=(uint16_t)(temp_val * 100); return volt; } uint16_t measure_amp(void) { double temp_val; uint16_t result,amp=0; result=read_ads1115_single_ended(1); temp_val=(result * ref_volt)/32768; if(temp_val>ACS712_out) { temp_val=(temp_val-ACS712_out)/0.185; amp=(uint16_t)(temp_val * 100); } return amp; } uint16_t measure_temp(void) { double temp_val; uint16_t result,temp; result=read_ads1115_single_ended(2); temp_val=(result * ref_volt)/32768; temp=(uint16_t)(temp_val * 100); return temp; } int main(void) { uint16_t Volt_main,Amp_main,Temp_main; uint8_t Fan_stat=0; ili9341_init();//initial driver setup to drive ili9341 PORTD &=~(1<50) { if(Fan_stat==0)//If the fan was previously off { PORTD|=(1<