创客渔机器人编程 - Lesson Three
Lesson Three
让 机 器 人 跑 起 来
知识点:
1、如何控制电机转动?
2、控制电机转动方向?
3、如何控制电机调速?
4、PWM模拟输出原理;
5、Arduino模拟输出函数;
6、模块化程序设计思想;
7、顺序结构程序设计;
8、函数调用与程序调试;
PWM模拟输出原理
PWM,脉冲宽度调制,是在数字电路中 达到 模拟输出效果的一种手段。即:使用数字控制产生占空比不同的方波(一个不停在开与关之间切换的信号)来控制模拟输出,PWM常用于控制LED的暗亮程度,电机的转速等。
Arduino模拟输出函数
analogWrite(pin,value)
作用:
让一个支持PWM输出的引脚持续输出指定脉冲宽度的方波。
参数:
pin:PWM输出的引脚编号。
value:用于控制占空比,范围:0~255。
值为0表示占空比为0,值为255表示占空比为100%,值为127表示占空比为50%。对Arduino 而言,0相当于输出0V,255相当于输出5V,超出255仍输出5V 。
Arduino源代码(仅供参考)
/*
* 5、13控制左轮电机
* 11、12控制右轮电机
* 5、11做模拟输出使用
*/
void setup()
{
pinMode(5,OUTPUT);
pinMode(13,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}
void loop()
{
/*
* 程序调试说明:
* 每次只调试一个函数,
* 有问题检查这一个函数即可;
* 单个函数调试成功,
* 最后进行综合调试;
* 增加停止函数,方便调试;
*/
qianJin();
delay(2000);
tingZhi();
delay(1000);
houTui();
delay(1000);
tingZhi();
delay(1000);
zuoZhuan();
delay(1000);
tingZhi();
delay(1000);
youZhuan();
delay(1000);
tingZhi();
delay(1000);
}
/*
* 前进
*/
void qianJin()
{
analogWrite(5,200);
digitalWrite(13,LOW);
analogWrite(11,200);
digitalWrite(12,LOW);
}
/*
* 后退
*/
void houTui()
{
analogWrite(5,55);
digitalWrite(13,HIGH);
analogWrite(11,55);
digitalWrite(12,HIGH);
}
/*
* 左转
* 左轮不转右轮转,
* 实现小车左转;
*/
void zuoZhuan()
{
analogWrite(5,0);
digitalWrite(13,LOW);
analogWrite(11,200);
digitalWrite(12,LOW);
}
/*
* 右转
* 右轮不转左轮转,
* 实现小车右转;
*/
void youZhuan()
{
analogWrite(5,200);
digitalWrite(13,LOW);
analogWrite(11,0);
digitalWrite(12,LOW);
}
/*
* 停止
*/
void tingZhi()
{
analogWrite(5,0);
digitalWrite(13,LOW);
analogWrite(11,0);
digitalWrite(12,LOW);
}
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com