The Electronics Project
C++

The Electronics Project

Rivisitazione di concetti di elettronica e tentativo di realizzare un processore. Un repository di studio. L'obiettivo è imparare la progettazione di PCB e i circuiti digitali. Verilog, Arduino, ESP32 e Raspberry PI.

The Electronics Project

Un repository di studio. L'obiettivo è imparare la progettazione di PCB e i circuiti digitali. Verilog, Arduino, ESP32 e Raspberry PI. Pubblicherò i miei progressi qui man mano che continuo.

L'obiettivo finale è stampare un circuito reale o un PCB.
Per arrivarci, sto prima studiando le basi. Gli sketch Arduino servono per prendere confidenza con i componenti fisici: pulsanti, LED, lettura di segnali, cose del genere. La parte Verilog serve per comprendere più a fondo la logica digitale — come i mattoncini di base come registri, contatori e memoria lavorano insieme.

Il processore è realizzato per imparare nel modo più doloroso possibile come funziona l'elettronica al livello più basso.

Perché a quanto pare soffrire fa bene.

SAP-1 — Simple as Possible Computer (riferimento): https://karenok.github.io/SAP-1-Computer/


Struttura

arduino/      Esperimenti hardware fisici su Arduino
processor/    Moduli Verilog — esperimenti di logica digitale

Processore (Verilog)

Costruito e simulato usando Digital. Lo schema completo si trova in main.dig.

Modulo File Descrizione
Sommatore a 8 bit adder_8bit.v Somma due valori a 8 bit con carry in/out
Registro a 8 bit register_8bit.v Registro temporizzato con abilitazione scrittura e reset sincrono
Contatore di programma program_counter.v Incrementa a ogni tick di clock, supporta stop e reset
Memoria memory_256x8.v RAM sincrona da 256 byte
Mux 8-a-1 mux_8_to_1.v Seleziona una tra 8 linee dati
Contatore a 8 bit counter_8bit.v Conta verso l'alto a ogni clock, con caricamento e reset
Do Once do_once.v Latch monostabile — lascia passare un segnale una sola volta

Sketch Arduino

1. Il dispositivo acceso-spento (completamente inutile)

Descrizione:
Un dispositivo di commutazione base con un pulsante fisico e due LED (rosso e blu).

Comportamento:

  • Quando acceso, il LED rosso si accende.
  • Premendo il pulsante si spegne il LED rosso e si accende il LED blu.
  • Rilasciando il pulsante si torna allo stato precedente.

Circuito: pulsante sul pin 9 (INPUT_PULLUP), LED blu sul pin 2, LED rosso sul pin 7.

I miei antenati hanno aspettato il momento in cui questo dispositivo è stato inventato. Ed eccoci finalmente.

2. Test pulsante

Imposta un pin a HIGH. Tutto qui.

3. Test lettura

Legge un pin e stampa il valore sulla seriale. Roba introduttiva di base.

4. Controllo traffico

Descrizione:
Un semaforo automatico a 3 stati. Cicla verde → giallo → rosso con un timer. Il pulsante interrompe e forza immediatamente il rosso (attraversamento pedonale).

Comportamento:

  • Verde (stato 0): LED verde acceso per 5s, esegue 2 cicli (10s totali), poi passa al giallo.
  • Giallo (stato 1): LED rosso + verde accesi (miscelati per ottenere il giallo), cicalino suona per 2s, poi passa al rosso.
  • Rosso (stato 2): LED rosso acceso per 5s, esegue 2 cicli (10s totali), poi torna al verde.
  • Pressione del pulsante in qualsiasi momento: salta direttamente al rosso con debounce di 500ms.
  • Le pressioni del pulsante vengono controllate a metà ritardo (responsiveDelay) in modo che il segnale sia sempre interrompibile.

Circuito: pulsante sul pin 9 (INPUT_PULLUP), LED rosso sul pin 2, LED verde sul pin 3, LED blu sul pin 4, cicalino sul pin 7.