久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
用Adruino寫的電機測速與調速的程序
[打印本頁]
作者:
流連涅槃
時間:
2017-7-12 04:03
標題:
用Adruino寫的電機測速與調速的程序
這是前一個禮拜的作品,Adruino IDE使用的是1.8.2版本,UNO板作為主控,電機使用的是最普遍的直流減速電機(帶電刷),測速碼盤是20格數的,驅動模塊采用常見的L298N,測速模塊使用槽型光電傳感器,通過輸出高低電平,來判斷有無物體經過。
(大佬莫笑)
全部資料下載地址:
spees_tset_control.zip
(1.79 KB, 下載次數: 86)
2017-7-12 04:00 上傳
點擊文件名下載附件
碼盤測速
下載積分: 黑幣 -5
control_motor_speed.zip
(2.04 KB, 下載次數: 51)
2017-7-12 03:59 上傳
點擊文件名下載附件
按控制電機調速
下載積分: 黑幣 -5
部分程序預覽:
int k1 = 4; //啟動
int k2 = 5; //停止
int k3 = 6; //加速
int k4 = 7; //減速
int keystate = 0; //初值=0,按鍵狀態標志位
boolean ledstate = 0; //初值=0,記錄led狀態
int ledpin = 11; //按鍵指示燈
int M1 = 12; //電機引腳12
int M2 = 13; //電機引腳13
int PWM_ENA = 3; //pwm調速控制腳
int motorState = 0; //電機狀態
float level=0.255; //占空比++
float rate=0; //定義占空比的數值
#define rateMax 255 //PWM最大值
#define rateMix 0 //PWM最小值
int zkb;
void setup()
{
// put your setup code here, to run once:
pinMode(k1, INPUT_PULLUP); //設置為內部上拉電阻
pinMode(k2, INPUT_PULLUP);
pinMode(k3, INPUT_PULLUP);
pinMode(k4, INPUT_PULLUP);
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
//pinMode(PWM_ENA,OUTPUT);
Serial.begin(9600);
pinMode(ledpin, OUTPUT);
// int fff=3; //fff=2:Frequency=980.392HZ
// TCCR2B=(TCCR2B&0xF8)|fff; //timer2控制Pin 11和Pin 3
//------Set PWM frequency for D9 & D10------
//TCCR1B = TCCR1B & B11111000 | B00000001;
// set timer 1 divisor to 1 for PWM frequency of 31372.55 Hz
//TCCR1B = TCCR1B & B11111000 | B00000010;
// set timer 1 divisor to 8 for PWM frequency of 3921.16 Hz
//TCCR1B = TCCR1B & B11111000 | B00000011;
// set timer 1 divisor to 64 for PWM frequency of 490.20 Hz (The DEFAULT)
//TCCR1B = TCCR1B & B11111000 | B00000100;
// set timer 1 divisor to 256 for PWM frequency of 122.55 Hz
//TCCR1B = TCCR1B & B11111000 | B00000101;
// set timer 1 divisor to 1024 for PWM frequency of 30.64 Hz
}
void keyscan() //按鍵程序
{
if (digitalRead(k1) == 0) //按鍵按下
{
delay(10); //消抖
if (digitalRead(k1) == 0) //確認按鍵按下
{
keystate = 1; //按鍵1按下狀態標志
}
while (!digitalRead(k1)); //松手檢測
}
if (digitalRead(k2) == 0) //按鍵按下
{
delay(10); //消抖
if (digitalRead(k2) == 0) //確認按鍵按下
{
keystate = 2; //按鍵2按下狀態標志
}
while (!digitalRead(k2)); //松手檢測
}
if (digitalRead(k3) == 0) //按鍵按下
{
delay(10); //消抖
if (digitalRead(k3) == 0) //確認按鍵按下
{
keystate = 3; //按鍵1按下狀態標志
}
while (!digitalRead(k3)); //松手檢測
}
if (digitalRead(k4) == 0) //按鍵按下
{
delay(10); //消抖
if (digitalRead(k4) == 0) //確認按鍵按下
{
keystate = 4; //按鍵2按下狀態標志
}
while (!digitalRead(k4)); //松手檢測
}
}
void on() //占空比50%
{
digitalWrite(M1,HIGH); //保持電機一個方向轉動
digitalWrite(M2,LOW);
analogWrite(PWM_ENA,rateMax/2); //輸入模擬值,控制占空比(速度)
}
void off()
{
analogWrite(PWM_ENA,LOW); //輸入模擬值,控制占空比(速度)
}
void loop()
{
// put your main code here, to run repeatedly:
keyscan(); //調用鍵值掃描程序
if(keystate==1)
{
keystate = 0; //恢復初值,以讀取下一次鍵值
on();
}
if(keystate==2)
{
keystate = 0; //恢復初值,以讀取下一次鍵值
off();
}
if (keystate == 3) //記錄按鍵已被按下
{
keystate = 0; //恢復初值,以讀取下一次鍵值
rate+=level; //PWM占空比加速級別
zkb+=1;
Serial.print("The pwm=");
Serial.print(rate); //實時顯示占空比值
Serial.println("/255");
Serial.print(zkb);
Serial.println("/1000");
if(rate>=rateMax) //如果到最大值
{
rate=rateMax; //保持當前最大速度
Serial.print("The pwmMax=");
Serial.print(zkb); //達到最大限值
Serial.println("/1000\n");
}
if(zkb>=999) zkb=999;
digitalWrite(M1,HIGH);//保持電機一個方向轉動
digitalWrite(M2,LOW);
analogWrite(PWM_ENA,rate); //輸入模擬值控制占空比(速度)
}
if (keystate == 4) //記錄按鍵已被按下
{
keystate = 0; //恢復初值,以讀取下一次鍵值
rate-=level; //PWM占空比加速級別
zkb-=1;
Serial.print("The pwm=");
Serial.print(rate); //實時顯示占空比值
Serial.println("/255");
Serial.print(zkb);
Serial.println("/1000");
if(rate<=rateMix) //如果到最小值
{
rate=rateMix; //保持當前最小速度
Serial.print("The pwmMin=");
Serial.print(zkb); //達到最小限值
Serial.println("/1000\n");
}
if(zkb<=1) zkb=1;
digitalWrite(M1,HIGH); //保持電機一個方向轉動
digitalWrite(M2,LOW);
analogWrite(PWM_ENA,rate); //輸入模擬值,控制占空比(速度)
}
}
//void setPwmFrequency(int pin, int divisor)
//{
// byte mode;
// if(pin == 5 || pin == 6 || pin == 9 || pin == 10)
// {
// switch(divisor)
// {
// case 1: mode = 0x01; break;
// case 8: mode = 0x02; break;
// case 64: mode = 0x03; break;
// case 256: mode = 0x04; break;
// case 1024: mode = 0x05; break;
// default: return;
// }
// if(pin == 5 || pin == 6)
// {
// TCCR0B = TCCR0B & 0b11111000 | mode;
// } else {
// TCCR1B = TCCR1B & 0b11111000 | mode;
// }
// }
//
// else if(pin == 3 || pin == 11)
// {
// switch(divisor)
// {
// case 1: mode = 0x01; break;
// case 8: mode = 0x02; break;
// case 32: mode = 0x03; break;
// case 64: mode = 0x04; break;
// case 128: mode = 0x05; break;
// case 256: mode = 0x06; break;
// case 1024: mode = 0x7; break;
// default: return;
// }
// TCCR2B = TCCR2B & 0b11111000 | mode;
// }
//}
復制代碼
作者:
流連涅槃
時間:
2017-7-12 04:04
等下次把一些圖片和解釋放上來,都快天亮了
作者:
lm18007726198
時間:
2018-7-11 17:52
流連涅槃 發表于 2017-7-12 04:04
等下次把一些圖片和解釋放上來,都快天亮了
速度顯示用什么顯示屏
作者:
lm18007726198
時間:
2018-7-11 17:54
速度顯示用什么顯示屏
作者:
lm18007726198
時間:
2018-7-11 17:55
速度顯示用什么顯示屏
作者:
醉里挑燈看劍的
時間:
2019-5-19 11:51
學習學習!!!
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
四虎永久免费黄色影片
|
真人一级毛片
|
91美女在线观看
|
精品久久九
|
亚洲天堂精品一区
|
成人免费视频网站在线观看
|
黄色av观看
|
亚洲一区综合
|
国产成人精品久久二区二区
|
狠狠狠
|
亚洲一区国产
|
国产一区中文
|
999国产视频
|
国产久视频
|
99精品国产一区二区三区
|
日韩在线免费
|
日韩成人在线观看
|
国产在线区
|
亚洲成人免费在线观看
|
羞羞视频网站免费观看
|
成人在线h
|
国产精品视频在线观看
|
欧美视频在线看
|
亚洲日韩中文字幕一区
|
欧美一级小视频
|
中文字幕av高清
|
色综合久久天天综合网
|
国产1区2区在线观看
|
国产精品亚洲精品日韩已方
|
国产在线视频在线观看
|
成人免费视频久久
|
婷婷综合网
|
免费99精品国产自在在线
|
亚洲一区自拍
|
久久免费看
|
欧美日韩成人
|
国产精品1区2区3区 国产在线观看一区
|
欧美 中文字幕
|
欧美一级在线观看
|
福利久久
|
亚洲欧洲精品在线
|