本帖最后由 白小淘 于 2015-4-9 19:18 编辑
好的,现在把我测试读取PWM的程序发上来,做一下简单的讲解。
硬件电路:ATmega8,接16M晶振,晶振两边接22pF电容,其他不用管,直接刷arduino对应的bootloader,之后用USB转串口连接IDE
串口接在PD0(RX),PD1(TX)上面,四个LED接PD2,PD3,PD4,PD5(我用了三极管放大的,小LED可以不用),遥控信号接PB5。(由于软件还没弄好,口述了……,目前这些硬件5元左右,价格我很满意)
测试正常的状态:开关高时,5号脚的灯亮,其他不变,开关低时,5号脚的灯灭,其他不变。
程序如下:
void setup() //初始化程序
{
for(int i=2;i<6;i++)
pinMode(i,OUTPUT); //使用for循环一次定义4个脚的模式,全部为输出
pinMode(13,INPUT); //定义13号脚的模式为输入
}
void loop() //主程序,这里面的会不断循环执行
{
int a; //定义一个整数a
a = pulseIn(13,HIGH); //读取13号脚的高电平,赋值给a
//PWM信号低位1000us,高位2000us,中位1500us
if(a>1500) //如果a大于1500,也就是输入信号为高时
{
digitalWrite(5,HIGH); //打开5号脚,此时5号脚的灯亮
}
else //否则,也就是信号不符合if的定义(即小于1500)时
{
digitalWrite(5,LOW); //关闭5号脚,此时5号脚的灯灭
}
for(int i=2;i<5;i++)
{
digitalWrite(i,HIGH); //使用for和digitalWrite把其他的脚全部打开
}
}
上面这一段比较有意义了,
闪灯基本是下面这种格式的:
digitalWrite(i,HIGH);//将i打开
delay(1000); //延时1000ms
digitalWrite(i,LOW);//将i关闭
|