|
|
我有一个140HZ舵机,输入脉宽为5%到95%的140HZ信号,舵机机就可以旋转0-90度,我编制了一个程序:不需要库文件的,如下:
#include <Wire.h> //申明库文件
#include <LiquidCrystal_I2C.h>
int readPin = 0; //用来连接电位器
int servopin = 9; //定义舵机接口数字接口9
LiquidCrystal_I2C lcd(0x27,16,2);
void servopulse(int angle)//定义一个脉冲函数
{
int pulsewidth=(angle*6)+500; //将角度转化为500-6638的脉宽值
digitalWrite(servopin,HIGH); //将舵机接口电平至高
delayMicroseconds(pulsewidth); //延时脉宽值的微秒数
digitalWrite(servopin,LOW); //将舵机接口电平至低
delayMicroseconds(7142-pulsewidth);
}
void setup()
{
lcd.init();//1602液晶初始化
delay(20);//延时
lcd.init();//需要两次初始化
delay(20);
lcd.backlight(); //点亮背光灯
lcd.setCursor(0,0);//把光标定位在第0行,第0列
lcd.print("DUTY ="); //显示“Voltage =”
lcd.setCursor(15,0);//把光标定位在第0行,第15列
lcd.print("%");
pinMode(servopin,OUTPUT);//设定舵机接口为输出接口
}
void loop()
{
float sensorValue = analogRead(readPin);
//把数值范围为0~1023的数字量正比转换为实测电压值
float vol=map(sensorValue,1023,0,95,5);
lcd.setCursor(10,0);
lcd.print(vol);
int readValue = analogRead(readPin);
int angle = readValue;
servopulse(angle);
}
舵机没有反应,而删除:
lcd.setCursor(10,0);
lcd.print(vol);
的显示内容后,舵机就可以正常运行了。请各位高手看一下如何是好? |
|