Wir haben im Schlaue Pflanze Projekt schon viel darüber gelernt, Daten auszulesen und auszuwerten. Mit dem Display haben wir eine einfache Möglichkeit, diese Daten darzustellen. Und wenn wir schon einmal dabei sind, können wir das Display natürlich auch für eine Uhr benutzen. Teilweise musst du erst noch die richtige Zeitzone einstellen.

Mehr Über das Display und das Anwenden findest du hier Das 5110 Display.

git clone https://github.com/coding-world/Nokia_LCD
git clone https://github.com/coding-world/fonts
cd Nokia_LCD
sudo python setup.py install
Anschlüsse am Raspberry PiAnschlüsse am Display
GPIO 241 – RST
GPIO 8 /SPI CE02 – CE
GPIO 233 – DC
GPIO 10 / SPI MOSI4 – Din
GPIO 11 / SPI CLK5 – CLK
3,3V6 – VCC
3,3V7 – BL
GND8 – GND

display.py

import Nokia_LCD as LCD
import Adafruit_GPIO.SPI as SPI

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import time

spiSettings = SPI.SpiDev(0,1, max_speed_hz=4000000)
d = LCD.PCD8544(23, 24, spi=spiSettings)

d.begin(contrast=60)
d.clear()
d.display()
font = ImageFont.truetype("/home/pi/fonts/Unique.ttf", 28)
fontSmall = ImageFont.truetype("/home/pi/fonts/Unique.ttf", 14)


def anzeige(text1, text2, text3):
    image = Image.new("1",(LCD.LCDWIDTH, LCD.LCDHEIGHT))
    draw = ImageDraw.Draw(image)
    draw.rectangle((0,0,84,48),outline=255,fill=255)
    d.clear()
    d.display()
    draw.text((1,1), text1, font=fontSmall)
    draw.text((5,10), text2, font=font)
    draw.text((1,34), text3, font=fontSmall)
    d.image(image)
    d.display()

anzeige_schlaue_pflanze.py

import Python_DHT
from display import anzeige
import spidev
import time
import os
import RPi.GPIO as gpio

# LED
led = 21
gpio.setmode(gpio.BCM)
gpio.setup(led, gpio.OUT)

# DHT11
sensor = Python_DHT.DHT11
pin = 4


# SPI Verbindung herstellen
spi = spidev.SpiDev()
spi.open(0,0)

# Liest Daten vom MCP3008
def analogEingang(channel):
  adc = spi.xfer2([1,(8+channel)<<4,0])
  data = ((adc[1]&3) << 8) + adc[2]
  return data


while True:
  bodenFeuchtigkeit = analogEingang(1)
  textPflanze = "By Norbert"

  if bodenFeuchtigkeit > 650:
    text2 = "Giess Mich"
    gpio.output(led, gpio.HIGH)
  else:
    text2 = time.strftime("%H:%M")
    gpio.output(led, gpio.LOW)

  feuchtigkeit, temperatur = Python_DHT.read_retry(sensor, pin)

  textTemperatur = str(temperatur)+" c"

  anzeige("Feuchtigkeit", str(bodenFeuchtigkeit), textPflanze)
  time.sleep(20)
  anzeige("Uhrzeit ", text2, textPflanze)
  time.sleep(20)
  anzeige("Temperatur", textTemperatur, textPflanze)
  time.sleep(20)

Und so sieht das dann am Ende aus