查看:3659|回复:1
制作出来的实物图如下:
Arduino源程序如下:
复制代码
所有资料51hei提供下载:
128显按键角度舵机OK4.zip(2.85 KB, 下载次数: 39)
Arduino源程序如下:
- #include< Arduino.h>
- #define KEY1 2
- #define KEY2 3
- #define KEY3 4
- #define led 13 //定义数字IO 2的名字为led
- int servopin=11;//定义数字接口9 连接伺服舵机信号线
- int servopin1=12;//定义数字接口9 连接伺服舵机信号线
- int myangle;//定义角度变量
- int pulsewidth;//定义脉宽变量
- int val;
- int num=20;//定义角度
- int s=2;//给予舵机足够的时间让它转到指定角度
- int KEY_NUM1 = 0;//按键键值存放变量,不等于1说明有按键按下
- int KEY_NUM2 = 0;//按键键值存放变量,不等于1说明有按键按下
- int KEY_NUM3 = 0;//按键键值存放变量,不等于1说明有按键按下
- int latchPin = 8;//RS
- int dataPin = 9;//RW
- int clockPin =10;//EN
-
unsigned char tabe[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//查表法//0-9数字
- void servopulse(int servopin,int myangle)//定义一个脉冲函数
- {
-
pulsewidth=(myangle*11)+500;//将角度转化为500-2480 的脉宽值
-
digitalWrite(servopin,HIGH);//将舵机接口电平至高
-
delayMicroseconds(pulsewidth);//延时脉宽值的微秒数
-
digitalWrite(servopin,LOW);//将舵机接口电平至低
-
delay(20-pulsewidth/1000);
- }
- void servopulse1(int servopin1,int myangle)//定义一个脉冲函数
- {
-
pulsewidth=(myangle*11)+500;//将角度转化为500-2480 的脉宽值
-
digitalWrite(servopin1,HIGH);//将舵机接口电平至高
-
delayMicroseconds(pulsewidth);//延时脉宽值的微秒数
-
digitalWrite(servopin1,LOW);//将舵机接口电平至低
-
delay(20-pulsewidth/1000);
- }
- void setup()
- {
- pinMode(servopin,OUTPUT); //设定舵机接口为输出接口
-
pinMode(servopin1,OUTPUT); //设定舵机接口为输出接口
-
pinMode(KEY1,INPUT_PULLUP); //定义KEY为带上拉输入引脚
-
pinMode(KEY2,INPUT_PULLUP); //定义KEY为带上拉输入引脚
-
pinMode(KEY3,INPUT_PULLUP); //定义KEY为带上拉输入引脚
- pinMode(led,OUTPUT); //定义led引脚为输出模式
- pinMode(latchPin, OUTPUT); //设置引脚为输出
- pinMode(clockPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- Lcdint( );//lcd
- }
- void run()
- {
- val=num;//读取串行端口的值
- if(val>0&&val<=180)
- {
- //val=val*(180/9);//将数字转化为角度
- for(int i=0;i<=s;i++) //给予舵机足够的时间让它转到指定角度
- {
-
servopulse(servopin,val);//引用脉冲函数
- }
- }
- }
- void run1()
- {
- val=num;//读取串行端口的值
- if(val>0&&val<=180)
- {
- //val=val*(180/9);//将数字转化为角度
- for(int i=0;i<=s;i++) //给予舵机足够的时间让它转到指定角度
- {
-
servopulse1(servopin1,val);//引用脉冲函数
- }
- }
- }
- void ScanKey() //按键扫描程序
- {
- KEY_NUM1 = 0; //清空变量
- if(digitalRead(KEY1) == LOW) //有按键按下
- KEY_NUM1 = 1;
- delay(1);
- if(KEY_NUM1 == 1) //是否按键按下
- {
- s++;//LED的状态翻转
- if(s>100)s=2;
- }
- KEY_NUM2 = 0; //清空变量
- if(digitalRead(KEY2) == LOW) //有按键按下
- KEY_NUM2 = 1;
- delay(1);
- if(KEY_NUM2 == 1) //是否按键按下
- {
- s--; //LED的状态翻转
- if(s<1)s=100;
- }
所有资料51hei提供下载:
128显按键角度舵机OK4.zip(2.85 KB, 下载次数: 39)