版上的各位大大新年快樂
小弟有門課在學arduino
最近的作業是結合AI2,用藍芽(HC-05)來控制馬達(L298N)
程式碼上小弟真的很弱,實在困惑很久,不知道該如修改
想請教版上的各位大大
#include <SoftwareSerial.h>
SoftwareSerial BT(10,9); //BT(TXD-10,RXD-9) 接收,傳送
const byte LED_R=4;//紅色LED
int insize,s;
char cmmd1[20],cmmd2[20],val;
int M1=3; //定義類比介面3(PWM 輸出)
int M2=5; //定義類比介面5(PWM 輸出)
int EN1=2; //定義數位介面2 (L298N致/禁能接腳)
int pwm=125; //PWM 輸出的變數初始數值
void setup()
{
pinMode(M1,OUTPUT); //定義類比介面3 為輸出
pinMode(M2,OUTPUT); //定義類比介面5為輸出
pinMode(EN1,OUTPUT); //定義數位介面2 為輸出
pinMode(LED_R,OUTPUT); //定義類比介面4 為輸出
digitalWrite(LED_R,1); //紅色LED亮
analogWrite(M1,0);
analogWrite(M2,0);
digitalWrite(EN1,0); //(禁能L298N)
//Serial.begin(9600);
BT.begin(9600);//宣告藍芽傳輸數度為9600bps
}
void loop()
{
if ((insize=(BT.available()))>0) { //若有資料由BT傳輸至arduino
val=BT.read(); //將讀取的資料存入val
switch (cmmd1[20]) {
case 'a':
stop1: digitalWrite(LED_R,1); //紅色LED亮
digitalWrite(EN1,0); //(禁能L298N)
digitalWrite (M1,0);
digitalWrite (M2,0);
break;
case 'b':
digitalWrite(LED_R,0);
digitalWrite(EN1,1); //(致能L298N)
while (1) {
val=BT.read();
if (val=='s')
{
s=pwm+1;
if (pwm>255) pwm=255;}
if (val=='s') {
s=pwm+1;
if (pwm<0) pwm=25;}
analogWrite(M1,s); // 馬達正轉
digitalWrite(M2,0);
if (val=='0') goto stop1; // 馬達停止
}
break;
case 'c':
digitalWrite(LED_R,0);
digitalWrite(EN1,1); //(致能L298N)
while (1) {
val=BT.read();
if (val=='s') {
s=pwm-1;
if (pwm>255) pwm=255;}
if (val=='s') {
s=pwm-1;
if (pwm<0) pwm=25;}
analogWrite(M2,pwm); // 馬達反轉
digitalWrite(M1,0);
if (val=='0') goto stop1; // 馬達停止
}
break;
}
}
}
case a馬達停止
b馬達正轉
c馬達反轉
val=BT.read() 該如何改成for迴圈?
目前遇到的狀況是,
1.按下馬達停止沒有反應
2.拉滑桿一兩次後馬達就會自動停止