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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

arduino delay堵塞延時問題,大家進來看看吧,哭唧唧

查看數: 4134 | 評論數: 4 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2021-5-18 22:44

正文摘要:

#include <Metro.h>復制代碼  arduino單片機驅動步進電機,同時通過單片機的軟串口讀取一臺設備的數據,    因為這兩個任務要同時進行,每個任務都有delay,delay堵塞影響其它任務,所以我 ...

回復

ID:894800 發表于 2021-5-19 12:39
程序在這里,粗心的我
  1. [em01]
  2. #include <Metro.h>
  3. #include <SoftwareSerial.h>      
  4. SoftwareSerial DLSerial(2, 3); // 軟串口 RX(D2), TX(D3) 紅
  5. String stringOne="";//存儲接收的“+5.5019e+06,BIN00”      

  6. Metro blink1Metro = Metro(1000);   //把 blink1Metro 實例化 Metro 對象 ,并設置間隔時間
  7. Metro blink2Metro = Metro(1000);     //把 blink2Metro 實例化 Metro 對象 ,并設置間隔時間

  8. void setup(){
  9. DLSerial.begin(38400); //設備波特率38400     
  10. Serial.begin(9600) ;//默認串口波特率9600   
  11. pinMode(7,OUTPUT); // Step   
  12. pinMode(6,OUTPUT); // Dir  方向
  13. }

  14. void loop(){

  15.   if(blink1Metro.check()){  //檢查blink1Metro間隔(我的理解是計時器每隔100毫秒就會返回true,就執行以下程序)
  16.   digitalWrite(6,HIGH); // 方向拉高     
  17.     for(int x = 0; x < 6400; x++) // Loop 2000 times     //6400  
  18.     {     
  19.         digitalWrite(7,HIGH); //  
  20.      delayMicroseconds(250); // Wait   ms  
  21.     digitalWrite(7,LOW); //  
  22.      delayMicroseconds(250); // Wait  ms  250 2000HZ 周期0.5ms
  23.      //正轉   
  24.     }  
  25.       //delay(1000); //  
  26.             
  27.      digitalWrite(6,LOW); // Set Dir high      
  28.     for(int x = 0; x < 6400; x++) // Loop 6400 times   
  29.     {     
  30.         digitalWrite(7,HIGH); //  
  31.      delayMicroseconds(250); // Wait  ms     
  32.     digitalWrite(7,LOW); //  
  33.      delayMicroseconds(250); // Wait   ms   
  34.     }  
  35.      // delay(1000);
  36. }

  37.   
  38.   if(blink2Metro.check()){  
  39.     int val=analogRead(0);//讀取模擬接口0 的值,并將其賦給val
  40. Serial.println(val);//顯示出val 的值 Serial.println(val,DEC);     

  41. DLSerial.write("fetch?"); //發送字節數據      
  42. delay(500); //延時500ms   
  43. if (DLSerial.available()>0) //如果緩存中有接收到的數據     
  44. {      
  45.     String stringOne = DLSerial.readString(); //讀取軟串口數據賦給字符串stringOne      
  46.     Serial.print(stringOne);  //通過串口發到PC      
  47. }         
  48.   }
  49. }
復制代碼
ID:894800 發表于 2021-5-19 12:35
devcang 發表于 2021-5-19 09:20
要做到高精度,就不是那么簡單的了。 中斷可以減少延時帶來的壞處。

請問中斷是通過attachInterrupt()函數實現嗎?還是通過定時器
ID:844772 發表于 2021-5-19 11:07
arduino的delay()和軟串口應該都用了time0,也就是說你要是使用軟串口等中斷服務,就別使用delay(),這也不麻煩,可以用循環替代。
ID:277550 發表于 2021-5-19 09:20
要做到高精度,就不是那么簡單的了。 中斷可以減少延時帶來的壞處。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区中文字幕乱码 | 亚洲免费在线观看 | 亚洲第一视频网 | 欧美日韩高清一区二区三区 | 久久久成人动漫 | 99精品国产一区二区青青牛奶 | 偷拍亚洲色图 | 国产乱码精品一区二区三区中文 | 欧美亚州| 欧美久久精品 | 免费看a | 欧美一区二区三区国产精品 | 亚洲欧美中文字幕 | 91在线免费视频 | 日日骚视频 | 一区二区国产精品 | 日本成人免费网站 | 国产一级一片免费播放 | 国产成人网 | 亚洲精品9999 | 国产午夜精品一区二区三区嫩草 | 国产高清在线精品一区二区三区 | 国产一区二区三区久久久久久久久 | 中文字幕亚洲视频 | 久久综合伊人 | 久久久国产一区二区三区四区小说 | 国产9 9在线 | 中文 | 综合网在线 | 夜夜撸av | 黄色一级毛片免费看 | 一本久久a久久精品亚洲 | 亚洲一区三区在线观看 | 日韩av在线一区二区 | 成年人视频免费在线观看 | 亚洲精品免费视频 | 欧美精品一区免费 | 亚洲 精品 综合 精品 自拍 | 日韩精品一区二区三区免费观看 | 男女下面一进一出网站 | 在线一区观看 | 欧美爱爱视频网站 |