Obiettivo: Realizzare un contapunti manuale utilizzando il microcontrollore Arduino ed il display LCD
Componenti elettronici:
- Arduino UNO
- Breadboard
- 2 Resistenze da 1kOhm per i pulsanti
- 1 Resistenza da 100 Ohm per il display LCD
- 1 Trimmer (per regolare il contrasto del display LCD)
- 2 Pulsanti
Pre-requisiti:
Teoria: Attraverso l’utilizzo di due semplici pulsanti e di un display LCD è possibile realizzare un contapunti digitale per riprodurre il punteggio di una partita di biliardo, pallavolo, calcetto, etc. Ogni volta che uno dei due pulsanti è premuto viene incrementato il punteggio di una delle squadre.
Collegamento Circuitale:

Codice:
Attraverso l’utilizzo di due contatori cnt1 e cnt2 è possibile memorizzare il punteggio di ogni squadra. Tali valori sono riprodotti sul display LCD utilizzando l’istruzione LCD.print().
Per evitare delle letture multiple che potrebbero portare ad un comportamento errato del circuito si utilizza una variabile globale che memorizza lo stato precedente del pulsante (i.e., valButton1Old e valButton2Old).
/* | |
Progetto 15: Realizzazione di un contapunti mediante il controllore Arduino | |
Creato il 2 Apr 2021 | |
da Andrea Primavera | |
*/ | |
int pinButton1 = 6; | |
int pinButton2 = 7; | |
int valButton1Old = LOW; | |
int valButton2Old = LOW; | |
int cnt1 = 0; // Contatore per squadra 1 | |
int cnt2 = 0; // Contatore per squadra 2 | |
// include the library code: | |
#include <LiquidCrystal.h> | |
// initialize the library with the numbers of the interface pins | |
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); | |
void setup() { | |
// set up the LCD's number of columns and rows: | |
lcd.begin(16, 2); | |
pinMode(pinButton1,INPUT); | |
pinMode(pinButton2,INPUT); | |
} | |
void loop() { | |
int valButton1 = digitalRead(pinButton1); | |
int valButton2 = digitalRead(pinButton2); | |
if(valButton1==HIGH && valButton1Old==LOW) | |
cnt1++; | |
if(valButton2==HIGH && valButton2Old==LOW) | |
cnt2++; | |
lcd.setCursor(0, 0); | |
lcd.print(cnt1); | |
lcd.setCursor(0, 1); | |
lcd.print(cnt2); | |
valButton1Old = valButton1; | |
valButton2Old = valButton2; | |
} | |
Personalizzazioni: E’ possibile introdurre un ulteriore pulsante per resettare il punteggio senza necessariamente dovere riavviare il controllore Arduino. Inoltre si può aggiungere un dispositivo di segnalazione acustica per avvisare l’utilizzatore del cambio di punteggio.