banner

In questa quarta lezione su Arduino, scopriremo un interessante strumento, utile per interfacciare il mondo digitale con quello umano: il display a cristalli liquidi. Con questo strumento, sarà possibile leggere unità fisiche, come l’attuale temperatura in casa, l’ora, lo stato di accensione di un LED e tanto altro. Vedremo questi aspetti dal punto di vista pratico, nei vari esempi proposti.

Requisiti per i programmi

  • Arduino UNO

  • Cavi flessibil, LED, Resistenze

 

  • Display  Acquistabile su Ebay al costo di 10 Euro

  • DHT22

 

  • Sensore ad ultrasuoni

 

 

 

Il collegamento dei fili, per quanto riguarda il Display, è leggermente più complesso rispetto agli esempi precedenti. Tuttavia basta collegare i vari cavi, come riportati nella seguente figura.

 

 

L’elemento in basso a sinistra non è altro che un potenziometro. Esso non fa altro che far variare la resistenza al suo interno, a seconda della posizione del manopola. Questo permetterà di regolare l’intensità dello schermo.


 

1° Programma Hello World sul Display 

Quando si impara a programma, il primo esempio mostrato è il famoso Hello World, in cui si mostra a video la scritta “Ciao Mondo”. Allo stesso modo, faremo mostrato sul piccolo schermo, la parola “Ciao Mondo”, sfruttando Arduino.

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

/*Questo programma mostra come uscare il Display LCD per mostrare ù

la parola “Hello World” e tempo da cui è stato accesso

 

Il Circuito:

* LCD RS pin to digital pin 12

* LCD Enable pin to digital pin 11

* LCD D4 pin to digital pin 5

* LCD D5 pin to digital pin 4

* LCD D6 pin to digital pin 3

* LCD D7 pin to digital pin 2

* LCD R/W pin to ground

* 10K resistor:

* ends to +5V and ground

* wiper to LCD VO pin (pin 3)

 

Questo esempio è tratto dal sito di Arduino

 

http://www.arduino.cc/en/Tutorial/LiquidCrystal

 

*/

 

// include the library code:

#include <LiquidCrystal.h>

 

// Viene inzializzata la libreria del Display con i relativi PIN

a cui è connesso il Display

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

 

voidsetup() {

// set up the LCD’s number of columns and rows:

lcd.begin(16, 2);

// Stampa a video la parola “hello, world!”

lcd.print(“hello, world!”);

}

 

voidloop() {

// Imposta il cursore alla colonna 0, riga 1

// (nota: line 1 è la seconda riga, dal momento che il conteggio

inizia dallo 0):

lcd.setCursor(0, 1);

// Stampa a video i secondi passati dal momento del reset

lcd.print(millis()/1000);

}

 

Ecco il circuito del primo programma

 


 

2° Programma Mostriamo la temperatura di casa sul Display

In questo secondo esempio, vedremo come mostrare la temperatura di casa sul nostro Display, sfruttando il sensore DHT22, che è già stato trattato nella seconda Lezione su Arduino

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

/*Questo programma mostra come uscare il Display LCD per mostrare

la temperatura di casa

 

Il Circuito:

* LCD RS pin to digital pin 12

* LCD Enable pin to digital pin 11

* LCD D4 pin to digital pin 5

* LCD D5 pin to digital pin 4

* LCD D6 pin to digital pin 3

* LCD D7 pin to digital pin 2

* LCD R/W pin to ground

* 10K resistor:

* ends to +5V and ground

* wiper to LCD VO pin (pin 3)

 

Questo esempio è tratto dal sito di Arduino

 

http://www.arduino.cc/en/Tutorial/LiquidCrystal

 

*/

 

// include the library code:

#include <LiquidCrystal.h>

#include “DHT.h”

 

#define DHTPIN 8     // Il pin a cui è collegato il sensore

 

// Togli il commmento al sensore che vuoi usare

//#define DHTTYPE DHT11   // DHT 11

#define DHTTYPE DHT22   // DHT 22  (AM2302)

//#define DHTTYPE DHT21   // DHT 21 (AM2301)

 

// Connettere il pin 1 (a sinistra) a +5V

// Connettere il pin 2 del sensore alla porta 8

// Connettere il pin 4 (a destra) del sensore  a GROUND

// Connettere una resistenza da 10K tra il pin 2 (data) e il pin

1 (power) del sensore

 

DHT dht(DHTPIN, DHTTYPE);

 

// Viene inzializzata la libreria del Display con i relativi PIN

a cui è connesso il Display

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

 

voidsetup() {

lcd.begin(16, 2);

dht.begin();

}

 

voidloop() {

// Legge la temperatura e l’umidità ogni 250 millisecondi!

// Vengono inizializzate le variabili in cui vengono scritti

i valori letti

floath = dht.readHumidity();

floatt = dht.readTemperature();

//Imposto la  colonna 0, riga 0

lcd.setCursor(0,0);

// print the humidity

lcd.print(“Humidita’ “);

lcd.print(h);

lcd.print(” % “);

//Imposto la  colonna 0, riga 1

lcd.setCursor(0,1);

lcd.print(“Temp. “);

lcd.print(t);

lcd.print(” *C”);

 

delay(1000);

}

 

 

 


 

3° Programma Mostriamo la distanza di un oggetto sul display e accendiamo un LED (una sorta di sensori di parcheggio)

In questo terzo esempio, mostriamo come utilizzare Arduino, con il display, con il sensore ad ultrasuoni, per visualizzare la distanza di un oggetto e utilizzeremo un LED rosso, per indicare che l’oggetto è troppo vicino.

 

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

/*Questo programma mostra come uscare il Display LCD per mostrare

la parola “Hello World” e tempo da cui è stato accesso

 

Il Circuito:

* LCD RS pin to digital pin 12

* LCD Enable pin to digital pin 11

* LCD D4 pin to digital pin 5

* LCD D5 pin to digital pin 4

* LCD D6 pin to digital pin 3

* LCD D7 pin to digital pin 2

* LCD R/W pin to ground

* 10K resistor:

* ends to +5V and ground

* wiper to LCD VO pin (pin 3)

 

Questo esempio è tratto dal sito di Arduino

 

http://www.arduino.cc/en/Tutorial/LiquidCrystal

 

*/

 

// include the library code:

#include <LiquidCrystal.h>

 

#define echoPin 7 // Echo Pin

#define trigPin 8 // Trigger Pin

#define LEDPin 13 // LED

 

intgreen = 30;

intorange = 15;

intred = 14;

longduration, distance;

 

// Inizializziamo i 3 LED

 

intledgreen = 10;

intledorange = 9;

intledred = 13;

 

// Viene inzializzata la libreria del Display con i relativi

PIN a cui è connesso il Display

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

 

voidsetup() {

// set up the LCD’s number of columns and rows:

lcd.begin(16, 2);

 

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

// Iniziliazzo i 3 LED

pinMode(ledgreen, OUTPUT);

pinMode(ledorange, OUTPUT);

pinMode(ledred, OUTPUT);

}

 

voidloop() {

/* La seguente funzione permette di ricavare la distanza a

cui si trova un oggetto, vicino al sensore */

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

 

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

 

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

 

/* Calcola la distanza in centimetri dall’oggetto*/

distance = duration/58.2;

delay(500);

 

if(distance>=green) {

green_on();

print_lcd();

}

 

if(green<=distance<green) {

orange_on();

print_lcd();

 

}

if(distance<=red) {

red_on();

print_lcd();

}

 

}

 

// Funnziona che stampa sul display la distanza

voidprint_lcd () {

 

// Imposta il cursore alla colonna 0, riga 1

// (nota: line 1 è la seconda riga, dal momento che il

conteggio inizia dallo 0):

lcd.setCursor(0, 0);

// Stampa a video i secondi passati dal momento del reset

lcd.print(“Distanza “);

lcd.print(distance);

lcd.print(” cm “);

}

 

// Accende il LED verde

voidgreen_on() {

digitalWrite(ledgreen, HIGH);

digitalWrite(ledorange, LOW);

digitalWrite(ledred, LOW);

}

 

// Accende il LED arancione

voidorange_on () {

digitalWrite(ledgreen, LOW);

digitalWrite(ledorange, HIGH);

digitalWrite(ledred, LOW);

}

 

// Accende il LED rosso

voidred_on () {

digitalWrite(ledgreen, LOW);

digitalWrite(ledorange, LOW);

digitalWrite(ledred, HIGH);

}

 

 

Ecco il circuito del terzo programma.