TMP 36 et Arduino

J’avoue, relier une sonde TMP36 à un Arduino n’est pas forcément original…

Mais il pleuvait… Et puis cela fait l’occasion de faire un petit exemple avec l’écran OLED Grove !

Nous allons donc voir comment récupérer la température ambiante avec une sonde TMP36 et un Arduino, et l’afficher sur un écran.

Coté matos, il nous faut :

Coté câblage du TMP 36, il n’y a de bien compliqué, il faut juste penser à bien respecter les polarités :

 

Source : https://boutique.semageek.com/

L’écran se branche sur un port I2C de la platine.

Et c’est tout pour les branchements !

Niveau code Arduino, rien de bien compliqué non plus : on attribue l’entrée, on la lit, on convertit la tension en degrés Celsius et on affiche la valeur sur l’écran.

——————– Code ——————-

#include <Wire.h>
#include <SeeedGrayOLED.h>
#include <avr/pgmspace.h>

int sensorPin = 1;

void setup()
{
Serial.begin(9600);

// setup of the OLED Display
Wire.begin();
SeeedGrayOled.init(); //initialize SEEED OLED display
SeeedGrayOled.clearDisplay(); //Clear Display.
SeeedGrayOled.setNormalDisplay(); //Set Normal Display Mode
SeeedGrayOled.setVerticalMode(); // Set to vertical mode for displaying text

}

void loop()
{
//getting the voltage reading from the temperature sensor
int reading = analogRead(sensorPin);

// converting that reading to voltage, for 3.3v arduino use 3.3
float voltage = reading * 5.0;
voltage /= 1024.0;

// print out the voltage
Serial.print(voltage); Serial.println( » volts »);

// now print out the temperature
float temperatureC = (voltage – 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset
//to degrees ((voltage – 500mV) times 100)
Serial.print(temperatureC); Serial.println( » degrees C »);
temperatureC = temperatureC + 5; // a little correction for my Arduino

delay(1000); //waiting a second

// printing on the OLED Display
SeeedGrayOled.setTextXY(5,0); //set Cursor to 5th line, 0th column
SeeedGrayOled.putNumber(temperatureC);
SeeedGrayOled.putString( » Degrees C »); //Print Hello World
}

——————– / Code ——————-

Par contre, j’ai pu constater quelques problèmes

  • La valeur de température lue n’est pas stable sur la carte Uno, mais l’est sur un Leonardo, pourquoi ?? Le condensateur présent sur la photo ne change rien.
  • L’écran ne fonctionne pas avec une carte Leonardo : différences I2C ?
  • La valeur de température doit être corrigée avec le Uno, et non avec le Leonardo.

Si quelqu’un à des réponses à ces questions et / ou des solutions, c’est par ici :

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.