Digital meter di Matteo Naldoni

Matteo Naldoni è un ragazzo appassionato Makers ed Arduino che ha realizzato un bellissimo progetto: Digital meter

Digital meter

Il metro digitale è un interessante esperimento con Arduino in cui Matteo ha usato un sensore ad ultrasuoni HC-SR04 ed un display LCD per visualizzare la distanza.

Ho voluto dedicare a Matteo questo articolo in quanto oltre ad essere un progetto sicuramente interessante il video che l’autore ha realizzato è davvero benfatto e molto divertente.

Componenti del Digital meter

Un buon progetto inizia sempre dalla lista della spesa:

  • n.1 Arduino
  • n.1 breadboard
  • alcuni fili per breadboard
  • n.1 proto shied
  • n.1 potenziometro
  • n.1 sensore HC-SR04

Nel video vedrai che la prima parte è dedicata alla presentazione del materiale.

Lo schema elettrico

Matteo mi ha chiesto di realizzare per lui lo schema in Fritzing, richiesta a cui ho acconsentito:

schema elettrico del digital meter

Se trovi delle inesattezze o delle correzioni rispetto a quanto vedi nel video non è colpa dell’autore ma mia 🙂

Lo sketch del digital meter

Lo sketch usato per questo progetto è tutta opera di Matteo a cui riconosco la buona qualità del codice e la chiarezza dei commenti:

/*
 Digital Meter by Matteo Naldoni
 Configurazione PIN Sensore:
 Trig  - 8
 Echo  - 9
 Configurazione PIN Display:
 VDD - +5V
 V0  - Potenziometro
 RS  - 12
 RW  - GND
 E   - 6
 D4  - 5
 D5  - 4
 D6  - 3
 D7  - 2
 A   - +5V
 K   - GND
 */

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 6, 5, 4, 3, 2);
byte newChar[8] = {
  B00000,
  B00100,
  B00100,
  B11111,
  B00100,
  B00100,
  B11111,
  B00000
};
void setup() {
  lcd.createChar(8, newChar);

  pinMode (9,INPUT);
  pinMode (8,OUTPUT);
  Serial.begin(9600);

  lcd.begin(16, 2);
  lcd.print(" Digital Meter");
  lcd.setCursor(0, 1);
  lcd.print("|--------------|");
  delay(3500);
  lcd.clear();
  lcd.setCursor(3, 0);
  lcd.print("Powered by");
  delay(3000);
  lcd.setCursor(0, 1);
  lcd.print(" Matteo Naldoni");
  delay(3000);
  lcd.clear();
  lcd.setCursor(1, 0);
  lcd.print("Misurazione");

} 

void loop() {

  //MISURAZIONE
  digitalWrite (8,LOW);
  delayMicroseconds (1);
  digitalWrite (8,HIGH);
  delayMicroseconds (1);
  digitalWrite (8,LOW);
  long ping= pulseIn (9,HIGH);
  long distanza = ping/58.0;
  lcd.setCursor(0, 1);
  lcd.print(distanza);
  lcd.print("cm");
  lcd.setCursor(5, 1);
  lcd.write(8);
   lcd.setCursor(7, 1);
   lcd.print("1cm");

  // ANIMAZIONE (...)
  lcd.setCursor(12, 0);
  lcd.print("   ");
  delay (100);
  lcd.setCursor(12, 0);
  lcd.print(".  ");
  delay (100);
  lcd.setCursor(12, 0);
  lcd.print(".. ");
  delay (100);
  lcd.setCursor(12, 0);
  lcd.print("...");
  delay (100);
}

sai che mi piace commentare tutti gli sketch e questo non fa eccezione.

Nelle linee 01-18: trovi i commenti inseriti dall’autore per il progetto digital meter e sopratutto i pin a cui collegare il sensore, il potenziometro e l’LCD;

linea 20: includi la libreria LiquidCrystal.h usata per scrivere sul Display LCD;

linea 21: inizializza la classe LCD impostando i pin a ci hai collegato lo stesso LCD16x2;

linee 22-31: definisci il carattere +/_, impilati, che userai in seguito;

linea 33: definisci il carattere speciale appena creato con il metodo createChar() della classe Lcd;

linee 35-36: imposta il pin 8 come OUTPUT ed il pin 9 come INPUT, sono impostazioni richieste dal sensore HC-SR04;

linea 37: imposta un canale di comunicazione Seriale;

linee 39-42: imposta il display a 16×2 e scrivi sulla prima riga “Digital Meter” e sulla seconda una line di trattini;

linea 43: aspetta 3,5 secondi prima di procedere oltre, serve a darti il tempo di leggere il messaggio appena scritto;

linee 44-53: pulisci il display e visualizza nella sequenza i messaggi “Powered By”, “Matteo Naldoni”,”Misurazione” intervallati da 3 secondi ciascuno;

linee 60-64: esegui una sequenza di inizializzazione del sensore HC-SR04 portando il pin 8 ( Trig ) a LOW,HIGH,LOW con un intervallo di 100 microsecondi, tale sequanza la trovi anche nel datasheet del sensore;

linea 65: al termine della sequenza di inizializzazione leggi gli impulsi presenti sul pin 9 di Arduino con il comando pulseIn();

linea 66: calcola il valore di distanza in cm dividendo per la costante di conversione 58,0;

linee 67-73: scrivi sul display LCd il valore della distanza letta e l’unità di misura, in particolare la linea 71 scrive il simbolo creato nelle prime linee dello sketch;

linee 75-87: scrivi sul display l’animazione dei tre puntini, ad ogni ciclo di loop() del digital meter esegui sia la misurazione sia la sequenza dei puntini, puoi eliminare queste linee per diminuire il tempo tra una misurazione e la successiva.

Il video del digital Meter

Guardare il capolavoro fatto da Matteo, il video:

Buon divertimento !!!

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/digital-meter-di-matteo-naldoni.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.