利用 74HC595 控制 24 顆 LED 輸出
源自於 http://blog.udn.com/awei0905/26967572
// Arduino 控制 24 顆 LED
//static const uint8_t D0 = 16;
//static const uint8_t D1 = 5;
//static const uint8_t D2 = 4;
//static const uint8_t D3 = 0;
//static const uint8_t D4 = 2;
//static const uint8_t D5 = 14;
//static const uint8_t D6 = 12;
//static const uint8_t D7 = 13;
//static const uint8_t D8 = 15;
//static const uint8_t D9 = 3;
//static const uint8_t D10 = 1;
// 接 74HC595 的第 12 支接腳
int latchPin = 5;
// 接 74HC595 的第 11 支接腳
int clockPin = 4;
// 接 74HC595 的第 14 支接腳
int dataPin = 16;
void setup() {
// 初始化所有腳位
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
long val = 1;
for (int led = 0; led < 24; led++) {
digitalWrite(latchPin, LOW); // 送資料前須把 latchPin 設為 LOW
shiftOut(dataPin, clockPin, MSBFIRST, ~(val / 65536)); // 送出第三位元組給最遠的 74HC595
shiftOut(dataPin, clockPin, MSBFIRST, ~(val / 256)); // 送出第二位元組給中間的 74HC595
shiftOut(dataPin, clockPin, MSBFIRST, ~(val)); // 送出第一位元組給最近的 74HC595
digitalWrite(latchPin, HIGH); // 資料送完須把 latchPin 設為 HIGH
delay(40); // 設定延遲時間,取自可變電阻分壓後的電壓值
val <<= 1; // 將 val 的位元左移一次
}
}
沒有留言:
張貼留言