Advertisement
Guest User

Code Arduino - H50B-IC

a guest
Jul 7th, 2020
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.65 KB | None | 0 0
  1. // IIC Wire lcd Master Writer
  2. // by martin xhli <http://www.hundatech.com>
  3.  
  4. // This example code is in the public domain.
  5.  
  6. #include "LiquidCrystalDisplay.h"
  7.  
  8.  
  9. const uint8_t String01[]="Password ok!";
  10. const uint8_t String02[]="Password error!";
  11. const uint8_t String03[]="Error";
  12.  
  13. const uint8_t String04[]="Input number ok!";
  14. const uint8_t String05[]="Input number error!";
  15.  
  16. uint8_t   identifier,cnt;
  17. uint8_t   cmd_buffer[CMD_MAX_SIZE];
  18. uint8_t   data_size;
  19. uint8_t   update_en;
  20. uint8_t   command_cmd;
  21. uint8_t   command_statu;
  22. uint8_t   command_length;
  23. uint8_t   page_Id_bk = 0;
  24. uint8_t   page_Id = 0;
  25. uint8_t   targe_Id = 0;
  26.  
  27. LiquidCrystal TFTlcd(13);//RST pin13
  28.  
  29. void setup()
  30. {
  31.    update_en = 0;
  32.    data_size = 0;
  33.    TFTlcd.queue_reset();
  34.    
  35.    Serial.begin(9600);
  36.    Serial.println(F("Paint!"));
  37.    TFTlcd.begin();
  38.  
  39.    attachInterrupt(0,LcdIICInterrupt,FALLING);//Interrupt 0 is D2 PIN
  40.    TFTlcd.SetPage(4);//main page id is 4
  41. }
  42.  
  43. void LcdIICInterrupt()
  44. {
  45.     command_cmd = TFTlcd.I2C_Read();
  46.     TFTlcd.queue_push(command_cmd);
  47.     for(cnt =0;cnt <2;cnt++)
  48.     {
  49.      identifier = TFTlcd.I2C_Read();
  50.      TFTlcd.queue_push(identifier);
  51.      Serial.println(identifier, HEX);
  52.     }
  53.     command_statu = TFTlcd.I2C_Read();
  54.     TFTlcd.queue_push(command_statu);
  55.     identifier = TFTlcd.I2C_Read();
  56.     TFTlcd.queue_push(identifier);
  57.     command_length = TFTlcd.I2C_Read();
  58.     TFTlcd.queue_push(command_length);
  59.     if((command_cmd == GET_EDIT_VALUE && command_statu == 0x6f)||(command_cmd == GET_TOUCH_EDIT_VALUE && command_statu == 0x6f))
  60.     {
  61.        for(cnt =0;cnt <command_length;cnt++)
  62.       {
  63.        identifier = TFTlcd.I2C_Read();
  64.        TFTlcd.queue_push(identifier);
  65.        Serial.println(identifier, HEX);
  66.       }
  67.     }
  68. }
  69.  
  70. void loop()
  71. {
  72.     data_size = TFTlcd.queue_find_cmd(cmd_buffer,CMD_MAX_SIZE);
  73.   if(data_size>0)//receive command
  74.   {
  75.     Serial.println(data_size, HEX);
  76.     Serial.println(F("ProcessMessage"));
  77.     ProcessMessage((PCTRL_MSG)cmd_buffer, data_size);//command process
  78.   }
  79.  
  80.   if(update_en)
  81.   {
  82.     Serial.println(F("UpdateUI"));
  83.     update_en = 0;
  84.     delay(100);
  85.     UpdateUI();
  86.   }
  87. }
  88.  
  89. void ProcessMessage( PCTRL_MSG msg, uint16_t dataSize )
  90. {
  91.     uint8_t cmd_type    = msg->cmd_type;
  92.     uint8_t control_id  = msg->control_id;
  93.     uint8_t page_id     = msg->page_id;
  94.     uint8_t _status     = msg->status;
  95.     uint8_t key_type    = msg->key_type;
  96.     uint8_t key_value   = msg->key_value;
  97.     switch(cmd_type)
  98.     {
  99.     case NOTIFY_TOUCH_BUTTON:
  100.       NotifyTouchButton(page_id,control_id,_status,key_type,key_value);
  101.       break;
  102.  
  103.     case NOTIFY_TOUCH_CHECKBOX:
  104.       NotifyTouchCheckbox(page_id,control_id,_status,key_type,key_value);
  105.       break;
  106.  
  107.     case NOTIFY_TOUCH_SLIDER:
  108.       NotifyTouchSlider(page_id,control_id,_status,key_type,key_value);
  109.       break;
  110.  
  111.     case NOTIFY_TOUCH_EDIT:
  112.     NotifyTouchEdit(page_id,control_id,_status,key_type,key_value);
  113.     break;
  114.    
  115.     case NOTIFY_GET_EDIT:
  116.      NotifyGetEdit((PEDIT_MSG)cmd_buffer);
  117.       break;
  118.  
  119.     case NOTIFY_GET_TOUCH_EDIT:
  120.     NotifyGetTouchEdit((PEDIT_MSG)cmd_buffer);
  121.     break;
  122.  
  123.     case NOTIFY_GET_PAGE:
  124.       NotifyGetPage(page_id,_status);
  125.       break;
  126.  
  127.     case NOTIFY_GET_CHECKBOX:
  128.       NotifyGetCheckbox(page_id,control_id,_status,key_type,key_value);
  129.       break;
  130.  
  131.     case NOTIFY_GET_SLIDER:
  132.       NotifyGetSlider(page_id,control_id,_status,key_type,key_value);
  133.       break;
  134.      
  135.     default:
  136.       break;
  137.   }
  138. }
  139.  
  140. void UpdateUI()
  141. {
  142.     int i;
  143.     int value;
  144.     if(page_Id == Text_PAGE)
  145.     {
  146.       TFTlcd.SetNumberValue(page_Id,19,20);
  147.       TFTlcd.SetNumberValue(page_Id,20,21);
  148.       TFTlcd.SetNumberValue(page_Id,21,28);
  149.       TFTlcd.SetNumberValue(page_Id,22,35);
  150.       TFTlcd.SetNumberValue(page_Id,23,46);
  151.       TFTlcd.SetNumberValue(page_Id,24,58);
  152.       TFTlcd.SetLableValue(page_Id,16,(unsigned char *)String03);
  153.       TFTlcd.SetLableValue(page_Id,17,(unsigned char *)String03);
  154.       TFTlcd.SetLableValue(page_Id,18,(unsigned char *)String03);
  155.     }
  156.     else if(page_Id == Waveform_PAGE)
  157.     {
  158.        Serial.println(F("Waveform_PAGE"));
  159.       for(i=-125;i<125;i+=1)
  160.       {
  161.         value = 20*sin(PI/50*i);
  162.         TFTlcd.SetWaveformValue(page_Id,9,2,value+119);
  163.         TFTlcd.SetWaveformValue(page_Id,9,1,value+59);
  164.         delay(10);
  165.       }
  166.     }
  167.     else if(page_Id == Temperture_PAGE)
  168.     {
  169.       value =20;
  170.       for(i=0;i<=10;i+=1)
  171.       {
  172.         TFTlcd.SetThermometerValue(page_Id,9,value);
  173.         TFTlcd.SetNumberValue(page_Id,11,value-20);
  174.         value +=10;
  175.         delay(200);
  176.       }
  177.  
  178.       value =120;
  179.       for(i=0;i<=10;i+=1)
  180.       {
  181.         TFTlcd.SetThermometerValue(page_Id,9,value);
  182.         TFTlcd.SetNumberValue(page_Id,11,value-20);
  183.         value -=10;
  184.         delay(200);
  185.       }
  186.     }
  187.     else if(page_Id == Slider_PAGE)
  188.   {
  189.     value =0;
  190.     for(i=0;i<10;i+=1)
  191.     {
  192.       TFTlcd.SetProgressbarValue(page_Id,18,value);
  193.       TFTlcd.SetProgressbarValue(page_Id,20,value);
  194.       value +=10;
  195.       delay(200);
  196.     }
  197.   }
  198.   else if(page_Id == CircleGauge_PAGE)
  199.   {
  200.     value =0;
  201.     for(i=0;i<=10;i+=1)
  202.     {
  203.       TFTlcd.SetCircleGaugeValue(page_Id,37,value);
  204.       TFTlcd.SetBarGaugeValue(page_Id,40,value);
  205.      
  206.       value +=10;
  207.       delay(200);
  208.     }
  209.  
  210.     value =100;
  211.     for(i=0;i<=10;i+=1)
  212.     {
  213.       TFTlcd.SetCircleGaugeValue(page_Id,37,value);
  214.       TFTlcd.SetBarGaugeValue(page_Id,40,value);
  215.      
  216.       value -=10;
  217.       delay(200);
  218.     }
  219.   }
  220.   else if(page_Id == BarGauge_PAGE)
  221.   {
  222.     value =0;
  223.     for(i=0;i<=10;i+=1)
  224.     {
  225.       TFTlcd.SetBatteryValue(page_Id,44,value);
  226.       TFTlcd.SetWaterGaugeValue(page_Id,42,value);
  227.       value +=10;
  228.       delay(100);
  229.     }
  230.  
  231.     value =100;
  232.     for(i=0;i<=10;i+=1)
  233.     {
  234.       TFTlcd.SetBatteryValue(page_Id,44,value);
  235.       TFTlcd.SetWaterGaugeValue(page_Id,42,value);
  236.       value -=10;
  237.       delay(100);
  238.     }
  239.   }
  240. }
  241.  
  242. void NotifyTouchButton(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
  243. {
  244.   //TODO:
  245.   if(type == CHANGE_PAGE&& state == KEY_RELEASE)
  246.   {
  247.     page_Id = value;
  248.     update_en = 1;
  249.     UpdateUI();
  250.   }
  251.   else if(type == ENTER&& state == KEY_RELEASE)
  252.   {
  253.     targe_Id = value;//targe Edit Id
  254.      TFTlcd.GetEditValue(page_Id,targe_Id);
  255.   }
  256.   else if(type == CHAR)
  257.   {
  258.  
  259.   }
  260.   else if(type == UPLOAD_CONTROL_ID)
  261.   {
  262.   }
  263.   else if(type == CLEAR)
  264.   {
  265.   }
  266.  
  267. }
  268.  
  269. void NotifyTouchCheckbox(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
  270. {
  271.   //TODO:
  272.   if(state == SELECT)
  273.     update_en = 1;
  274.   //UpdateUI();
  275. }
  276.  
  277. void NotifyTouchSlider(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
  278. {
  279.   //TODO:
  280.   if(update_en != 1)
  281.   TFTlcd.SetNumberValue(page_Id,28,(uint16_t)value);
  282.   //UpdateUI();
  283. }
  284.  
  285. void NotifyTouchEdit(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
  286. {
  287.   //TODO:
  288.   if(update_en != 1)
  289.     TFTlcd.GetTouchEditValue(page_Id,control_id);
  290.  
  291. }
  292.  
  293. void NotifyGetEdit(PEDIT_MSG msg)
  294. {
  295.   uint8_t cmd_type    = msg->cmd_type;  //command
  296.   uint8_t control_id  = msg->control_id;//object Id
  297.   uint8_t page_id     = msg->page_id;   //page Id
  298.   uint8_t _status     = msg->status;
  299.  
  300.  
  301.   //The test passward number 1 2 3 4,ASCII code is 0x31 0x32 0x33 0x34
  302.   if(msg->param[0] == 0x31 && msg->param[1] == 0x32 && msg->param[2] == 0x33 && msg->param[3] == 0x34)
  303.   {
  304.     TFTlcd.Display_Message(0X18,2,(unsigned char *)String01);  
  305.   }
  306.   else
  307.   {
  308.     TFTlcd.Display_Message(0X18,2,(unsigned char *)String02);  
  309.   }
  310.  
  311. }
  312.  
  313. void NotifyGetTouchEdit(PEDIT_MSG msg)
  314. {
  315.   uint8_t cmd_type    = msg->cmd_type;  //command
  316.   uint8_t control_id  = msg->control_id;//object Id
  317.   uint8_t page_id     = msg->page_id;   //page Id
  318.   uint8_t _status     = msg->status;
  319.  
  320.  
  321.   //The test passward number 1 2 3 4,ASCII code is 0x31 0x32 0x33 0x34
  322.   if(msg->param[0] == 0x31 && msg->param[1] == 0x32 && msg->param[2] == 0x33 && msg->param[3] == 0x34)
  323.   {
  324.     TFTlcd.Display_Message(0X18,2,(unsigned char *)String04);  
  325.   }
  326.   else
  327.   {
  328.     TFTlcd.Display_Message(0X18,2,(unsigned char *)String05);  
  329.   }
  330.  
  331. }
  332.  
  333. void NotifyGetPage(uint8_t page_id,uint8_t status)
  334. {
  335.   //TODO:
  336.   if(status == SUCCESS)
  337.     page_Id = page_id;
  338. }
  339.  
  340.  
  341. void NotifyGetCheckbox(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
  342. {
  343.   //TODO:
  344.   if(state == SELECT)
  345.   {
  346.     update_en = 1;
  347.   }
  348.   //UpdateUI();
  349. }
  350.  
  351. void NotifyGetSlider(uint8_t page_id, uint8_t control_id, uint8_t  state,uint8_t type,uint8_t value)
  352. {
  353.   //TODO:
  354.   if(state == SUCCESS)
  355.   {
  356.     //success get value
  357.   }
  358.   update_en = 1;
  359. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement