標(biāo)題:
12864液晶顯示按鍵控制數(shù)碼舵機(jī)角度成功 附Arduino源碼
[打印本頁(yè)]
作者:
冰冰潔潔
時(shí)間:
2018-11-7 21:48
標(biāo)題:
12864液晶顯示按鍵控制數(shù)碼舵機(jī)角度成功 附Arduino源碼
制作出來的實(shí)物圖如下:
20181107_213714.jpg
(359.23 KB, 下載次數(shù): 79)
下載附件
2018-11-7 21:47 上傳
Arduino源程序如下:
#include <Arduino.h>
#define KEY1 2
#define KEY2 3
#define KEY3 4
#define led 13 //定義數(shù)字IO 2的名字為led
int servopin=11;//定義數(shù)字接口9 連接伺服舵機(jī)信號(hào)線
int servopin1=12;//定義數(shù)字接口9 連接伺服舵機(jī)信號(hào)線
int myangle;//定義角度變量
int pulsewidth;//定義脈寬變量
int val;
int num=20;//定義角度
int s=2;//給予舵機(jī)足夠的時(shí)間讓它轉(zhuǎn)到指定角度
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數(shù)字
void servopulse(int servopin,int myangle)//定義一個(gè)脈沖函數(shù)
{
pulsewidth=(myangle*11)+500;//將角度轉(zhuǎn)化為500-2480 的脈寬值
digitalWrite(servopin,HIGH);//將舵機(jī)接口電平至高
delayMicroseconds(pulsewidth);//延時(shí)脈寬值的微秒數(shù)
digitalWrite(servopin,LOW);//將舵機(jī)接口電平至低
delay(20-pulsewidth/1000);
}
void servopulse1(int servopin1,int myangle)//定義一個(gè)脈沖函數(shù)
{
pulsewidth=(myangle*11)+500;//將角度轉(zhuǎn)化為500-2480 的脈寬值
digitalWrite(servopin1,HIGH);//將舵機(jī)接口電平至高
delayMicroseconds(pulsewidth);//延時(shí)脈寬值的微秒數(shù)
digitalWrite(servopin1,LOW);//將舵機(jī)接口電平至低
delay(20-pulsewidth/1000);
}
void setup()
{
pinMode(servopin,OUTPUT); //設(shè)定舵機(jī)接口為輸出接口
pinMode(servopin1,OUTPUT); //設(shè)定舵機(jī)接口為輸出接口
pinMode(KEY1,INPUT_PULLUP); //定義KEY為帶上拉輸入引腳
pinMode(KEY2,INPUT_PULLUP); //定義KEY為帶上拉輸入引腳
pinMode(KEY3,INPUT_PULLUP); //定義KEY為帶上拉輸入引腳
pinMode(led,OUTPUT); //定義led引腳為輸出模式
pinMode(latchPin, OUTPUT); //設(shè)置引腳為輸出
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
Lcdint( );//lcd
}
void run()
{
val=num;//讀取串行端口的值
if(val>0&&val<=180)
{
//val=val*(180/9);//將數(shù)字轉(zhuǎn)化為角度
for(int i=0;i<=s;i++) //給予舵機(jī)足夠的時(shí)間讓它轉(zhuǎn)到指定角度
{
servopulse(servopin,val);//引用脈沖函數(shù)
}
}
}
void run1()
{
val=num;//讀取串行端口的值
if(val>0&&val<=180)
{
//val=val*(180/9);//將數(shù)字轉(zhuǎn)化為角度
for(int i=0;i<=s;i++) //給予舵機(jī)足夠的時(shí)間讓它轉(zhuǎn)到指定角度
{
servopulse1(servopin1,val);//引用脈沖函數(shù)
}
}
}
void ScanKey() //按鍵掃描程序
{
KEY_NUM1 = 0; //清空變量
if(digitalRead(KEY1) == LOW) //有按鍵按下
KEY_NUM1 = 1;
delay(1);
if(KEY_NUM1 == 1) //是否按鍵按下
{
s++;//LED的狀態(tài)翻轉(zhuǎn)
if(s>100)s=2;
}
KEY_NUM2 = 0; //清空變量
if(digitalRead(KEY2) == LOW) //有按鍵按下
KEY_NUM2 = 1;
delay(1);
if(KEY_NUM2 == 1) //是否按鍵按下
{
s--; //LED的狀態(tài)翻轉(zhuǎn)
if(s<1)s=100;
}
復(fù)制代碼
所有資料51hei提供下載:
128顯按鍵角度舵機(jī)OK4.zip
(2.85 KB, 下載次數(shù): 39)
2018-11-7 21:48 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
Alex,
時(shí)間:
2019-3-9 09:35
請(qǐng)問有沒有更細(xì)步的接線圖,只要是想了解12864屏與Arduino如何接線。謝謝!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1