找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
請尊重及感激所有版主付出和奉獻儲值後自動升級用戶組你準備好成為出色的版主了嗎?
霹靂cosplayntr中文ge母乳世紀帝國
平行天堂北投砂漠の雪ニラマレhunbl 15痴漢電車midv 138

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]秒殺外掛太強了,

[繁/無修正]婚戒物語

板橋中山路二段 這種

[繁]我獨自升級10-

[繁]異修羅12- (第一

中國爛尾樓現狀的小短
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 3415|回復: 9

[問題] 有關Arduino的問題[複製鏈接]

Rank: 1

帖子
547
積分
110 點
潛水值
4340 米
發表於 2017-5-3 11:42 PM|顯示全部樓層
目前有點小問題,目的是要讓超音波感測到障礙物時會馬達會停止,沒有障礙物時馬達會動作,但現在因為有加進PWM去控制速度,但是這LOOP裡的速度會影響到SWITCH的速度,比方說當啟動FORWARD時速度是127但維持時間只維持很短,delay完就回到LOOP的速度191去,但拿掉那段後,速度維持的時間是持續的,但有點缺陷是感測到障礙物時停止,但當障礙物移走後就不會自行啟動了,請問要如何修正?
...
瀏覽完整內容,請先 註冊登入會員
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

Rank: 2Rank: 2

帖子
241
積分
299 點
潛水值
22810 米
發表於 2017-5-4 08:52 AM|顯示全部樓層
你的switch按照狀態給定了行動. 但是狀態X的遷移控制, 並沒有看到呢. 是code沒有po上來? 你提到對應狀態的行動是正常的, 那問題就在於狀態與狀態間的變換不正常.
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。

使用道具檢舉

Rank: 4Rank: 4Rank: 4Rank: 4

帖子
7565
積分
4321 點
潛水值
34960 米
發表於 2017-5-4 10:21 AM|顯示全部樓層
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。
本帖最後由 chevylin0802 於 2017-5-4 10:30 AM 編輯
  1. #include <SoftwareSerial.h>
  2. #include <Wire.h>  
  3. #include <stdio.h>
  4. int enablePin = 6;
  5. int motorPin1 = 3;
  6. int motorPin2 = 5;
  7. int trig = 9 , echo = 8 ;
  8. int beep = 12;
  9. char x;
  10. byte dis[6];  //distance package
  11. SoftwareSerial BT(10, 11); // RX, TX
  12. float distance = 0;
  13. char dischar[4];
  14. int speed = 0; // speed control value
  15. int i=0;


  16. float Length()
  17. {
  18.   float duration, distancetmp;
  19.   digitalWrite(trig, HIGH);
  20.   delayMicroseconds(1000);
  21.   digitalWrite(trig, LOW);
  22.   duration = pulseIn (echo, HIGH);
  23.   distancetmp = (duration / 2) / 29;
  24.   return distancetmp;
  25. }

  26. void setup()
  27. {
  28.   // put your setup code here, to run once:
  29.   Serial.begin(9600);
  30.   BT.begin(9600);
  31.   pinMode(motorPin1, OUTPUT);
  32.   pinMode(motorPin2, OUTPUT);
  33.   pinMode(enablePin, OUTPUT);
  34.   pinMode(trig, OUTPUT);
  35.   pinMode(echo, INPUT);
  36.   pinMode(beep, OUTPUT);
  37.   digitalWrite(motorPin1, LOW);
  38.   digitalWrite(motorPin2, LOW);
  39.   digitalWrite(enablePin, LOW);
  40.   delay(1000);
  41. }

  42. void loop()
  43. {
  44.   
  45.   distance = Length();
  46.   if (distance < 20) {   
  47.     Serial.print("WARNING!");
  48.     Serial.print("Obstacle!!");
  49.     digitalWrite(beep,HIGH);
  50.     // delay(500);     
  51.     // cancelled because too many delay code
  52.     digitalWrite(beep,LOW);
  53.     speed = 0;
  54.     analogWrite(enablePin, speed);
  55.   } else {
  56.     Serial.print("OK!");
  57.     digitalWrite(beep,LOW);
  58.     // delay(500);     
  59.     // cancelled because too many delay code
  60.     if( speed == 0 ) {
  61.         speed = 191; // 191 or 127 ?
  62.         analogWrite(enablePin, speed);
  63.     }
  64.   }
  65.   Serial.print("distance = ");
  66.   Serial.print(distance);
  67.   Serial.println("cm");
  68.   delay(500);
  69.   
  70.   int sendData = (int) (distance * 100); //times 100 and convert disance to integer
  71.   byte packet[3];
  72.   packet[0] = 97;
  73.   packet[1] = sendData / 256; //divides sendData to two 1 byte packets
  74.   packet[2] = sendData % 256;
  75.   if ( BT.available() > 0 ) {
  76.     if (BT.read() == 97) {
  77.        for(int i = 0; i < 3; i++)
  78.            BT.write(packet);
  79.     }
  80.     val = BT.read();
  81.       
  82.     switch(x) {
  83.       case 'F':   // car forward
  84.                 forward();
  85.                 break;
  86.       case 'B':   // car back
  87.                 back();
  88.                 break;
  89.       case 'S':   // car stop
  90.                 motorstop();
  91.                 break;      
  92.       case 'H':   // speed high
  93.                 motorhigh();
  94.                 break;
  95.       case 'M':   // speed mid
  96.                 motormedian();
  97.                 break;      
  98.       case 'L':   // speed low
  99.                 motorlow();
  100.                 break;                              
  101.     }   
  102.     delay(500);  // if bluetooth command transmitted, the delay is need
  103.   }

  104. }

  105. void motorstop()
  106. {
  107.   speed = 0;
  108.   Serial.println("Stop!");
  109.   digitalWrite(motorPin1, LOW);
  110.   digitalWrite(motorPin2, LOW);
  111.   analogWrite(enablePin, speed);
  112. }

  113. void forward()
  114. {
  115.   Serial.println("Forward!");
  116.   digitalWrite(motorPin1, HIGH);
  117.   digitalWrite(motorPin2, LOW);
  118.   if(speed == 0) {
  119.      speed = 127;
  120.      analogWrite(enablePin, speed);
  121.   }
  122. }

  123. void back()
  124. {
  125.   Serial.println("Back!");
  126.   digitalWrite(motorPin1, LOW);
  127.   digitalWrite(motorPin2, HIGH);
  128.   if(speed == 0) {
  129.      speed = 127;
  130.      analogWrite(enablePin, speed);
  131.   }
  132. }

  133. void motorhigh()
  134. {
  135.   Serial.println("High!");
  136.   if( speed != 255 ) { // if is 255 then no more need repeat the output
  137.       speed = 255;
  138.       analogWrite(enablePin, speed);
  139.   }
  140. }

  141. void motormedian()
  142. {
  143.   speed = 127;
  144.   Serial.println("Median!");
  145.   if( speed != 127 ) { // if is 127 then no more need repeat the output
  146.       speed =127;
  147.       analogWrite(enablePin, speed);
  148.   }
  149. }

  150. void motorlow()
  151. {
  152.   speed = 63;
  153.   Serial.println("Low!");
  154.   if( speed != 63 ) { // if is 63 then no more need repeat the output
  155.       speed = 63;
  156.       analogWrite(enablePin, speed);
  157.   }
  158. }
複製代碼
這是修改後的代碼
你可以試試...
瀏覽完整內容,請先 註冊登入會員
系統已重置禁訪用戶到普通用戶和密碼一次
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

Rank: 1

帖子
547
積分
110 點
潛水值
4340 米
發表於 2017-5-4 02:20 PM|顯示全部樓層
本帖最後由 xznm0215 於 2017-5-4 02:35 PM 編輯
chevylin0802 發表於 2017-5-4 10:21 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

這是修改後的代碼
你可以試試

謝謝,這問題有解決了,原來是要這樣修正,真的謝謝了...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 1

帖子
547
積分
110 點
潛水值
4340 米
發表於 2017-5-5 02:50 PM|顯示全部樓層
chevylin0802 發表於 2017-5-4 10:21 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

這是修改後的代碼
你可以試試

您好,我現在有個問題,當我用的ai2作的app藍芽連線後會發生傳遞延遲
請問是我藍芽那邊程式設錯嗎?...
瀏覽完整內容,請先 註冊登入會員





回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

Rank: 4Rank: 4Rank: 4Rank: 4

帖子
7565
積分
4321 點
潛水值
34960 米
發表於 2017-5-5 03:40 PM|顯示全部樓層
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
本帖最後由 chevylin0802 於 2017-5-5 04:00 PM 編輯
xznm0215 發表於 2017-5-5 02:50 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

您好,我現在有個問題,當我用的ai2作的app藍芽連線後會發生傳遞延遲
請問是我藍芽那邊程式設錯嗎? ...
...
瀏覽完整內容,請先 註冊登入會員
系統已重置禁訪用戶到普通用戶和密碼一次
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

Rank: 1

帖子
547
積分
110 點
潛水值
4340 米
發表於 2017-5-5 04:10 PM|顯示全部樓層
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。
chevylin0802 發表於 2017-5-5 03:40 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

你是從電腦使用App Inventor
它本身就是一套採用java運行的伺服器
你要靠瀏覽器去跟它連線才能工作

但當我把紅字這段拿掉,綠字改成if ( BT.available()) ,等於是把超音波傳遞的值給拿掉,單作控制反而沒有延遲問題...
瀏覽完整內容,請先 註冊登入會員
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

Rank: 4Rank: 4Rank: 4Rank: 4

帖子
7565
積分
4321 點
潛水值
34960 米
發表於 2017-5-5 04:54 PM|顯示全部樓層
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
xznm0215 發表於 2017-5-5 04:10 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

但當我把紅字這段拿掉,綠字改成if ( BT.available()) ,等於是把超音波傳遞的值給拿掉,單作控制反而沒 ...

不能直接拿掉
...
瀏覽完整內容,請先 註冊登入會員
系統已重置禁訪用戶到普通用戶和密碼一次
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。

使用道具檢舉

Rank: 1

帖子
547
積分
110 點
潛水值
4340 米
發表於 2017-5-22 05:32 PM|顯示全部樓層
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
chevylin0802 發表於 2017-5-5 04:54 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

不能直接拿掉
否則你的read()會一直傳回97
你再試試看在BT.write(packet);之後再加一行BT.flush();

我想請問一下,如果說造成傳遞延遲的話是什麼情況...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

Rank: 4Rank: 4Rank: 4Rank: 4

帖子
7565
積分
4321 點
潛水值
34960 米
發表於 2017-5-22 06:01 PM|顯示全部樓層
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
本帖最後由 chevylin0802 於 2017-5-22 06:06 PM 編輯
xznm0215 發表於 2017-5-22 05:32 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

我想請問一下,如果說造成傳遞延遲的話是什麼情況

...
瀏覽完整內容,請先 註冊登入會員





系統已重置禁訪用戶到普通用戶和密碼一次
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部