成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用鴻蒙開發板制作一個空壓機儲氣罐自動排水裝置

開發 前端
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com

[[403297]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

潤和的Neptune開發板,是一塊具有較高性價比的鴻蒙開發板,也可以應用于工業控制領域。

夏季到了,很多地方的空氣比冬季潮濕了許多,于是壓縮空氣的含水量也大了起來,即使有冷干機,儲氣罐也常常會在罐底積留一部分水分,不及時排出,會影響工廠氣路和氣動元件的正常運行。更不用說沒有冷干機的供氣系統。儲氣罐在很多工廠還是人工排水,存在排水不及時和費時費工的弊端。這個夏季,我們就用鴻蒙開發板來完成儲氣罐的自動排水。

說干就干,先做準備:

1. 潤和海王星 Neptune HH-SLNPT102 開發板一塊。

2. 潤和HiSpark_WIFI_IoT_OLED_VER.A顯示板一塊。

3. 潤和HiSpark_WIFI_IoT_EXB_VER.A底板一塊。

4. 電磁水閥一個,尺寸和儲氣罐下部的排水口匹配,管道根據儲氣罐現場配套。

5. 3.3v繼電器一個,按鈕兩個,杜邦線若干,電源線。

6. 編輯,編譯環境,Ubuntu20.04.2 LTS, 燒錄 Windows環境SecureCRT

7. 程序框架,hihope/neptune_iot,1.0.1版(2021.04.29)

如圖做好連接:

1. Neptune HH-SLNPT102 開發板和HiSpark_WIFI_IoT_OLED_VER.A顯示板直接插在底板上。

2. 繼電器線圈受PB_10控制,連接底板的D10, 3V3及GND.繼電器的輸出端控制電磁水閥的通斷從而實現自動排水功能。

3. 藍色按鈕接底板的D1和GND,對應開發板的PB_06,每按下一次,電磁水閥關閉時間增加10分鐘,最長間隔24小時。

4. 紅色按鈕接底板的D0和GND,對應開發板的PB_07,每按下一次,電磁水閥開啟時間增加1秒鐘,單次排水最長時間3分鐘。

5. 開發板板載按鈕PB_09按下一次,轉換一種工作模式,分別是:常開,常閉,間歇排水模式。

主程序代碼如下:

  1. #include <stdio.h> 
  2. #include <unistd.h> 
  3.  
  4. #include "ohos_init.h" 
  5. #include "cmsis_os2.h" 
  6. #include "wifiiot_gpio.h" 
  7. #include "wifiiot_gpio_ex.h" 
  8. #include "oled_ssd1306.h" 
  9. #include "wifiiot_gpio_w800.h" 
  10.  
  11.  
  12. int working = 0;  //電磁水閥工作狀態 0/開  1/關 
  13. int m = 60;      //間歇工作電磁水閥關閉時間初始值1分鐘 
  14. int n = 5;        //間歇工作電磁水閥開啟時間初始值5秒 
  15. int times = 0;    //計時,秒為單位 
  16.  
  17. enum State 
  18.     ON = 0, 
  19.     OFF
  20.     SPARK, 
  21. }; 
  22.  
  23. enum State g_State = SPARK;  
  24.  
  25. static void DrainageTask(void *arg) 
  26.     (void)arg; 
  27.     OledInit(); 
  28.  
  29.     OledFillScreen(0x00); 
  30.     OledShowString(0, 1, "Air Comprwssor", 2); //開機顯示2秒 
  31.     OledShowString(0, 5, "Auto Drainage", 2);  
  32.     osDelay(2000); 
  33.      
  34.     OledFillScreen(0x00); 
  35.     while (1) 
  36.     { 
  37.         OledShowString(0, 0, "****************", 2); 
  38.         OledShowString(0, 2, "* Auto Drainage*", 2); //OLED固定顯示 
  39.         OledShowString(0, 4, "*              *", 2); 
  40.         OledShowString(0, 6, "*              *", 2); 
  41.         osDelay(500); 
  42.         static char line[32] = {0}; 
  43.         static char line1[32] = {0}; 
  44.         
  45.         switch (g_State) 
  46.         { 
  47.         case ON:  //電磁水閥常開工作模式 
  48.             GpioSetOutputVal(WIFI_IOT_GPIO_PB_10, WIFI_IOT_GPIO_VALUE0); 
  49.             snprintf(line, sizeof(line), "*              *");  
  50.             snprintf(line1, sizeof(line1), "*  ON   ");  
  51.             break; 
  52.   
  53.         case OFF:  //電磁水閥常閉工作模式 
  54.             GpioSetOutputVal(WIFI_IOT_GPIO_PB_10, WIFI_IOT_GPIO_VALUE1); 
  55.             snprintf(line, sizeof(line), "*              *");  
  56.             snprintf(line1, sizeof(line1), "*        OFF");  
  57.             break; 
  58.  
  59.         case SPARK:  //電磁水閥間歇工作模式 
  60.             times++;  
  61.             if (working == 0)   //排水定時控制 
  62.             { 
  63.                 snprintf(line, sizeof(line), "* ON Remaining");          
  64.                 snprintf(line1, sizeof(line1), "*   %d sec", n - times); //秒顯示,倒計時 
  65.                 if (times<n) 
  66.                 { 
  67.                     GpioSetOutputVal(WIFI_IOT_GPIO_PB_10, WIFI_IOT_GPIO_VALUE0); 
  68.                 } 
  69.  
  70.                 if (times>=n) 
  71.                 { 
  72.                     working = 1; 
  73.                     times = 0; 
  74.                 } 
  75.             } 
  76.             else   //電磁水閥關閉定時控制 
  77.             { 
  78.                 snprintf(line, sizeof(line), "*OFF Remaining");           
  79.                 snprintf(line1, sizeof(line1), "*   %d min", (m - times)/60);  //分鐘顯示,倒計時 
  80.                 if (times<m) 
  81.                 { 
  82.                     GpioSetOutputVal(WIFI_IOT_GPIO_PB_10, WIFI_IOT_GPIO_VALUE1); 
  83.                 } 
  84.                 if (times>=m) 
  85.                 { 
  86.                     working = 0; 
  87.                     times= 0; 
  88.                 } 
  89.             }; 
  90.             break; 
  91.  
  92.         default
  93.             break; 
  94.         }  
  95.         OledShowString(0, 4, line, 2);  //OLED動態顯示 
  96.         OledShowString(0, 6, line1, 2); //OLED動態顯示 
  97.         osDelay(500);                
  98.     } 
  99.  
  100. static void GpioIsr(char *arg)  //板載按鈕中斷方式切換工作模式 
  101.     (void)arg; 
  102.     enum State nextState = SPARK; 
  103.     printf(" P9 Press!  \n"); 
  104.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_09, 1); 
  105.  
  106.     switch (g_State) 
  107.     { 
  108.     case ON
  109.         nextState = OFF
  110.         break; 
  111.  
  112.     case OFF
  113.         nextState = SPARK; 
  114.         break; 
  115.  
  116.     case SPARK: 
  117.         nextState = ON
  118.         break; 
  119.  
  120.     default
  121.         break; 
  122.     } 
  123.     g_State = nextState; 
  124.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_09, 0); 
  125.  
  126. static void F1(char *arg)  //外置F1按鈕中斷方式調整閥關閉時間,最長24小時,步長10分鐘 
  127.     (void)arg; 
  128.     printf(" P6 Press!  \n"); 
  129.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_06, 1); 
  130.     if (m>86400) 
  131.     { 
  132.         m = 0 ; 
  133.     } 
  134.     m = m + 600 ; 
  135.     times = 0; 
  136.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_06, 0); 
  137.  
  138. static void F2(char *arg)  //外置F2按鈕中斷方式調整開啟時間,最長3分鐘,步長1秒 
  139.     (void)arg; 
  140.     printf(" P7 Press!  \n"); 
  141.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_07, 1); 
  142.  
  143.     if (n>180) 
  144.     { 
  145.         n = 0 ; 
  146.     } 
  147.     n = n + 1 ; 
  148.     times = 0; 
  149.     GpioSetIsrMask(WIFI_IOT_GPIO_PB_07, 0); 
  150.  
  151. static void DrainageDemo(void) 
  152.     osThreadAttr_t attr; 
  153.  
  154.     
  155.     GpioInit(); 
  156.     GpioSetDir(WIFI_IOT_GPIO_PB_10, WIFI_IOT_GPIO_DIR_OUTPUT);  //通過繼電器控制電磁水閥。  底板的D10 
  157.  
  158.     GpioSetDir(WIFI_IOT_GPIO_PB_09, WIFI_IOT_GPIO_DIR_INPUT);   //開發版板載P9按鈕,中斷輸入。 
  159.     IoSetPull(WIFI_IOT_GPIO_PB_09, WIFI_IOT_GPIO_ATTR_PULLHIGH); 
  160.     GpioRegisterIsrFunc(WIFI_IOT_GPIO_PB_09, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, GpioIsr, NULL); 
  161.      
  162.     GpioSetDir(WIFI_IOT_GPIO_PB_06, WIFI_IOT_GPIO_DIR_INPUT);  //外置P6按鈕,中斷輸入。  底板的D1 
  163.     IoSetPull(WIFI_IOT_GPIO_PB_06, WIFI_IOT_GPIO_ATTR_PULLHIGH); 
  164.     GpioRegisterIsrFunc(WIFI_IOT_GPIO_PB_06, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, F1, NULL); 
  165.  
  166.     GpioSetDir(WIFI_IOT_GPIO_PB_07, WIFI_IOT_GPIO_DIR_INPUT);  //外置P7按鈕,中斷輸入。  底板的D0 
  167.     IoSetPull(WIFI_IOT_GPIO_PB_07, WIFI_IOT_GPIO_ATTR_PULLHIGH); 
  168.     GpioRegisterIsrFunc(WIFI_IOT_GPIO_PB_07, WIFI_IOT_INT_TYPE_EDGE, WIFI_IOT_GPIO_EDGE_FALL_LEVEL_LOW, F2, NULL); 
  169.  
  170.     attr.name = "DrainageTask"
  171.     attr.attr_bits = 0U; 
  172.     attr.cb_mem = NULL
  173.     attr.cb_size = 0U; 
  174.     attr.stack_mem = NULL
  175.     attr.stack_size = 4096; 
  176.     attr.priority = osPriorityNormal; 
  177.  
  178.     if (osThreadNew(DrainageTask, NULL, &attr) == NULL
  179.     { 
  180.         printf("[DrainageDemo] Falied to create DrainageTask!\n"); 
  181.     } 
  182.  
  183. APP_FEATURE_INIT(DrainageDemo); 

 編譯,下載,重啟開發板后,顯示和控制正常。按下板載PB_09按鍵,切換到常開模式,再按一次,切換到常閉模式,相應OLED屏做顯示。

再按一次PB_09按鍵,進入間歇工作模式,每次電磁水閥開啟一段時間進行排水(開啟時間長短由紅色按鈕F2調整),關閉一段時間(時間長短由藍色按鈕F1調整),周而復始,實現空壓機儲氣罐的自動排除底部積水。每次開啟和關閉時間長短,可以根據各自壓縮空氣系統實際情況來調整。

Neptune開發板由于較高的性價比,在工業領域有廣闊的應用空間。比如,本文的儲氣罐排水控制器還可以與空壓機聯動,也可以發揮網絡功能實現遠程監控等,期待廣大鴻蒙開發者發掘更多的應用領域。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2020-12-29 09:59:01

鴻蒙HarmonyOS智能家居

2020-10-30 17:12:05

Hi3861

2020-12-16 10:05:48

鴻蒙開發板Onenet平臺

2020-10-30 09:48:03

Hi3861開發板get請求

2022-06-28 14:30:29

camera組件照片回傳

2020-11-19 10:25:24

MQTT

2020-10-27 10:00:26

鴻蒙開發板物聯網

2020-12-02 11:55:40

OLED

2020-11-17 12:15:36

MQTT開發

2022-07-13 15:31:29

手繪板canvas鴻蒙

2021-12-15 15:28:18

鴻蒙HarmonyOS應用

2020-11-26 12:02:07

OneNet平臺

2009-07-02 10:02:40

JSP程序

2020-12-10 12:12:32

鴻蒙開發板init_lite

2021-12-30 16:12:07

鴻蒙HarmonyOS應用

2021-01-07 11:24:51

鴻蒙HarmonyOS音樂

2020-10-20 09:32:43

HiSparkWi-FiIoT

2022-04-01 15:54:01

DHCP網絡協議開發板

2021-09-16 10:03:39

鴻蒙HarmonyOS應用

2022-10-14 15:55:24

環境搭建鴻蒙
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久区二区三区蜜桃臀 | 黄免费在线| 国产综合欧美 | 成人精品久久 | 国产一区二区视频在线观看 | 国产高清精品一区二区三区 | 欧美一区免费 | 亚洲精品成人 | 欧美久久久久久久 | 97国产精品 | 一级黄色片一级黄色片 | 日韩成人精品在线 | av激情在线| 91在线观看| www.亚洲国产精品 | 99免费在线观看视频 | 一区二区在线免费观看 | 国产91在线播放 | 久久国产欧美日韩精品 | 久久亚洲一区 | 欧美一级一| 91精品国产综合久久婷婷香蕉 | 国产精品久久久久久久久久久久 | 久久久精品天堂 | 亚洲激情综合 | 夜夜夜久久久 | 日韩欧美精品一区 | 人人干人人玩 | 久色| 国产成人精品久久二区二区 | 成人免费视频久久 | 久久大| 小早川怜子xxxxaⅴ在线 | 欧美成人久久 | 国产精品免费一区二区三区四区 | 91不卡 | 亚洲毛片在线 | 欧美激情亚洲激情 | 婷婷丁香在线视频 | 四虎av电影 | 黄页网址在线观看 |