久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7581|回復: 7
打印 上一主題 下一主題
收起左側(cè)

微信+arduino遠程控制RGB燈的設(shè)計

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:394509 發(fā)表于 2018-9-6 13:45 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 lfb532 于 2018-9-13 05:30 編輯

遠程控制RGB燈

例如在微信界面點擊發(fā)送,微信界面發(fā)送字符“$RGB,R255,G125,B000#”至下位機,下位機根據(jù)程序判斷打開燈R亮度255,燈G亮度125,B燈亮度0。
解釋協(xié)議:R燈亮度255;G燈亮度125;B燈亮度0。
然后下位機給微信界面返回數(shù)據(jù)包$RGB,(0-2),#
解釋協(xié)議:$RGB,0,#:成功;
                  $RGB,1,#:失敗;
                  $RGB,2,#:不匹配當前



單片機源程序如下:
  1. /**
  2. * @par Copyright (C): 2010-2019, Shenzhen Yahboom Tech
  3. * @file         2、遠程控制RGB燈
  4. * @author       liusen
  5. * @version      V1.0
  6. * @date         2017.11.14
  7. * @brief        AR物聯(lián)網(wǎng)套件
  8. * @details
  9. * @par History  見如下說明
  10. *
  11. */


  12. //定義引腳
  13. int RED_LED_Pin = 3;              //紅色LED
  14. int GREEN_LED_Pin = 10;           //綠色LED
  15. int BLUE_LED_Pin = 11;          //黃色LED


  16. int incomingByte = 0;       // 接收到的 data byte
  17. String inputString = "";         // 用來儲存接收到的內(nèi)容
  18. boolean newLineReceived = false; // 前一次數(shù)據(jù)結(jié)束標志
  19. boolean startBit  = false;  //協(xié)議開始標志


  20. String returntemp = ""; //存儲返回值
  21. /**
  22. * Function       setup
  23. * @author        liusen
  24. * @date          2017.11.14
  25. * @brief         初始化配置
  26. * @param[in]     void
  27. * @retval        void
  28. * @par History   無
  29. */
  30. void setup()
  31. {
  32.    //初始化LEDIO口為輸出方式
  33.    pinMode(RED_LED_Pin, OUTPUT);   
  34.    pinMode(GREEN_LED_Pin, OUTPUT);
  35.    pinMode(BLUE_LED_Pin, OUTPUT);
  36.   
  37.    Serial.begin(9600);        //波特率9600 (Wifi通訊設(shè)定波特率)
  38.    //LED初始化低電平
  39.   digitalWrite(RED_LED_Pin, LOW);   
  40.   digitalWrite(GREEN_LED_Pin, LOW);  
  41.   digitalWrite(BLUE_LED_Pin, LOW);  

  42.   
  43. }
  44. /**
  45. * Function       loop
  46. * @author        liusen
  47. * @date          2017.11.14
  48. * @brief         按照接收的數(shù)據(jù)根據(jù)協(xié)議完成相應的功能
  49. * @param[in]     void
  50. * @retval        void
  51. * @par History   無
  52. */
  53. void loop()
  54. {     
  55.     //$RGB,R255,G125,B000#
  56.     while (newLineReceived)
  57.     {
  58.        if(inputString.indexOf("RGB") == -1)  //如果要檢索的字符串值“RGB”沒有出現(xiàn)
  59.        {
  60.            returntemp = "$RGB,2,#";   //返回不匹配
  61.            Serial.print(returntemp); //返回協(xié)議數(shù)據(jù)包      
  62.            inputString = "";   // clear the string
  63.            newLineReceived = false;
  64.            break;   
  65.        }
  66.        //紅色解析
  67.        int i = inputString.indexOf("R", 2);   //從接收到的數(shù)據(jù)中以2為起始位置檢索字符串“R”的位置
  68.        int ii = inputString.indexOf(",", i);  //從接收到的數(shù)據(jù)中以i為起始位置檢索字符串“,”的位置
  69.        if(ii > i && ii > 0 && i > 0 )         //如果ii和i的順序?qū)α瞬⑶覚z索到ii與i存在
  70.        {
  71.           String sRedPWM = inputString.substring(i + 1, ii);  //提取字符串中介于指定下標i+1到ii之間的字符賦值給sRedPWM
  72.           int iRedPWM = sRedPWM.toInt();                      //將字符串sRedPWM轉(zhuǎn)為整型
  73.           analogWrite(RED_LED_Pin, iRedPWM);                  
  74.         }
  75.         else     //檢索到ii和i的順序不對或者沒有檢索到ii或者i
  76.         {
  77.           returntemp = "$RGB,1,#";   //返回匹配失敗
  78.           Serial.print(returntemp); //返回協(xié)議數(shù)據(jù)包      
  79.           inputString = "";   // clear the string
  80.           newLineReceived = false;
  81.           break;   
  82.         }
  83.         //綠色解析
  84.         i = inputString.indexOf("G", ii);    //從接收到的數(shù)據(jù)中以ii為起始位置檢索字符串“G”的位置
  85.         ii = inputString.indexOf(",", i);    //從接收到的數(shù)據(jù)中以i為起始位置檢索字符串“,”的位置
  86.         if(ii > i && ii > 0 && i > 0 )       //如果ii和i的順序?qū)α瞬⑶覚z索到ii與i存在
  87.         {
  88.           String sGreenPWM = inputString.substring(i + 1, ii);   //提取字符串中介于指定下標i+1到ii之間的字符賦值給sGreenPWM
  89.           int iGreenPWM = sGreenPWM.toInt();                     //將字符串sGreenPWM轉(zhuǎn)為整型
  90.           analogWrite(GREEN_LED_Pin, iGreenPWM);                 
  91.         }
  92.         else      //檢索到ii和i的順序不對或者沒有檢索到ii或者i
  93.         {
  94.           returntemp = "$RGB,1,#";   //返回匹配失敗
  95.           Serial.print(returntemp); //返回協(xié)議數(shù)據(jù)包      
  96.           inputString = "";   // clear the string
  97.           newLineReceived = false;
  98.           break;   
  99.         }
  100.         //藍色解析
  101.         i = inputString.indexOf("B", ii);       //從接收到的數(shù)據(jù)中以ii為起始位置檢索字符串“B”的位置
  102.         ii = inputString.indexOf("#", i);        //從接收到的數(shù)據(jù)中以i為起始位置檢索字符串“#”的位置
  103.         if(ii > i && ii > 0 && i > 0 )          //如果ii和i的順序?qū)α瞬⑶覚z索到ii與i存在
  104.         {
  105.           String sBluePWM = inputString.substring(i + 1, ii);    //提取字符串中介于指定下標i+1到ii之間的字符賦值給sBluePWM
  106.           int iBluePWM = sBluePWM.toInt();                       //將字符串sBluePWM轉(zhuǎn)為整型
  107.           analogWrite(BLUE_LED_Pin, iBluePWM);
  108.         }
  109.         else
  110.         {
  111.           returntemp = "$RGB,1,#";   //返回匹配失敗
  112.           Serial.print(returntemp); //返回協(xié)議數(shù)據(jù)包      
  113.           inputString = "";   // clear the string
  114.           newLineReceived = false;
  115.           break;   
  116.         }
  117.      
  118.       
  119.        returntemp = "$RGB,0,#";    //返回匹配成功

  120.        Serial.print(returntemp); //返回協(xié)議數(shù)據(jù)包      
  121.        inputString = "";   // clear the string
  122.        newLineReceived = false;   

  123.     }
  124.    
  125. }
  126. /**
  127. * Function       serialEvent
  128. * @author        liusen
  129. * @date          2017.11.14
  130. * @brief         串口接收中斷   serialEvent()是IDE1.0及以后版本新增的功能,不清楚為什么大部份人不愿意用,這個可是相當于中斷功能一樣的啊!
  131. * @param[in]     void
  132. * @retval        void
  133. * @par History   無
  134. */
  135. void serialEvent()
  136. {
  137.   while (Serial.available())                    //如果串口接收到數(shù)據(jù)則進入循環(huán)
  138.   {   
  139.     incomingByte = Serial.read();              //一個字節(jié)一個字節(jié)地讀,下一句是讀到的放入字符串數(shù)組中組成一個完成的數(shù)據(jù)包
  140.     if(incomingByte ==



  141. )                    //如果到來的字節(jié)是'



  142. ,開始讀取
  143.     {
  144.       startBit= true;
  145.     }
  146.     if(startBit == true)
  147.     {
  148.        inputString += (char) incomingByte;     // 全雙工串口可以不用在下面加延時,半雙工則要加的//
  149.     }  
  150.     if (incomingByte == '#')                  //如果到來的字節(jié)是'#',讀取結(jié)束
  151.     {
  152.        newLineReceived = true;
  153.        startBit = false;
  154.     }
  155.   }
  156. }



復制代碼

所有資料51hei提供下載:
2.遠程控制RGB燈.zip (2.83 MB, 下載次數(shù): 85)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:440971 發(fā)表于 2018-12-6 15:43 | 只看該作者
看上去不錯!
回復

使用道具 舉報

板凳
ID:441662 發(fā)表于 2018-12-9 09:53 | 只看該作者
我覺得不錯!
回復

使用道具 舉報

地板
ID:442737 發(fā)表于 2018-12-10 13:23 | 只看該作者
一直想做這個
回復

使用道具 舉報

5#
ID:382457 發(fā)表于 2018-12-17 12:56 | 只看該作者

一直想做這個
回復

使用道具 舉報

6#
ID:452731 發(fā)表于 2019-1-12 23:42 | 只看該作者
一直想做遠程控制的東西,這個給了很好的思路
回復

使用道具 舉報

7#
ID:513617 發(fā)表于 2019-11-12 10:54 | 只看該作者
請問WIFI模塊用的是那個型號的
回復

使用道具 舉報

8#
ID:55085 發(fā)表于 2020-9-20 15:40 | 只看該作者
這個需要專用的物聯(lián)網(wǎng)設(shè)備嗎???
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 伊人久久在线 | 欧美成人激情视频 | 综合久久网 | 亚洲天天 | 噜噜噜色网 | 国产一区二区精品 | 日本韩国电影免费观看 | 日韩一区二区三区四区五区六区 | 伊人在线| 精品国产黄a∨片高清在线 www.一级片 国产欧美日韩综合精品一区二区 | 成人a免费 | 国产美女精品 | 56pao在线| 精品久久久久久亚洲精品 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 国产中文字幕网 | 99re国产精品 | 天天干免费视频 | 国产一区二区在线视频 | 久久伊人精品 | 一二三区av | 亚洲国产福利视频 | 一久久久| 中文字幕亚洲欧美日韩在线不卡 | 国产精品久久久久久久久久免费 | 999久久久久久久久6666 | 久久国产一区 | 福利视频大全 | 婷婷中文在线 | 香蕉视频一区二区 | 国产精品久久久久久久久久久久久 | 夜夜夜夜夜夜曰天天天 | 免费天天干 | 天堂资源最新在线 | 九九亚洲| 欧美一区二区三区国产精品 | 亚洲成人中文字幕 | 人碰人操 | 日本午夜精品 | 欧美精品一区二区三区在线四季 | 黄色毛片在线看 |