亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

專注電子技術學習與研究
當前位置:單片機教程網 >> Arduino >> 瀏覽文章

Arduino-電位器調速并帶蜂鳴的跑馬燈

作者:快樂的堯   來源:快樂的堯   點擊數:  更新時間:2014年07月31日   【字體:

這個實驗比較麻煩,因為這個實驗包含了跑馬燈、蜂鳴器和電位器。電位器阻值越大,跑馬燈速度越慢,間隔時間根據電位器的阻值采樣為:(100+2×采樣值)毫秒,采樣值為0~1023。即100~2146毫秒之間,每次點亮LED時,蜂鳴器都會蜂鳴一次(20毫秒)

程序如下:
 
#define Pot A0   
#define Buzzer 12   //以電位器引腳創建
byte ledPin[] = {2,3,4,5,6,7,8,9,10};    //Port 2~10 LED輸出,低電平有效
int ledDelay;
int dir = 1;
int currentLED = 0;
int PotBuffer = 0;
unsigned long changeTime;
 
void setup() {
  pinMode(Buzzer,OUTPUT); //蜂鳴器為IO輸出
  digitalWrite(Buzzer,HIGH); //蜂鳴器初始為不鳴叫  
    for (int x=0; x<9; x++) 
    {
      pinMode(ledPin[x], OUTPUT);  // LED初始全滅
    }
    changeTime = millis();
}
void loop()  
{
  PotBuffer = analogRead(Pot);      //讀取AD值
    if((millis() - changeTime) > 20)   //判斷蜂鳴時間是否到了20ms
    {
      digitalWrite(Buzzer,HIGH);    //到了則關斷蜂鳴器
    }
    if((millis() - changeTime) > ledDelay)   //判斷是否到了LED持續點亮的時間
    {
      changeLED();   //到了則點亮下一個LED
      changeTime = millis();    //再設置現在點亮的起始時間
    }
}
 
void changeLED() {
  for (int x=0; x<9; x++) {
    digitalWrite(ledPin[x], HIGH);
  }
digitalWrite(ledPin[currentLED], LOW);
//BuzzerDi();
digitalWrite(Buzzer,LOW);
ledDelay = 20 + 2*PotBuffer;
currentLED+=dir;
if (currentLED == 8) {dir = -1;}
if (currentLED == 0) {dir = 1;} 
}
 
效果:
關閉窗口