Ardouino #4 Je voudrais moins de fils – Le Shield LCD

Bonsoir,

 

Le montage du LCD et du capteur de T° en test :

 

IMG_3831

 

Cela nous en fait des fils.

 

Il existe une solution assez simple : l’utilisation d’un shield LCD.

 

Le même montage avec le shield LCD  :

 

IMG_3833

 

Avouez que c’est quand même plus simple 🙂

 

Ce shield se pose directement sur la carte Ardouino, seul petit souci, il n’utilise pas les même ports digitaux que mon premier projet. Nous devons donc modifier le code .

Sur le Shield :

RS  en 8

E en  9

D4 en 4

D5 en 5

D6 en 6

D7 en 7.

 

Nous avions

// initialize the library with the numbers of the interface pins

 

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

 

Nous devons modifier en

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

 

Autre problème nous avions placé le Bus Onewire sur le port 7 qui est pris maintenant, je vais le placer sur le port 2. Nous devrons donc modifier aussi le code en remplaçant

#define BROCHE_ONEWIRE 7 // Broche utilisée pour le bus 1-Wire

 

Par #define BROCHE_ONEWIRE 2 // Broche utilisée pour le bus 1-Wire

 

Voici le code complet du programme :

 

/*
LiquidCrystal Library – Hello World

The circuit:
* 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)
This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/LiquidCrystal
*/
#include <OneWire.h> // Inclusion de la librairie OneWire
#include <LiquidCrystal.h>

#define DS18B20 0x28 // Adresse 1-Wire du DS18B20
#define BROCHE_ONEWIRE 2 // Broche utilisée pour le bus 1-Wire
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

OneWire ds(BROCHE_ONEWIRE); // Création de l’objet OneWire ds

// Fonction récupérant la température depuis le DS18B20
// Retourne true si tout va bien, ou false en cas d’erreur
boolean getTemperature(float *temp){
byte data[9], addr[8];
// data : Données lues depuis le scratchpad
// addr : adresse du module 1-Wire détecté

if (!ds.search(addr)) { // Recherche un module 1-Wire
ds.reset_search(); // Réinitialise la recherche de module
return false; // Retourne une erreur
}

if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l’adresse a été correctement reçue
return false; // Si le message est corrompu on retourne une erreur

if (addr[0] != DS18B20) // Vérifie qu’il s’agit bien d’un DS18B20
return false; // Si ce n’est pas le cas on retourne une erreur

ds.reset(); // On reset le bus 1-Wire
ds.select(addr); // On sélectionne le DS18B20

ds.write(0x44, 1); // On lance une prise de mesure de température
delay(800); // Et on attend la fin de la mesure

ds.reset(); // On reset le bus 1-Wire
ds.select(addr); // On sélectionne le DS18B20
ds.write(0xBE); // On envoie une demande de lecture du scratchpad

for (byte i = 0; i < 9; i++) // On lit le scratchpad
data[i] = ds.read(); // Et on stock les octets reçus

// Calcul de la température en degré Celsius
*temp = ((data[1] << 8) | data[0]) * 0.0625;

// Pas d’erreur
return true;
}

// setup()
void setup() {
Serial.begin(9600); // Initialisation du port série
// set up the LCD’s number of columns and rows:
lcd.begin(16, 2);
}

// loop()
void loop() {
float temp;

// Lit la température ambiante à ~1Hz
if(getTemperature(&temp)) {

// Affiche la température
Serial.print(« Temperature : « );
Serial.print(temp);
Serial.write(176); // caractère °
Serial.write(‘C’);
Serial.println();

lcd.setCursor(2, 0);
// Place le curseur du LCD sur le 3ème caractère de la ligne 0 (la première)
lcd.print(« JPC Project »);
// Ecrir sur le LCD « JPC Project car cela fait joli :=) »

lcd.setCursor(2, 1);
//
lcd.print(« T : »);

lcd.setCursor(7, 1);
// print the number of seconds since reset:
lcd.print(temp); // Ecrire sur le LCD la T° mesurée
}
}

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Time limit is exhausted. Please reload CAPTCHA.