• Hallo zusammen, nicht zuletzt an René.


    Vor kurzem hatte ich bereits als Kommentar zu dem Video "Raspberry Pico und die Neopixel" die Frage gestellt, ob die Kurse vielleicht doch noch eine Fortsetzung finden. Ich persönlich fand sowohl die Micropython- als auch die Arduino-Kurse sehr wertvoll. Leider hat Renè, wie er selbst schreibt, ein wenig den Faden verloren. Sehr schade.


    Ich habe das gelernte genutzt und mich u.a. auf die Suche nach alternativen Treibern für den ILI9341-Controller gemacht. Unter folgender URL


    https://github.com/rdagger/micropython-ili9341


    habe ich einen interessanten Treiber mit vielen Demos gefunden. Er arbeitet ohne Framebuffer und ist für meine Begriffe recht einfach zu verstehen. Vielleicht ist das ja ein Trigger (oder der ein Teiltrigger) um mit der Wetterstation weiter zu machen.


    @René:

    Aber selbstverständlich freue ich mich auch über jedes Deiner Kurzprojekte. Ich habe durchaus eine Vorstellung davon, wieviel Arbeit das ist, solche Videos in dieser Qualität zu machen und dann auch noch tolles Begleitmaterial zu liefern. Dafür an dieser Stelle mal wieder ein großes DANKE! Ich kann daher durchaus auch nachvollziehen, dass Du möglicherweise auch ein wenig die Motivation zum Weitermachen in zwei, (nein, ja vier Projekten, die Grundlagen sind ja auch zu berücksichtigen), aufwändigen Projekten verloren hast.


    Bleib gesund und aktiv!

  • Danke Daniel,

    Ich habe mir jetzt erst mal das vorgeschlagene Board bestellt. Eventuell liegt es doch dadran. Es kommt aber erst ende Dezember an.

    Danke für die Bemühungen.

    Gruß Andreas

  • Hallo Andreas

    Mein Display LOLIN TFT-2.4 betreibe ich an einem LOLIN D32 PRO.

    Ich habe mir Dein Listing heruntergeladen und die SPI-Paramter meinem Board entprechend angepasst.

    Im Programmcode konnte ich keinen Fehler ausmachen (gesamtes Programm im Anhang).

    Wie es scheint, kann Dein Board den nötigen Speicheplatz für framebuf nicht reservieren. Ich habe im Programm die Funktion free eingefügt und rufe diese am Programmende auf. Diese zeigt den freien und allocierten Speicherplatz an. Wie sieht das bei Dir aus?


    Python
    1. class TFT():
    2. def __init__(self):
    3. self.spi_tft = SPI(1, baudrate=32000000, sck=Pin(18), mosi=Pin(23))
    4. self.tft = ILI9341(self.spi_tft, cs=Pin(14), dc=Pin(27), rst=Pin(33))
    5. self.buffer = bytearray(self.tft.width * self.tft.height * 2)
    6. self.frame = framebuf.FrameBuffer(self.buffer, self.tft.width, self.tft.height, framebuf.RGB565)
    7. self.clear()



    Gesamtes Programm


    30-11-_2020_08-33-31.jpg

  • Hallo Daniel, danke für die Antwort.

    In der Arduinoumgebung zeigt das Display die verschiedene Farben und Muster und auch zum Schluss den Text. alles wie es sein muss.

    Ich brauchte doch nur die Dateien einfügen, oder?

    Der Fehler passiert bei test 1 und test 2

    Gruß Andreas

    Das Listing:


    from machine import Pin, SPI

    from adafruit_ili9341.ili9341 import ILI9341

    import framebuf


    # Einige Farben

    RED = const(0XF800) # (255, 0, 0)

    GREEN = const(0X07E0) # (0, 255, 0)

    BLUE = const(0X001F) # (0, 0, 255)

    YELLOW = const(0XFFE0) # (255, 255, 0)

    FUCHSIA = const(0XF81F) # (255, 0, 255)

    AQUA = const(0X07FF) # (0, 255, 255)

    MAROON = const(0X8000) # (128, 0, 0)

    DARKGREEN = const(0X0400) # (0, 128, 0)

    NAVY = const(0X0010) # (0, 0, 128)

    TEAL = const(0X0410) # (0, 128, 128)

    PURPLE = const(0X8010) # (128, 0, 128)

    OLIVE = const(0X8400) # (128, 128, 0)

    ORANGE = const(0XFC00) # (255, 128, 0)

    DEEP_PINK = const(0XF810) # (255, 0, 128)

    CHARTREUSE = const(0X87E0) # (128, 255, 0)

    SPRING_GREEN = const(0X07F0) # (0, 255, 128)

    INDIGO = const(0X801F) # (128, 0, 255)

    DODGER_BLUE = const(0X041F) # (0, 128, 255)

    CYAN = const(0X87FF) # (128, 255, 255)

    PINK = const(0XFC1F) # (255, 128, 255)

    LIGHT_YELLOW = const(0XFFF0) # (255, 255, 128)

    LIGHT_CORAL = const(0XFC10) # (255, 128, 128)

    LIGHT_GREEN = const(0X87F0) # (128, 255, 128)

    LIGHT_SLATE_BLUE = const(0X841F) # (128, 128, 255)

    WHITE = const(0XFFFF) # (255, 255, 255)

    BLACK = const(0)


    text = ('Das ist Zeile 1','Das ist Zeile 2','Das ist Zeile 3, äöü',

    'Das ist Zeile 4','Das ist Zeile 5','Das ist Zeile 6',

    'Das ist Zeile 7','Das ist Zeile 8','Das ist Zeile 9',

    'Das ist Zeile 10','Das ist Zeile 11','Das ist Zeile 12',

    'Das ist Zeile 13','Das ist Zeile 14','Das ist Zeile 15')



    class TFT():

    def __init__(self):

    self.spi_tft = SPI(1, baudrate=32000000, sck=Pin(14), mosi=Pin(13))

    self.tft = ILI9341(self.spi_tft, cs=Pin(5), dc=Pin(4), rst=Pin(18))

    self.buffer = bytearray(self.tft.width * self.tft.height * 2)

    self.frame = framebuf.FrameBuffer(self.buffer, self.tft.width, self.tft.height, framebuf.RGB565)

    self.clear()


    def clear(self,color=BLACK):

    self.frame.fill(color)

    self.line = 0


    def show(self):

    self.tft.blit_buffer(self.buffer, 0, 0, self.tft.width, self.tft.height)


    def print(self,text, pos=0, line=0, color=WHITE, x=None, y=None):

    if not text: text = " "

    text = text.replace("ä", "ae")

    text = text.replace("ö", "oe")

    text = text.replace("ü", "ue")

    if not x: x = 8*pos

    if not y: y = 10 * line

    self.frame.text(text,x,y,color)


    def println(self, text=None, pos=0, color=WHITE, x=None):

    if text: self.print(text, pos, self.line, color, x)

    self.line += 1



    display = TFT()



    def test1():

    display.clear()

    display.print(text[2],line=5,color=BLUE)

    display.show()


    def test2():

    display.clear()

    display.println('012345678901234567890')

    display.println('0123456789',pos=10,color=BLUE)

    display.println('12345',pos=1,color=GREEN)

    for line in text:

    display.println(line)

    display.show()



    #test1()

    test2()


    Hier nochmal die Fehlermeldung:


    Traceback (most recent call last):

    File "<stdin>", line 69, in <module>

    File "<stdin>", line 44, in __init__

    MemoryError: memory allocation failed, allocating 153600 bytes

    >>> <thonny>{'AQUA': '2047', 'TFT': "<class 'TFT'>", 'INDIGO': '32799', 'SPI': "<class 'SoftSPI'>", 'DEEP_PINK': '63504', 'PURPLE': '32784', 'OLIVE': '33792', 'ORANGE': '64512', 'ILI9341': "<class 'ILI9341'>", 'PINK': '64543', 'BLACK': '0', 'framebuf': "<module 'framebuf'>", 'TEAL': '1040', 'CYAN': '34815', 'NAVY': '16', 'LIGHT_GREEN': '34800', 'RED': '63488', 'LIGHT_SLATE_BLUE': '33823', 'CHARTREUSE': '34784', 'WHITE': '65535', 'GREEN': '2016', 'LIGHT_YELLOW': '65520', 'LIGHT_CORAL': '64528', 'FUCHSIA': '63519', 'DODGER_BLUE': '1055', 'BLUE': '31', 'YELLOW': '65504', 'MAROON': '32768', 'Pin': "<class 'Pin'>", 'text': "('Das ist Zeile 1', 'Das ist Zeile 2', 'Das ist Zeile 3, \\xe4\\xf6\\xfc', 'Das ist Zeile 4', 'Das ist Zeile 5', 'Das ist Zeile 6', 'Das ist Zeile 7', 'Das ist Zeile 8', 'Das ist Zeile 9', 'Das ist Zeile 10', 'Das ist Zeile 11', 'Das ist Zeile 12', 'Das ist Zeile 13', 'Das ist Zeile 14', 'Das ist Zeile 15')", 'SPRING_GREEN': '2032', 'DARKGREEN': '1024'}</thonny>>

  • Hoi Daniels

    Mit pyton, displays und iot hab ich nichts an hut. Ich möchte aber wissen woher die messdaen kommen?

    Es gibt da wahrscheinlich ein öffentlicher dienst. Wo kann man die daten abholen? Auch in der schweiz?

    Bitte um ein kurzen hinweis. Gruss nische wink2.gif

    * Ich hab gerade Zeit, wo gibt's nichts zu tun? *



  • Hallo zusammen

    Ich habe mir auch das LOLIN 2.4" TFT-Display bei AliEpress bestellt inkl. dem passenden TFT-Anschlusskabel.

    In der Zwischenzeit habe ich das Material erhalten, TFT an ESP32 angeschlossen, SPI Parameter im Programm von René entsprechend angepasst und das Display erfolgreich in Betreib genommen. René hat schon in seinem Video darauf hingewiesen, dass das mit den Farben nicht so funktioniert, wie es eigentlich gemäss der Farbdefinitionen sollte. Ich konnte mich den "falschen" Farbwerten nicht anfreunden und suchte daher nach einer Alternative.

    Diese fand ich nun unter https://github.com/jeffmer/micropython-ili9341 / Copyright (c) 2017 Jeffrey N. Magee

    Schaut es euch doch einmal an. Vielleich könnte man auf dieser Basis die weiteren Lektionen "Micropython mit ESP32" abstützen :/

    pasted-from-clipboard.png  pasted-from-clipboard.png

  • Hallo,


    ich habe bei AliExpress neben dem WeMos LOLIN D32 Pro auch gleich das dort angebotene LOLIN 2.4" TFT-Display sowie ein 20 cm langes 10-poliges Anschlusskabel mitbestellt. Das Kabel passt Board- und TFT-seitig in den Micro-Anschluss. Die Ports sind dann zwar ein wenig anders als von René vorgegeben, aber es funktioniert wunderbar. (Zumindest das Testprogramm ;))

  • René hat hier mal etwas dazu geschrieben: Digikey


    Das vorgestellte Display scheint aber auch beim großen Fluss erhältlich zu sein. Mit und ohne Touchscreenfunktion. Ab 10-11€ aufwärts.


    Gruß Kai

  • Hallo zusammen,


    ich wollte das im Video verwendete Display bestellen. Es ist leider nicht lieferbar.


    Jetzt habe ich bei Digi-Key ein entsprechendes 2.8‘‘ TFT LCD Display von Adafruit gefunden.


    Hat bereits jemand Bestellerfahrung bei Digi-Key (Lieferung nach Deutschland)?


    Zoll- und Einfuhrgebühr werden ja von Digi-Key übernommen.


    Geht die Abwicklung problemlos?


    Gruß Jürgen