Robofun 機器人論壇
標題:
arduino 藍芽控制窗簾 新手詢問
[打印本頁]
作者:
st41241201
時間:
2017-10-28 16:23
標題:
arduino 藍芽控制窗簾 新手詢問
您好
我是個新手
因為學校專題需求
所以網路上找了許多資料
目前遇到的問題是:
用手機app控制窗簾上下
單純上升或下降 可以動作
但是加上紅外線感應器之後
上升的時候 碰到上面紅外線感應器
窗簾停止
但是這時用手機app操作下降按鍵
卻無法控制窗簾下降
if (digitalRead(UpIRsensor) == 1)
{
myservo.attach(9);
myservo.write(90);
}
while (digitalRead(UpIRsensor) == 1);
if (digitalRead(DownIRsensor) == 0)
{
myservo.attach(9);
myservo.write(90);
}
while (digitalRead(DownIRsensor) == 0);
switch (cmmd[0]) { //讀取第一個字
case 99:
myservo.write(180);
break;
case 100:
myservo.write(0);
break;
case 101:
myservo.write(90);
break;
我是個新手
我的程式不是很ok
想請問各位大神
需要修改哪裡或加什麼
能夠達成 想要的動作:
"手機app按上升
碰到上面紅外線
窗簾停止
在用app按上升或下降
能夠有動作"
麻煩各位了 謝謝
作者:
超新手
時間:
2017-10-28 17:21
宣告一個變數,如 u,,初始值0
當 u =1,檢查上面,如果到就停馬達,並把u設為0
當 u =2,檢查上面,如果到就停馬達,並把u設為0
CASE
當收到 app 上升命令時
馬達上昇, u=1
當收到 app 下降命令
馬達下降,u=2
當收到停止命令,馬達停止
u=0
作者:
超新手
時間:
2017-10-28 18:14
用 if
不要用 while
否則程式會卡住
作者:
st41241201
時間:
2017-10-29 14:25
您好 謝謝你的回答
我修改之後的程式請問是這樣嗎
不知道對不對
還是無法達到我想要的動作
if(u=1,(digitalRead(UpIRsensor) == 1))
{
myservo.attach(9);
myservo.write(90);
u=0;
}
while (digitalRead(UpIRsensor) == 1);
if(u=2,(digitalRead(DownIRsensor) == 0))
{
myservo.attach(9);
myservo.write(90);
u=0;
}
while (digitalRead(DownIRsensor) == 0);
switch (cmmd[0]) { //讀取第一個字
case 99:
myservo.write(180);
u=1;
break;
case 100:
myservo.write(0);
u=2;
break;
修改之後發現的問題是
沒有 while 那行
app按上升
馬達一開始就會有好像上升和停止同時運作的聲音
有while那行 可以正常的上升碰到上紅外線停止
下降碰到下紅外線停止
只是偵測著紅外線
操作手機app上升/下降按鍵
一樣沒辦法操作上下
一定要手動移開紅外線感測
才會開始動作
例如:
我用手把上下紅外線都遮住
app按上升
要把手往上移動到沒感應到下方紅外線
馬達才會往上升
上升到沒感應到上面紅外線之後會自動停止
之後app按下降
一樣要把手往下移動到紅外線感應到
才會向下動作
請問我需要修改哪裡呢
還是不太懂
不好意思
還在學習中
感謝您
作者:
st41241201
時間:
2017-10-29 15:48
謝謝大大
我研究出來了
感謝
作者:
超新手
時間:
2017-10-29 17:24
if((u==1)&&(digitalRead(UpIRsensor) == 1))
{
myservo.attach(9);
myservo.write(90);
u=0;
}
if((u==2)&&(digitalRead(DownIRsensor) == 0))
{
myservo.attach(9);
myservo.write(90);
u=0;
}
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2