MultipleTemperatureSensorsToLCD
Multiple Temperature Sensors To 2x16 OR 4x20 LCD
The example sketch below shows how to read up to 4 DS18B20 temperature sensors on the same cable and display the results on a 2-line 16 character OR 4-line 20 character-per-line LCD Display with the I2C 'Backpack'. Bill Perry's LCD library makes that magic work... See THIS PAGE for more LCD info.
NOTE! THIS sketch uses pin 10 to connect to the DS18B20 signal wire!!
You MUST find the internal serial numbers of the DS18B20's first and enter them into the sketch. You can start with one sensor.. Scroll down to " Test Sketch to read DS18B20 addresses:" on this page: arduino-info/Brick-Temperature-DS18B20 Use that sketch uploaded to your Arduino to find your sensors addresses. You could cut/paste with two windows of Arduino IDE to put the addresses into your copy of the sketch below.
The sketch will display each sensor's reading in degrees C and F. If there is no sensor on a channel, an unmatched address or a connection problem Sensor Error will be displayed.
NOTE: Read the comments in the sketch below to know where to connect things and where to get the needed libraries. (Library help here:)
EXAMPLE SKETCH (Copy and Paste into Arduino IDE window).
<font color="#95a5a6">/* YourDuino.com Example: Multiple DS18B20 Temperature Sensors</font> <font color="#95a5a6"> Displayed on 2x16 OR 4x20 character LCD display </font> <font color="#95a5a6"> </font> <font color="#95a5a6"> * YD_DS18B20_2or4LINE_LCD.ino</font> <font color="#95a5a6"> </font> <font color="#95a5a6"> DS18B20 Pinout (Left to Right, pins down, flat side toward you)</font> <font color="#95a5a6"> - Left = Ground</font> <font color="#95a5a6"> - Center = Signal (Pin 10): (with 3.3K to 4.7K resistor to +5 or 3.3 )</font> <font color="#95a5a6"> - Right = +5 or +3.3 V</font> <font color="#95a5a6"> DS18B20 Stainless Steel end with cable: BLACK=GND RED=+5V WHITEorYELLOW=Signal</font> <font color="#95a5a6"> </font> <font color="#95a5a6"> Questions? terry@yourduino.com */</font> <font color="#95a5a6">/*-----( Import needed libraries )-----*/</font> <font color="#434f54">//NOTE: INSTALL OneWire and DallasTemperature libraries from Arduino Library Manager </font> <font color="#434f54">// See: </font><u><font color="#434f54">https://arduinoinfo.mywikis.wiki/wiki/Arduino-Libraries</font></u><font color="#434f54"></font> <font color="#5e6d03">#include</font> <font color="#434f54"><</font><b><font color="#d35400">OneWire</font></b><font color="#434f54">.</font><font color="#000000">h</font><font color="#434f54">></font> <font color="#5e6d03">#include</font> <font color="#434f54"><</font><b><font color="#d35400">DallasTemperature</font></b><font color="#434f54">.</font><font color="#000000">h</font><font color="#434f54">></font> <font color="#434f54">// LCD Libraries</font> <font color="#5e6d03">#include</font> <font color="#434f54"><</font><font color="#d35400">Wire</font><font color="#434f54">.</font><font color="#000000">h</font><font color="#434f54">></font> <font color="#434f54">// Wire (I2C) Library (Preinstalled on Arduino IDE) </font> <font color="#434f54">//NOTE: INSTALL hd44780e library from Arduino Library Manager </font> <font color="#434f54">// Move original LiquidCrystal library elsewhere, install this in it's place</font> <font color="#5e6d03">#include</font> <font color="#434f54"><</font><b><font color="#d35400">hd44780</font></b><font color="#434f54">.</font><font color="#000000">h</font><font color="#434f54">></font> <font color="#434f54">// main hd44780 header</font> <font color="#5e6d03">#include</font> <font color="#434f54"><</font><font color="#000000">hd44780ioClass</font><font color="#434f54">/</font><b><font color="#d35400">hd44780_I2Cexp</font></b><font color="#434f54">.</font><font color="#000000">h</font><font color="#434f54">></font> <font color="#434f54">// i2c expander i/o class header</font> <font color="#95a5a6">/*-----( Declare Constants and Pin Numbers )-----*/</font> <font color="#434f54">// Sensor Data wire is plugged into port 10 on the Arduino (can be changed)</font> <font color="#5e6d03">#define</font> <font color="#000000">ONE_WIRE_BUS</font> <font color="#000000">10</font> <font color="#434f54">// NOTE: No ";" on #define </font> <font color="#95a5a6">/*-----( Declare objects )-----*/</font> <font color="#434f54">// Setup a oneWire instance to communicate with any OneWire devices </font> <font color="#434f54">// (not just Maxim/Dallas temperature ICs)</font> <b><font color="#d35400">OneWire</font></b> <font color="#000000">oneWire</font><font color="#000000">(</font><font color="#000000">ONE_WIRE_BUS</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// Pass address of our oneWire instance to Dallas Temperature. </font> <b><font color="#d35400">DallasTemperature</font></b> <font color="#000000">sensors</font><font color="#000000">(</font><font color="#434f54">&</font><font color="#000000">oneWire</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// Start the LCD display library</font> <b><font color="#d35400">hd44780_I2Cexp</font></b> <font color="#000000">lcd</font><font color="#000000">;</font> <font color="#434f54">// declare lcd object: auto locate & auto config expander chip</font> <font color="#95a5a6">/*-----( Declare Variables )-----*/</font> <font color="#434f54">// YOU MUST DO THIS FOR SENSORS TO WORK!!!!</font> <font color="#434f54">// Assign the addresses of your 1-Wire temp sensors.</font> <font color="#434f54">// See the tutorial on how to obtain these addresses:</font> <font color="#434f54">// </font><u><font color="#434f54">https://arduinoinfo.mywikis.wiki/wiki/Brick-Temperature-DS18B20#Read_individual_DS18B20_Internal_Addresses</font></u><font color="#434f54">:</font> <b><font color="#d35400">DeviceAddress</font></b> <font color="#000000">Probe01</font> <font color="#434f54">=</font> <font color="#000000">{</font> <font color="#000000">0x28</font><font color="#434f54">,</font> <font color="#000000">0xFF</font><font color="#434f54">,</font> <font color="#000000">0xA6</font><font color="#434f54">,</font> <font color="#000000">0x0A</font><font color="#434f54">,</font> <font color="#000000">0x94</font><font color="#434f54">,</font> <font color="#000000">0x16</font><font color="#434f54">,</font> <font color="#000000">0x04</font><font color="#434f54">,</font> <font color="#000000">0x6D</font> <font color="#000000">}</font><font color="#000000">;</font> <font color="#434f54">//</font> <b><font color="#d35400">DeviceAddress</font></b> <font color="#000000">Probe02</font> <font color="#434f54">=</font> <font color="#000000">{</font> <font color="#000000">0x28</font><font color="#434f54">,</font> <font color="#000000">0xE1</font><font color="#434f54">,</font> <font color="#000000">0xC7</font><font color="#434f54">,</font> <font color="#000000">0x40</font><font color="#434f54">,</font> <font color="#000000">0x04</font><font color="#434f54">,</font> <font color="#000000">0x00</font><font color="#434f54">,</font> <font color="#000000">0x00</font><font color="#434f54">,</font> <font color="#000000">0x0D</font> <font color="#000000">}</font><font color="#000000">;</font> <font color="#434f54">// "5"</font> <b><font color="#d35400">DeviceAddress</font></b> <font color="#000000">Probe03</font> <font color="#434f54">=</font> <font color="#000000">{</font> <font color="#000000">0x28</font><font color="#434f54">,</font> <font color="#000000">0x9A</font><font color="#434f54">,</font> <font color="#000000">0x80</font><font color="#434f54">,</font> <font color="#000000">0x40</font><font color="#434f54">,</font> <font color="#000000">0x04</font><font color="#434f54">,</font> <font color="#000000">0x00</font><font color="#434f54">,</font> <font color="#000000">0x00</font><font color="#434f54">,</font> <font color="#000000">0xD5</font> <font color="#000000">}</font><font color="#000000">;</font> <font color="#434f54">// "4" Again for test</font> <b><font color="#d35400">DeviceAddress</font></b> <font color="#000000">Probe04</font> <font color="#434f54">=</font> <font color="#000000">{</font> <font color="#000000">0x28</font><font color="#434f54">,</font> <font color="#000000">0x10</font><font color="#434f54">,</font> <font color="#000000">0xA4</font><font color="#434f54">,</font> <font color="#000000">0x57</font><font color="#434f54">,</font> <font color="#000000">0x04</font><font color="#434f54">,</font> <font color="#000000">0x00</font><font color="#434f54">,</font> <font color="#000000">0x00</font><font color="#434f54">,</font> <font color="#000000">0xA9</font> <font color="#000000">}</font><font color="#000000">;</font> <font color="#00979c">float</font> <font color="#000000">tempC</font><font color="#000000">;</font> <font color="#434f54">// Temporary Results</font> <font color="#00979c">float</font> <font color="#000000">tempF</font><font color="#000000">;</font> <font color="#00979c">void</font> <font color="#5e6d03">setup</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#95a5a6">/****** SETUP: RUNS ONCE ******/</font> <font color="#000000">{</font> <font color="#434f54">//------- Initialize the Temperature measurement library--------------</font> <font color="#000000">sensors</font><font color="#434f54">.</font><font color="#d35400">begin</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// set the resolution to 10 bit (Can be 9 to 12 bits .. lower is faster)</font> <font color="#000000">sensors</font><font color="#434f54">.</font><font color="#d35400">setResolution</font><font color="#000000">(</font><font color="#000000">Probe01</font><font color="#434f54">,</font> <font color="#000000">10</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">sensors</font><font color="#434f54">.</font><font color="#d35400">setResolution</font><font color="#000000">(</font><font color="#000000">Probe02</font><font color="#434f54">,</font> <font color="#000000">10</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">sensors</font><font color="#434f54">.</font><font color="#d35400">setResolution</font><font color="#000000">(</font><font color="#000000">Probe03</font><font color="#434f54">,</font> <font color="#000000">10</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">sensors</font><font color="#434f54">.</font><font color="#d35400">setResolution</font><font color="#000000">(</font><font color="#000000">Probe04</font><font color="#434f54">,</font> <font color="#000000">10</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//---------------- Initialize the lcd ------------------ </font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">begin</font> <font color="#000000">(</font><font color="#000000">20</font><font color="#434f54">,</font><font color="#000000">4</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// 20 characters, 4 lines</font> <font color="#000000">}</font><font color="#434f54">//--(end setup )---</font> <font color="#00979c">void</font> <font color="#5e6d03">loop</font><font color="#000000">(</font><font color="#000000">)</font> <font color="#95a5a6">/****** LOOP: RUNS CONSTANTLY ******/</font> <font color="#000000">{</font> <font color="#000000">sensors</font><font color="#434f54">.</font><font color="#d35400">requestTemperatures</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// Send the command to get temperatures</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">clear</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">// Reset the display </font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">home</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">backlight</font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//Backlight ON if under program control </font> <font color="#434f54">// Print our characters on the LCD</font> <font color="#434f54">// NOTE: Line number and character number start at 0 not 1</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">setCursor</font><font color="#000000">(</font><font color="#000000">0</font><font color="#434f54">,</font><font color="#000000">0</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//Start at character 0 on line 0</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">"1: "</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">displayTemperature</font><font color="#000000">(</font><font color="#000000">Probe01</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">setCursor</font><font color="#000000">(</font><font color="#000000">0</font><font color="#434f54">,</font><font color="#000000">1</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//Start at character 0 on line 1</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">"2: "</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">displayTemperature</font><font color="#000000">(</font><font color="#000000">Probe02</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">setCursor</font><font color="#000000">(</font><font color="#000000">0</font><font color="#434f54">,</font><font color="#000000">2</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//Start at character 0 on line 2</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">"3: "</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">displayTemperature</font><font color="#000000">(</font><font color="#000000">Probe03</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">setCursor</font><font color="#000000">(</font><font color="#000000">0</font><font color="#434f54">,</font><font color="#000000">3</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#434f54">//Start at character 0 on line 3</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">"4: "</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">displayTemperature</font><font color="#000000">(</font><font color="#000000">Probe04</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#d35400">delay</font><font color="#000000">(</font><font color="#000000">2000</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">}</font><font color="#434f54">//--(end main loop )---</font> <font color="#95a5a6">/*-----( Declare User-written Functions )-----*/</font> <font color="#00979c">void</font> <font color="#000000">displayTemperature</font><font color="#000000">(</font><b><font color="#d35400">DeviceAddress</font></b> <font color="#000000">deviceAddress</font><font color="#000000">)</font> <font color="#000000">{</font> <font color="#000000">tempC</font> <font color="#434f54">=</font> <font color="#000000">sensors</font><font color="#434f54">.</font><font color="#d35400">getTempC</font><font color="#000000">(</font><font color="#000000">deviceAddress</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">tempF</font> <font color="#434f54">=</font> <font color="#000000">sensors</font><font color="#434f54">.</font><font color="#d35400">getTempF</font><font color="#000000">(</font><font color="#000000">deviceAddress</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#5e6d03">if</font> <font color="#000000">(</font><font color="#000000">tempC</font> <font color="#434f54">==</font> <font color="#434f54">-</font><font color="#000000">127.00</font><font color="#000000">)</font> <font color="#434f54">// Measurement failed or no device found</font> <font color="#000000">{</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">"Sensor Error"</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">}</font> <font color="#5e6d03">else</font> <font color="#000000">{</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">"C="</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#000000">tempC</font><font color="#434f54">,</font><font color="#000000">1</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#005c5f">" F="</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">lcd</font><font color="#434f54">.</font><font color="#d35400">print</font><font color="#000000">(</font><font color="#000000">tempF</font><font color="#434f54">,</font><font color="#000000">1</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#000000">}</font> <font color="#000000">}</font><font color="#434f54">// End printTemperature</font> <font color="#434f54">//*********( THE END )***********</font></shtml>