这几天,学习Arduino,买了一块L298N的驱动板,加上先前就有的蓝牙模块,做了一个三轮玩具车,左右后轮被一个L298模块控制实现正、反转。然后,用IDE例子模拟串口通信程序,接收蓝牙串口信息。下面是Arduino端程序。
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int option;
int parameter;
int LED1 = 10;
int LED2 = 9;
int LED3 = 8;
int LED4 = 11;
int LED5 = 12;
int LED6 = 13;
void setup()
{
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(LED6, OUTPUT);
// Open serial communications and wait for port to open:
Serial.begin(57600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
Serial.println("Hello, world?");
}
void loop()
{
while (mySerial.available() ) {
if (mySerial.read() == 147) {
delay(50);
option = mySerial.read();
delay(50);
parameter = mySerial.read();
}
#ifdef DEBUG
Serial.println(option);
Serial.println(parameter);
#endif
}
switch (option) {
case 1:
Serial.println("ok");
break;
case 55:
move_for();
break;
case 57:
move_for();
break;
case 56:
move_back();
break;
case 58:
move_back();
break;
case 52:
move_left();
break;
case 54:
move_left1();
break;
case 51:
move_right();
break;
case 53:
move_right1();
break;
case 100:
move_stop() ;
break;
}
}
void move_for() {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
digitalWrite(LED6, HIGH);
}
void move_back() {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED4, LOW);
digitalWrite(LED3, HIGH);
digitalWrite(LED6, LOW);
digitalWrite(LED5, HIGH);
}
void move_right() {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
digitalWrite(LED6, HIGH);
}
void move_left() {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
digitalWrite(LED6, LOW);
}
void move_stop() {
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
digitalWrite(LED6, HIGH);
}
void move_right1() {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
digitalWrite(LED6, HIGH);
}
void move_left1() {
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, LOW);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
digitalWrite(LED6, LOW);
}
附件是手机端的蓝牙控制软件,已经测试可用工作。 |