Nota

Ciao, benvenuto nella Community di Appassionati di SunFounder Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

Perché unirsi a noi?

  • Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni l’accesso anticipato a nuovi annunci di prodotti e anteprime.

  • Sconti speciali: Goditi sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e Giveaway: Partecipa a giveaway e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca su [qui] e unisciti oggi!

2.4 Microchip - 74HC595

Benvenuto in questo entusiasmante progetto! In questo progetto utilizzeremo il chip 74HC595 per controllare una sequenza di accensione di 8 LED.

Immagina di avviare questo progetto e di assistere a un affascinante flusso di luce, come se un arcobaleno scintillante saltasse tra gli 8 LED. Ogni LED si accenderà uno alla volta e si spegnerà rapidamente, mentre il LED successivo continuerà a brillare, creando un effetto dinamico e spettacolare.

Grazie all’uso intelligente del chip 74HC595, possiamo controllare lo stato di accensione e spegnimento di più LED per ottenere l’effetto di flusso. Questo chip ha più pin di uscita che possono essere collegati in serie per controllare la sequenza di illuminazione dei LED. Inoltre, grazie all’espandibilità del chip, possiamo facilmente aggiungere altri LED al display in movimento, creando effetti ancora più spettacolari.

Componenti necessari

In questo progetto, avremo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

ESP32 Starter Kit

320+

ESP32 Starter Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

ESP32 Scheda

ACQUISTA

Estensione Fotocamera ESP32

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED

ACQUISTA

74HC595

ACQUISTA

Pin Disponibili

Ecco un elenco di pin disponibili sulla scheda ESP32 per questo progetto.

Pin Disponibili

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

Schema Elettrico

../../_images/circuit_2.4_74hc595_led.png
  • Quando MR (pin10) è a livello alto e CE (pin13) è a livello basso, i dati vengono immessi sul fronte di salita di SHcp e passano al registro di memoria attraverso il fronte di salita di SHcp.

  • Se i due clock sono collegati insieme, il registro a scorrimento è sempre un impulso in anticipo rispetto al registro di memoria.

  • Nel registro di memoria c’è un pin di ingresso di scorrimento seriale (DS), un pin di uscita seriale (Q7”) e un pulsante di reset asincrono (livello basso).

  • Il registro di memoria fornisce un bus con uscita parallela a 8 bit e in tre stati.

  • Quando OE è abilitato (livello basso), i dati nel registro di memoria vengono inviati al bus (Q0 ~ Q7).

Cablaggio

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

Codice

Nota

  • Apri il file 2.4_74hc595.ino nel percorso esp32-starter-kit-main\c\codes\2.4_74hc595.

  • Dopo aver selezionato la scheda (ESP32 Dev Module) e la porta appropriata, clicca sul pulsante Carica.

  • Vedi sempre «COMxx sconosciuto»?

Una volta completato il caricamento del codice sulla scheda ESP32, vedrai i LED accendersi uno dopo l’altro.

Come funziona?

  1. Dichiarare un array, memorizzare diversi numeri binari a 8 bit che vengono utilizzati per cambiare lo stato operativo degli otto LED controllati da 74HC595.

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

    void loop()
        {
            for(int num = 0; num <10; num++)
            {
                digitalWrite(STcp,LOW); //Imposta ST_CP e tieni basso finché trasmetti
                shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
                digitalWrite(STcp,HIGH); //solleva ST_CP per salvare i dati
                delay(1000);
            }
        }
    
    • Scorre attraverso il datArray[], inviando sequenzialmente i valori binari al registro a scorrimento.

    • I comandi digitalWrite(STcp, LOW) e digitalWrite(STcp, HIGH) agganciano i dati nel registro di memoria.

    • La funzione shiftOut() invia i valori binari da datArray[] al registro a scorrimento utilizzando il pin dati (DS) e il pin clock del registro a scorrimento (SHcp). MSBFIRST significa muoversi dai bit più alti.

    • Poi crea una pausa di 1 secondo tra ogni aggiornamento del pattern dei LED.