Arduino蓝牙小车
我做的是舵机控制方向,一个电机驱动的简单蓝牙小车。
板子:arduino uno;
拓展版我用的是:PM—R3电机拓展版(2路直流电机输出);
蓝牙模块:HC-06;
舵机:MG996R;
电机:不知道;
若干杜邦线;
程序:
int servopin=9;//定义舵机接口数字接口9 int myangle;//定义角度变量 int pulsewidth;//定义脉宽变量 int
val; char _val; const int led1=10; const int led2=11; void servopulse(int
servopin,int myangle)//定义一个脉冲函数 { pulsewidth=(myangle*11)+500;
//将角度转化为500-2480的脉宽值 digitalWrite(servopin,HIGH);//将舵机接口电平至高 delayMicroseconds(
pulsewidth);//延时脉宽值的微秒数 digitalWrite(servopin,LOW);//将舵机接口电平至低 delay(20-
pulsewidth/1000); } void setup() { // put your setup code here, to run once:
pinMode(6,OUTPUT);//驱动模块上的输出脚 pinMode(7,OUTPUT);//驱动模块上的输出脚 pinMode(servopin,
OUTPUT); Serial.begin(9600); Serial.println("系统已准备好"); } void loop() { // put
your main code here, to run repeatedly: _val = Serial.read();//读取串行端口的值 switch(
_val){ case 'g': //前进 digitalWrite(6,HIGH); digitalWrite(7,LOW);break; case 'b':
//后退 digitalWrite(6,HIGH); digitalWrite(7,HIGH);break; case 's': //小车停下
digitalWrite(6,LOW); digitalWrite(7,LOW);break; case 'z': //小车左转向 val=60; Serial
.print("moving servo to "); //显示舵机转动的角度 Serial.print(val,DEC); Serial.println();
for(int i=0;i<=30;i++)//给予舵机足够的时间让它转到指定角度 { servopulse(servopin,val);//引用脉冲函数 }
break; case 'y': //小车右转 val=140; Serial.print("moving servo to "); Serial.print(
val,DEC); Serial.println(); for(int i=0;i<=30;i++)//给予舵机足够的时间让它转到指定角度 {
servopulse(servopin,val);//引用脉冲函数 } break; case 'h':
//使小车方向回正;我这定义的是舵机角度为100时方向为正 val = 100; Serial.print("moving servo to ");
Serial.print(val,DEC); Serial.println(); for(int i=0;i<=30;i++)
//给予舵机足够的时间让它转到指定角度 { servopulse(servopin,val);//引用脉冲函数 }break; case 'a':
//以下是控制车上的灯 digitalWrite(led1,HIGH); digitalWrite(led2,LOW);break; case 'c':
digitalWrite(led1,LOW); digitalWrite(led2,HIGH);break; case 'k': digitalWrite(
led1,LOW); digitalWrite(led2,LOW);break; case 'q': digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);break; default: break; } }
YYM,给LZ点赞!!!!
最后祝大家新年快乐;