<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> 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;} 
        }
         
        效果:
        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮