Страница 1 из 1

Термометр на Arduino UNO, DS18B20 и LCD nokia 5110

СообщениеДобавлено: 03 дек 2016, 22:41
admin
Изображение

Подключение LCD к Ардуино:

PIN1 on LCD ==>> PIN 12 on Arduino

PIN2 on LCD ==>> PIN 11 on Arduino

PIN3 on LCD ==>> PIN 10 on Arduino

PIN4 on LCD ==>> PIN 9 on Arduino

PIN5 on LCD ==>> PIN 8 on Arduino

PIN6 on LCD ==>> PIN 3.3 Volt on Arduino

PIN7 on LCD ==>> PIN 5 volt on Arduino

PIN8 on LCD ==>> PIN Ground on Arduino

Понадобятся:

1. Arduino Uno
2. DS18b20 Temperature Sensor.
3. Nokia 5110 LCD
Провода папы/мамы для соединений.

Библиотеки:

LCD5110_Graph_Library

DallasTemperature_Library

Скетч:

Код: выделить все
/*
Проект для DS18b20 и Nokia 5110 LCD дисплея.
 */

#include <OneWire.h>
#include <DallasTemperature.h>
#include <LCD5110_Graph.h>
#define ONE_WIRE_BUS 2

LCD5110 lcd(8,9,10,12,11);

extern unsigned char SmallFont[];
extern unsigned char BigNumbers[];
extern uint8_t borderRoundedIcon[];

char TempCelciusFahrenheit[6];

OneWire oneWire(ONE_WIRE_BUS);

DallasTemperature sensors(&oneWire);

float tempC = 0;
float tempF = 0;

void setup(void)
{
  lcd.InitLCD();
  sensors.begin();
}

void loop(void)
{
  lcd.clrScr();
  lcd.drawBitmap(0, 0, borderRoundedIcon, 84, 48);
  sensors.requestTemperatures();
  tempC = sensors.getTempCByIndex(0);
  tempF = sensors.toFahrenheit(tempC);
//  convertToString(tempF); //Фаренгейт, раскомментировать для отображения.
  convertToString(tempC);  //Градусы, закомментировать при использовании шкалы Фаренгейта.
  lcd.setFont(BigNumbers);
  lcd.print(TempCelciusFahrenheit,22,14); // Выводим доли градуса после нуля.
  lcd.setFont(SmallFont);
  lcd.print("Temp.Celc.",17,5); //Закомментировать для отображения шкалы Фаренгейта
//  lcd.print("Temp.Fahr.",17,5); //Раскомментировать для отображения шкалы Фаренгейта
  lcd.update(); 
  delay(1000);
}
void convertToString(float number)
{
   dtostrf(number, 3, 1, TempCelciusFahrenheit);
}