2016年3月12日 星期六

如何利用可變電阻控制七段顯示器變換數字的速度

哈囉!大家好!我是白嵐帝!

今天我要用Arduino來做一個很好玩的作品。

最近在學LED的控制,剛好手邊又有七段顯示器跟可變電阻,所以我就自己組一個可以利用可變電阻來調整七段顯示器數字變化的速度。

先來介紹可變電阻

圖片來源: mowei-tw.blogspot.com

由圖片我們可以看到,如果要使用類比輸入的話,需要用到中間的接腳,左邊跟右邊分別是V+和GND。




可變電阻的運作原理是中間兩邊任一邊道中間的長度來調整內阻,至於轉哪邊內阻會大,就看你輸入輸出放哪邊囉


接下來介紹七段顯示器







圖片來源: 維基百科、blog.yam.com/xu3eji6/article/12752501

七段顯示器接腳圖


這是我接的圖,老實說,很亂,很難接。

底下這是程式碼,接上電腦可以看類比波圖

int i;
int j;
int k = 0;
const byte num[16] = {B00111111, B00000110, B01011011, B01001111, B01100110, B01101101, B01111101, B00000111, B01111111, B01101111,B01110111,B01111100,B00111001,B01011110,B01111001,B01110001};
const int seg[] = {2, 3, 4, 5, 6, 7, 8, 9}; //設置七段顯示器的燈泡腳位
void setup() {
  for (i = 0; i < 8; i++)
    pinMode(seg[i], OUTPUT);
    Serial.begin(9600);  //這段是為了方便我們在電腦上看波形
}

void loop() {
  for (i = 0; i < 16; i++)
  {
    k = analogRead(A0);  //類比輸入,直到把數值輸入至k變數,共1024段
    for (j = 0; j < 8; j++)
    {
      if (bitRead(num[i], j))
        digitalWrite(seg[j], HIGH);
      else
        digitalWrite(seg[j], LOW);

    }
    delay(k);  //延遲k秒
    Serial.println(k,DEC);   //輸出k值結果
  }
}


接下來我們來看看實作結果:


沒有留言:

張貼留言