LCD Display i 1wirenätverket

Så skriver man till display på 1-wirenätverket

LCD Display i 1wirenätverketTill 1-wirenätverket har vi kopplat en 4-radig LCD display, som är väldigt lätt att hanter. Genom att bara skriva till en fil dyker texten upp på displayen.

Den display vi har i Sundhult är köpt hos m.nu, och är i praktiken en  LCD-drivkretsmed 1-wiregränssnitt, och själva displayen. Jag har valt att bygga flera ”sidor” med information som roterar. Det är information om panna och kulverttemperaturer, hur varmt det är i de olika utrymmena i ekonomibyggnaden, generationsskifteshuset och manhuset.

Displayen kan bygga in i en låda, och där finns också knappar som man kan läsa av, och några digitala utgångar som man kan koppla dioder till för att indikera exempelvis larm eller annat.

Här berättar jag lite mer om displayen:

För att skriva till dsiplayen direkt från ett bash-script så gör man så här:

#/bin/sh
#
# Script to write to the display
#
cd /mnt/1wire/FF.A80300000100/
#
# Start backlight
#
echo -n 1 > backlight;
#
# Get temperature and write to display
#
# Read temperature and use python to do som rounding
# Write to first line of the display (line20.0)
temperature=`cat /mnt/1wire/[1wire ID]/temperature | python -c "print round(float(raw_input()),1)"| sed 's/ //g'`;
echo -n "Temperature is: $temperature'C" > line20.0;

Vill man hellre använda Python kan man ta dessa raderna:

#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# LCD-display sökväg
#
LCD = "/mnt/1wire/[Display ID]/"
def skriv(rad, text):
 """
 Skriv till display
In:
 rad: Vilken rad på displayen det skall skrivas till 1-4
 text: Texten som skall skrivas till displayen. Max 20 tecken
 """
if rad == 1:
 LCDLine = open(LCD + "line20.0", "w")
 elif rad == 2:
 LCDLine = open(LCD + "line20.1", "w")
 elif rad == 3:
 LCDLine = open(LCD + "line20.2", "w")
 elif rad == 4:
 LCDLine = open(LCD + "line20.3", "w")
LCDLine.write(text)
 LCDLine.close()
def backlight(on):
 """
 Tänd backgrundsbelysningen
In:
 on: 0 = släck, 1 = tänd
 """
LCDBacklight = open(LCD + "backlight", "w")
if on == 1:
 LCDBacklight.write("1")
 else:
 LCDBacklight.write("0")
 LCDBacklight.close()
#
# Exempel
#
backlight(1)
skriv(1, "Skriv rad 1")
temperatur = "24"
skriv(2, "Ute: " + temperatur + "\xDFC")

Läs mer om vårt 1-wirenätverk.