Ciao 访客, welcome back to old school! :p
这个程序那天在群上你已经看过了........好处就是只要改一下变量名理论上可以控制无限部舵机的运行(同时),当然实际能控制几部要看芯片的驱动能力~~~~~~~[code//=====================舵机旋转变量定义====================long time_on, time_off, rundelay;int pulse_on, pulse_off, val;void setup(){ //=====================舵机旋转设置======================= pinMode(4, OUTPUT); //PWM控制针脚 pinMode(5, INPUT); // Serial.begin(9600);}void loop(){ //=====================舵机旋转=========================== if(millis() - rundelay >= 18/*舵机改变角度(电位器)数值读取延迟时间*/) { val = analogRead(5); pulse_on = map(val, 0, 151, 500, 2290); //舵机接受的PWM最大脉宽2.5MS左右(2290uS),周期为20MS(20000uS)。此处由电位器数值换算出PWM高电平脉宽持续时间 if (pulse_on >= 2290) pulse_on = 2290;//限制最大值和最小值 if (pulse_on < 500) pulse_on = 500; // Serial.println(val); pulse_off = 20000 - pulse_on;//周期减去高电平脉宽得出低电平脉宽持续时间 rundelay = millis(); } if (micros() - time_off >= pulse_off && !digitalRead(4))//根据低电平脉宽持续时间把引脚电平置高 { digitalWrite(4, 1); time_on = micros(); } if (digitalRead(4)) { if (micros() - time_on >= pulse_on)//根据高电平脉宽持续时间把引脚电平置低 { digitalWrite(4, 0); time_off = micros(); } }
程序代码这个程序那天在群上你已经看过了........好处就是只要改一下变量名理论上可以控制无限部舵机的运行(同时),当然实际能控制几部要看芯片的驱动能力~~~~~~~[code//=====================舵机旋转变量定义====================long time_on, time_off, rundelay;int pulse_on, pulse_off, val;void setup(){ //=====================舵机旋转设置======================= pinMode(4, OUTPUT); //PWM控制针脚 pinMode(5, INPUT); // Serial.begin(9600);}void loop(){ //=====================舵机旋转=========================== if(millis() - rundelay >= 18/*舵机改变角度(电位器)数值读取延迟时间*/) { val = analogRead(5); pulse_on = map(val, 0, 151, 500, 2290); //舵机接受的PWM最大脉宽2.5MS左右(2290uS),周期为20MS(20000uS)。此处由电位器数值换算出PWM高电平脉宽持续时间 if (pulse_on >= 2290) pulse_on = 2290;//限制最大值和最小值 if (pulse_on < 500) pulse_on = 500; // Serial.println(val); pulse_off = 20000 - pulse_on;//周期减去高电平脉宽得出低电平脉宽持续时间 rundelay = millis(); } if (micros() - time_off >= pulse_off && !digitalRead(4))//根据低电平脉宽持续时间把引脚电平置高 { digitalWrite(4, 1); time_on = micros(); } if (digitalRead(4)) { if (micros() - time_on >= pulse_on)//根据高电平脉宽持续时间把引脚电平置低 { digitalWrite(4, 0); time_off = micros(); } }当然程序只是写着玩的,也有一些可以再优化的地方。只不过提供一种不同的概念........就是程序进行不停顿的持续运行,不让被控制设备的等待变成MCU的等待。好处一套程序当中如果具有几个功能模块或者要同时控制多个外部器件的时候互相不会产生干扰,冲突。(比如同时控制多个舵机)当然坏处么也有.......偶目前为止是没想出来这种写法怎么可以封装到函数里;也就是说这种写法各种功能模块无法以函数的形式存在,只能都写在主函数里。