注釈

こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。

参加する理由は?

  • エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。

  • 学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。

  • 独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。

  • 特別割引:最新製品の独占割引をお楽しみください。

  • 祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。

👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!

2.4 マイクロチップ - 74HC595

このエキサイティングなプロジェクトへようこそ!このプロジェクトでは、74HC595チップを使用して8つのLEDの流れるような表示を制御します。

このプロジェクトを起動すると、8つのLED間で飛び交うかのような魅惑的な光の流れが目の前に広がります。一つ一つのLEDが順に点灯し、すぐに消えていく間に、次のLEDが輝き続け、美しくダイナミックな効果を生み出します。

74HC595チップを巧みに利用することで、複数のLEDのオン/オフ状態を制御し、流れるような効果を実現できます。このチップには複数の出力ピンがあり、LEDの点灯順序を制御するために直列に接続できます。さらに、チップの拡張性により、流れる表示にさらに多くのLEDを簡単に追加し、より壮観な効果を作り出すことができます。

必要な部品

このプロジェクトには以下のコンポーネントが必要です。

一式を購入するのが便利です。こちらがリンクです:

名前

このキットのアイテム

リンク

ESP32 Starter Kit

320+

ESP32 Starter Kit

もちろん、以下のリンクから個別に購入することもできます。

コンポーネントの紹介

購入リンク

ESP32 WROOM 32E

BUY

ESP32カメラ拡張ボード

BUY

ブレッドボード

BUY

ジャンパーワイヤ

BUY

抵抗器

BUY

LED

BUY

74HC595

BUY

利用可能なピン

このプロジェクトでESP32ボードに利用可能なピンのリストです。

利用可能なピン

IO13, IO12, IO14, IO27, IO26, IO25, IO33, IO32, IO15, IO2, IO0, IO4, IO5, IO18, IO19, IO21, IO22, IO23

回路図

../../_images/circuit_2.4_74hc595_led.png
  • MR(ピン10)がハイレベルで、CE(ピン13)がローレベルのとき、SHcpの立ち上がりエッジでデータが入力され、SHcpの立ち上がりエッジを通してメモリレジスタに移動します。

  • 2つのクロックを接続すると、シフトレジスタはメモリレジスタよりも常に1パルス早くなります。

  • メモリレジスタには、シリアルシフト入力ピン(DS)、シリアル出力ピン(Q7')、非同期リセットボタン(ローレベル)があります。

  • メモリレジスタは、3状態の並列8ビットバスを出力します。

  • OEが有効(ローレベル)のとき、メモリレジスタのデータがバス(Q0 ~ Q7)に出力されます。

配線図

../../_images/2.4_74hc595_bb.png

コード

注釈

  • esp32-starter-kit-main\c\codes\2.4_74hc595 のパスの下にある 2.4_74hc595.ino ファイルを開きます。

  • ボード(ESP32 Dev Module)を選択し、適切なポートを選んだ後、 アップロード ボタンをクリックします。

  • "Unknown COMxx"が常に表示されますか?

コードをESP32ボードにアップロードすると、LEDが次々と点灯するのを見ることができます。

どのように動作するのか?

  1. 74HC595で制御される8つのLEDの作業状態を変更するために使用されるいくつかの8ビットバイナリ数値を格納するために配列を宣言します。

    int datArray[] = {B00000000, B00000001, B00000011, B00000111, B00001111, B00011111, B00111111, B01111111, B11111111};
    
  2. loop() 関数。

    void loop()
        {
            for(int num = 0; num <10; num++)
            {
                digitalWrite(STcp,LOW); //Set ST_CP and hold low for as long as you are transmitting
                shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
                digitalWrite(STcp,HIGH); //pull the ST_CPST_CP to save the data
                delay(1000);
            }
        }
    
    • datArray[] を反復し、バイナリ値をシフトレジスタに順次送信します。

    • digitalWrite(STcp, LOW)digitalWrite(STcp, HIGH) の命令でデータがストレージレジスタにラッチされます。

    • shiftOut() 関数は、データピン(DS)とシフトレジスタクロックピン(SHcp)を使用して、 datArray[] からバイナリ値をシフトレジスタに送信します。 MSBFIRST は高ビットから移動することを意味します。

    • LEDパターンの更新間に1秒の一時停止を作ります。