// --------------------------------------------------------------------------------
/*
09 以 3 個 Pin 控制 8 顆 LED
[學習重點]
1. 可以透過其他集成電路減少佔用的 Pin
[挑戰]
- 自行設計不同款式的走馬燈
- 試增加多 8 顆 LED 並改寫程式
Created by Jason on 9 Aug 2022.
*/
// --------------------------------------------------------------------------------
int latchPin = 12; // 接 74HC595 的 STCP (IC pin 12)
int clockPin = 13; // 接 74HC595 的 SHCP (IC pin 11)
int dataPin = 10; // 接 74HC595 的 DS (IC pin 14)
byte patterns[30] = {
B10000000,
B01000000,
B00100000,
B00010000,
B00001000,
B00000100,
B00000010,
B00000001,
};
void setup()
{
// 將 latchPin, clockPin, dataPin 設置為輸出
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop()
{
for (int i = 0; i < 8; i++) {
digitalWrite(latchPin, LOW); // 送資料前要先降低 latchPin 電壓
shiftOut(dataPin, clockPin, MSBFIRST, patterns[i]);
digitalWrite(latchPin, HIGH); // 送完資料後要把 latchPin 電壓升高
delay(500);
}
}