制作出來的實物圖如下:
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
|