#include "arduino.h"
#include <Servo.h>
#define IN1 4
#define IN2 5
#define IN3 6
#define IN4 7
String ch;
int OK = 0; //串口接收有数据标志位
Servo servo_0; //创造舵机0
int car_jioadu = 90; //车的角度
void setup()
{
Serial.begin(9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
servo_0.attach(9); //舵机0绑定IO口9
servo_0.write(car_jioadu); //初始化角度为90
}
void loop()
{
if (OK == 1) //如果串口有数据可读
{
if (ch == "0")
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
if (ch == "1")
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
if (ch == "2")
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
if (ch == "3")
{
car_jioadu-=10;
if (car_jioadu<10) //限制舵机幅度
{
car_jioadu==10;
}
servo_0.write(car_jioadu); //转动舵机
}
if (ch == "4") //限制舵机幅度
{
car_jioadu+=10;
if (car_jioadu>170)
{
car_jioadu==170;
}
servo_0.write(car_jioadu); //转动舵机
}
if (ch == "5")
{
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
if (ch == "6")
{
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
ch = ""; //数据清零
OK = 0;
}
}
void serialEvent() //串口中断
{
if (Serial.available() > 0)
{
ch += char(Serial.read());
delay(2);
OK = 1;
}
}
后续再加入寻距,避障,编码器测速,以及PID调速