arduino+app藍牙控制步進馬達
本帖最後由 snow7788 於 2019-7-29 16:28 編輯各位前輩好,小弟最近接觸了Arduino 最近還學到了App Inventor2
目前只會設定固定圈數+控制正反轉1圈
請問如果我想要讓他我按住按鈕"收"他會一直反轉,放開則停住,按住按鈕"放"他會一直正轉,放開則停住,我應該怎麼去寫Arduino跟app的程式呢?
Arduino程式碼如下(目前的程式碼就是按一下轉一圈)
#include <Stepper.h>
#include <SoftwareSerial.h>
SoftwareSerial BT(7,8);
#define STEPS 2048
//stepper(一圈的步數,IN1 IN2 IN3 IN4)
Stepper stepper( STEPS, 2, 3, 4, 5); //28BYJ-48馬達需要把中間兩pin位置交換
int speed = 14; //設定馬達速度(最大17),速度過快馬達不動
int Rece; //接收藍牙模組端訊號
void setup() {
BT.begin(9600);
stepper.setSpeed(speed); //將馬達的速度設定成15 RPM(1分鐘轉15圈)
}
void loop() {
if(BT.available()>0){ //判斷是否有收到訊號
Rece=BT.read(); //讀入變數Rece中
switch(Rece){
case 'u' :
stepper.step(2048); //正1圈
break;
case 'd' :
stepper.step(-2048);//反1圈
break;
}
}
}
APP程式如下
本帖最後由 超新手 於 2019-7-30 12:47 編輯
APP 的按鍵要改用"被壓下"和"被鬆開"
收的被壓下傳 u, 被鬆開傳 s
放的被壓下傳 d, 被鬆開傳 s
arduino 端則宣告一變數
其他部份不變
unsigned char f =0;
void loop() {
if(f == 1) {
stepper.step(1);
} else(f == 2) {
stepper.step(-1);
}
if(BT.available()>0){ //判斷是否有收到訊號
Rece=BT.read(); //讀入變數Rece中
switch(Rece){
case 'u' :
f = 1;
break;
case 'd' :
f = 2;
break;
case 's' :
f = 0;
break;
}
}
}
超新手 發表於 2019-7-30 12:44
APP 的按鍵要改用"被壓下"和"被鬆開"
收的被壓下傳 u, 被鬆開傳 s
放的被壓下傳 d, 被鬆開傳 s
感謝你><! 讓我燒焦的腦袋得以恢復
頁:
[1]