2018年2月27日 星期二

利用 74HC595 控制 24 顆 LED 輸出


利用 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 的位元左移一次
  }
}

沒有留言:

張貼留言

Telegram +ESP32自動發報機

  Telegram   +ESP32自動發報機 這套系統是一個典型的 IoT(物聯網)架構 ,結合了遠端配置(Python)、通訊中介(MQTT)與硬體執行(ESP32)。 以下我為您拆解這兩支程式的核心運作原理: 一、 系統架構流程 Python 端 (控制台) :使用者輸入...