0
基本上我的Arduino電路跳轉功能,我想提出一個Arduino歐諾項目,包括創建一個聰明的服務員說:試圖避免在試圖建立一個「智能服務員」
- 將在有玻璃架基本的Arduino機箱的頂部。這些傳感器將是:
- 4個紅外傳感器,每邊一個
- 2線傳感器,一個左和一個右
- 光傳感器,一個杯架
- 它也將有:
- 2臺伺服電機,一個左和右
- 1 LED示出杯狀態
- 它將:
- 移動沿着一條黑線,將在HOP的地板被錄音
- 會感覺在各方面的人,並暫停時,感覺接近機構
- 將無限期地停止,如果它檢測玻璃已被擡起
- 如果它不感應玻璃的移動,將在15秒內重新開始或當玻璃放下時再次開始
- 玻璃放下後,LED將從綠色變爲紅色
- 機器人將繼續m奧雅納,無視一切障礙,直到它到達加油站
- 將停在加油站,其中填充物將取代玻璃,然後按Arduino的硬復位按鈕
我的代碼是:
#include <Servo.h>
int redLED = 5;
int yellowLED = 6;
int greenLED = 7;
int cup1 = 0;
int picked = 1;
int lineright = 0;
int lineleft = 0;
int sensorright = 0;
int sensorleft = 0;
int sensorfront = 0;
int sensorback = 0;
int sensorpinright = 1;
int sensorpinleft = 2;
int sensorpinfront = 3;
int sensorpinback = 4;
Servo servoright;
Servo servoleft;
void setup()
{
servoright.attach (9);
servoleft.attach (10);
pinMode (redLED, OUTPUT);
pinMode (greenLED, OUTPUT);
pinMode (greenLED, OUTPUT);
}
void loop()
{
sensorright = digitalRead (sensorpinright);
sensorleft = digitalRead (sensorpinleft);
sensorfront = digitalRead (sensorpinfront);
sensorback = digitalRead (sensorpinback);
lineleft = analogRead (1);
lineright = analogRead (2);
cup1 = analogRead (3);
if (sensorright < 0 && sensorleft < 0 && sensorfront < 0 && sensorback < 0)
{
digitalWrite (led1, GREEN);
startfresh:
if (lineleft < 800)
{
servoleft.write (180);
servoright.write (180);
}
else
{
if (lineright < 800)
{
servoright.write (0);
servoleft.write (0);
}
else
{
servoright.write (0);
servoleft.write (180);
}
}
}
else
{
for (int i=0;i<5;i++)
{
servoright.write (93);
servoleft.write (93);
if (picked < 1)
{
while (cup1<500)
{
digitalWrite (yellowLED, HIGH);
picked = 1;
}
}
else
{
digitalWrite (yellowLED, LOW);
digitalWrite (redLED, HIGH);
goto startfresh;
}
delay (2000)
}
}
}
我想用我的代碼做的是在最後避免goto
函數。但是,我無法找到任何方法來重新構造這個僅限於2個函數的限制。在這種情況下,goto
功能看起來很好,但我不確定。有沒有簡單的方法來重組呢?
轉到什麼功能? 2個功能有什麼限制? 您可以根據需要定義許多功能;沒有限制。 – 2013-02-19 17:53:09