标题:
12864液晶显示按键控制数码舵机角度成功 附Arduino源码
[打印本页]
作者:
冰冰洁洁
时间:
2018-11-7 21:48
标题:
12864液晶显示按键控制数码舵机角度成功 附Arduino源码
制作出来的实物图如下:
20181107_213714.jpg
(359.23 KB, 下载次数: 79)
下载附件
2018-11-7 21:47 上传
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)
2018-11-7 21:48 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
Alex,
时间:
2019-3-9 09:35
请问有没有更细步的接线图,只要是想了解12864屏与Arduino如何接线。谢谢!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1