samedi 23 février 2019

Arduino thermometer with DS18B20 sensor and oled display 128x32



Part list
  1. Arduino uno
  2. Temperature sensor DS18B20
  3. Oled display 128x32 SSD1306
Software library
  1. Library U8g2lib.h 
  2. OneWire.h
  3. DallasTemperature.h
Software icon image in XBM
Schematic diagram

Sensor DS18B20 wiring



Sketch Arduino

/*DS18B20_128x32_SL03.ino
 *  Lit DS18B20 et affiche sur OLED
 *  là j'essaie d'introduire un caractère fichier XBM créé par:
 *  XBM file editor https://xbm.jazzychad.net/
 * slazare 2019 02 22 et 23 
 */
#include <U8g2lib.h>
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C lcd(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ SCL, /* data=*/ SDA);   // pin remapping with ESP8266 HW I2C
#include <OneWire.h> //Librairie du bus OneWire
#include <DallasTemperature.h> //Librairie du capteur
float temp = 25.36; //variable température
OneWire oneWire(4); //Bus One Wire sur la pin 4 de l'arduino
DallasTemperature sensors(&oneWire); //Utilisation du bus Onewire pour les capteurs
DeviceAddress sensorDeviceAddress; //Vérifie la compatibilité des capteurs avec la librairie

//Définition du logo utilisé ici un thermomètre "therm" en fichier XBM avec l’éditeur ci-dessus
#define therm_logo_width 32
#define therm_logo_height 32
static unsigned char therm_logo_bits[] = {
  0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0xb0,0x01,0x00,
 0x00,0x10,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x01,0x00,
 0x00,0x10,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x01,0x00,
 0x00,0x10,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x10,0x01,0x00,
 0x00,0x10,0x01,0x00,0x00,0x10,0x01,0x00,0x00,0x50,0x01,0x00,
 0x00,0x50,0x01,0x00,0x00,0x50,0x01,0x00,0x00,0x50,0x01,0x00,
 0x00,0x50,0x01,0x00,0x00,0x58,0x03,0x00,0x00,0x48,0x02,0x00,
 0x00,0xec,0x06,0x00,0x00,0xf6,0x0d,0x00,0x00,0xba,0x0b,0x00,
 0x00,0x1a,0x0b,0x00,0x00,0x1a,0x0b,0x00,0x00,0xb6,0x0d,0x00,
 0x00,0xe6,0x0c,0x00,0x00,0x4c,0x06,0x00,0x00,0x18,0x03,0x00,
 0x00,0xf0,0x01,0x00,0x00,0x40,0x00,0x00};
  
void setup() {
// Serial.begin(9600); //Permet la communication en serial
  lcd.begin();
  sensors.begin(); //Activation des capteurs
 sensors.getAddress(sensorDeviceAddress, 0); //Demande l'adresse du capteur à l'index 0 du bus
 sensors.setResolution(sensorDeviceAddress, 12); //Résolutions possibles: 9,10,11,12
}

void loop() {
  lcd.clearBuffer();
  
  //lcd.setCursor(90,32);
  lcd.drawXBM( 95, 0, therm_logo_width, therm_logo_height, therm_logo_bits);   //à améliorer 
  
  lcd.setFont(u8g2_font_logisoso32_tr);
  lcd.setCursor(0,32);
  sensors.requestTemperatures(); //Demande la température aux capteurs
  temp = sensors.getTempCByIndex(0);
  String tempString = String(temp,2);
  lcd.print(tempString);
  lcd.sendBuffer();
// Serial.print("temperature: ");
// Serial.print(sensors.getTempCByIndex(0)); //Récupération de la température en celsius du capteur n°0
// Serial.println(" C");
  delay(1000);
}


Edition of icon images XBM files
  1. on line editor  https://xbm.jazzychad.net/ method 1
  2. method 2 with Gimp 2 define the size eg. 32x32
  3. draw with the pencil size 1
  4. export with the XBM format
  5. open with notepad++
  6. copy into Arduino IDE sketch


2019 February 23, first draft

Aucun commentaire:

Enregistrer un commentaire