
#include <Servo.h>
#include <Metro.h>
Metro measureDistance = Metro(50)
Metro sweepServo = Metro(20)
unsigned long actualDistance = 0
Servo myservo //创建舵机
int pos = 60
int sweepFlag = 1
int URPWM = 3//仔晌PWM输出0-25000us,每念隐锋50us代表1cm
int URTRIG= 10// PWM trigger pin PWM串口为10
uint8_t EnPwmCmd[4]={0x44,0x02,0xbb,0x01} // distance measure command 距离测量命令
void setup(){ // Serial initialization 串行初始化
myservo.attach(9) //舵机串口为9
Serial.begin(9600)// Sets the baud rate to 9600
SensorSetup()
}
void loop(){
if(measureDistance.check() == 1){
actualDistance = MeasureDistance()
// Serial.println(actualDistance)
// delay(100)
}
if(sweepServo.check() == 1){
servoSweep()
}
}
void SensorSetup(){
pinMode(URTRIG,OUTPUT)// A low pull on pin COMP/TRIG
digitalWrite(URTRIG,HIGH) // Set to HIGH
pinMode(URPWM, INPUT) // Sending Enable PWM mode command 发送使能控制模式命令
for(int i=0i<4i++){
Serial.write(EnPwmCmd[i])
}
}
int MeasureDistance(){// a low pull on pin COMP/TRIG triggering a sensor reading 触发传感器读数
digitalWrite(URTRIG, LOW)
digitalWrite(URTRIG, HIGH) // reading Pin PWM will output pulses读引脚脉宽调制将输出脉冲
unsigned long distance=pulseIn(URPWM,LOW)
if(distance==50000){ // the reading is invalid.阅读无效
Serial.print("Invalid")
}else{
distance=distance/携腔50 // every 50us low level stands for 1cm
}
return distance
}
void servoSweep(){
if(sweepFlag ){
if(pos>=60 &&pos<=120){
pos=pos+1 // in steps of 1 degree 1度角度的转动
myservo.write(pos)// tell servo to go to position in variable 'pos' 告诉舵机转动的角度
}
if(pos>119) sweepFlag = false // assign the variable again 重新分配变量
}else {
if(pos>=60 &&pos<=120){
pos=pos-1
myservo.write(pos)
}
if(pos<61) sweepFlag = true
}
}
////////////////////////////////////////////////////////////
需要加载一个Metro.h的库,这只是调试机器,余下的完全看你的发挥了,加上电机
我是一名单片机工程师,对于51单片机智能小车制作,下面的讲解你参考一下。
我看到有很多朋友想做一个属于自己的智能车,但又无从下手,今天我将详细的讲一下循迹小车的制作方法,因为所有的其它功能,都是从循迹这个扩展起来的,你把这个弄懂了,其实的功能了解一下也就懂了。
制作51单片机循迹小车,只需要四步。
1 车模。
2 主控板。
3电机驱动系统。
4 循迹传感器
下面一一进行介绍。
1车模。
对于新手来说你需要一个车模,当然也可以自己制作一个模型,下面这个是两个电机的智能小车。
上面这个车模包含有,1个车模底板,2个减速电机,2个轮子,1个万向轮(上面图片,电池盒下面那个),1个电池盒。
这种车模很多地方都有,你只要按照说明书组装成功就可以了。
2 主控板
另外你还需要一个单片机最小系统
这个主控板的单片机型号是,STC89C52RC
3 电机驱动系统。
这个电机驱动系统的模指颤燃块是L298N(上面图片,最大黑色那个)
这种驱动系统是可以同时驱动两个电机的,完全可以满足你小车的驱动动力,为什么要驱动洞祥呢?因为主控板的单片机电流太弱了,不够电流让电机运行,所以才会有电机驱动模块的产生。
上面这个图中,IN1 IN2和 IN3 IN4(在上面图片的右下角),是用来接单片机的端口(这就可以理解到,这四只脚是电机控制输入端),并且IN1 IN2是左边电机控制用的,为什么一个电机的控制,需要接两个脚呢?
一个电机接两个脚的话,电机就可以正转和反转了,运用到小车上面就是,可以实现小车的前进,后退,左转和右转,这已经满足小车运行时需要的功能。
4 循迹传感器
既然是循迹的智能车,那么你还需要循迹传感器
其实只需要两组红外线发光二极管,就可以实现我们的循迹功能了,如下图所示
从上面图片我们还可以看到,每组当中,都含有黑色红外线管和白色红外线管
我们的循迹小车,是循黑色线走的。
上面图片当中,中间的是黑色线,左右两边的是两组红外线管。
红外线检测黑线的原理。
当红外线检测的不是黑色,发射光通过障碍物能反射给接收,进行正常的发射与接收。
当红外线检测的是黑色,发射光通过黑线产生漫射,接收端就不能正常地接收到发射光,就是凭这一特点,就可以实现我们的小车循迹了,很好玩是吧,嘿嘿!对于智能小车的细节,一言二句说不了太多东西,详细的制作知识,百度上,,,请看“唯虚一凡单片机”,这个里面讲解比较全面,并且还有相应的程序。
以上就是个人分享的智能小车制作方法,希望能帮到你,你通过这个基础实验,发挥想象力,再扩展其它的小车功能,寻找更多的小车乐趣,喜欢的朋友请采纳和点赞,谢谢!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)