Micropython Kurs 2023

From Attraktor Wiki
Revision as of 09:16, 3 September 2023 by Kapest (talk | contribs) (Das Filesystem)
Jump to navigation Jump to search


Diese Seite ist meine persönliche Planungsseite und die Unterlage für den Microphyton Kurd 2023.


Über diese Seite

Auf dieser Seite ist > M i c r o p y t h o n < häufig falsch geschrieben als Microphyton. Ich habe den Fehler auf einer der ersten Seiten gemacht. Nun glaubt Mediwiki es müsse das richtig geschriebene Wort durch das Falsche ersetzen.
Bisher habe ich keine Möglichkeit gefunden das zu korrigieren.
https://www.mediawiki.org/wiki/Extension:Replace_Text/de

Über diesen Kurs

  • Dieser Kurs richtet sich an Phyton Anfänger.
  • Er gibt einen Einblick in die grundlegenden Eigenschaften von Phyton/Microphyton.
    • Im 1.Teil werden wir uns mit der Programmiersprache Phyton/Microphyton beschäfftigen.
    • Im 2.Teil werden wir auch die Hardware einsetzen.
  • Die Teilnehmer sollen überwiegend eigene Erfahrungen im Umgang mit Microphyton machen.
    • Deshalb ist es wichtig die erforderliche Hardware ab dem 1. Tag funktionsfähig dabei zu haben.
    • Die Themen werden vorgestellt und dann von den Teilnehmern ausprobiert.
  • Am Ende des 1.Teils sollten die Teilnehmer in der Lage sein kleine Programme in Microphyton zu entwickeln.
  • Es muss eine ganze Menge Stoff vermittelt werden, um dieses Ziel zu erreichen.
    • Deshalb ist eine aktive Teilnahme der Teilnehmer erforderlich.
  • Der Kurs besteht aus 2 Teilen:
    • Einführung mit viel Praxis im 1.Teil
      • Im 1.Teil weitgehend natives Microphyton, nichts M5Stack/Raspberry Pi Pico spezifisches.
    • Vertiefung und Microcontroller spezifisches im 2.Teil
      • Im 2.Teil wird auch M5Stack/Raspberry Pi Pico spezifisches behandelt.
  • Es geht bei diesem Kurs nicht darum schnell irgendwelche Effekte zu erzielen, sondern darum eine Programmiersprache zu erlernen.
    • Deshalb werden wir im ersten Teil keine LED's blinken lassen, sondern uns intensiv mit dem beschäfftigen, was Microphyton uns zu bieten hat.
    • Im 2.Teil können wir dann auch eine LED blinken lassen. Wir wissen dann aber wie und warum da was funktioniert.


Was der Kurs Euch inhaltlich bietet könnt Ihr weiter unten unter Inhalte sehen.

Technische Vorraussetzungen

  • Es ist ein Microcontroller Board mit RP2040/W, ESP32/S3 oder M5Stick/Stack erforderlich.
  • Es wird Laptop mit Windows benötigt.
  • Als IDE kommt Thonny 4.1.2 oder neuer zum Einsatz.
    • Thonny installieren.
    • Microphyton installieren.
  • Wer Probleme mit der Installion von Thonny auf dem PC und/oder Microphyton auf dem Microcontroller hat, muss am vorherigen Dienstag, den 12.9.23 oder Donnerstag, den 14.9.23 ab 18:00 Uhr zum Attraktor kommen damit wir dort Thonny und/oder Microphyton installieren können.
    • Ggf. können Laptops mit installiertem Thonny vom Attraktor zur Verfügung gestellt werden.

Anmeldung

Wer am Kurs telnehmen möchte melde sich bitte per Email (peter@attraktor.org) bis zu 12.9.23 bei mir an.

Zeitraum

Teil 1: 19.09.2023 - 10.10.2023
Teil 2: 07.11.2023 - 28.11.2023
Anzahl: 2x 4 Abende von 18:30 - 21:30 Uhr

Inhalte

Teil 1

Die Themen des ersten Teils sind weitgehend Hardwareunabhängig und meist auch nicht Microphyton spezifisch.

1. Abend

Di. 19.09.2023
1. Lektion: Mit Phyton und Thonny vertraut machen - REPL
2. Lektion: Erste Schritte
3. Lektion: Datentypen
4. Lektion: Mit Phyton rechnen

2. Abend

Di. 26.09.2023
5. Lektion: Variablen Vielfalt

3. Abend

Di. 03.10.2023
6. Lektion: Entscheidungen
7. Lektion: Wiederholungen
8. Lektion: Funktionen

4. Abend

Di. 10.10.2023
9. Lektion: Was ist programmieren?
10. Lektion: Scripte schreiben
11. Lektion: Module
12. Lektion: Standardmodule von Microphyton
13. Lektion: Externe Module finden

Teil 2

5. Abend

07.11.2023

Auffrischung und Ergänzung des 1. Teils

14. Lektion: Variablen_vielfalt.extend()
15. Lektion: Stringbearbeitung
16. Lektion: Funktionen.extend()
17. Lektion: Fehlerbehandlung
https://medium.com/@bobbykboseoffice/10-essential-phyton-coding-conventions-aaf5c3761622

6. Abend

14.11.2023

Erster Hardware Kontakt

18. Lektion: Pin's
19. Lektion: Neopixel

20. Lektion: Onewire
21. Lektion: UART
22. Lektion: SPI
23. Lektion: I2C

24. Lektion: ADC

25. Lektion: DAC
26. Lektion: Puls Weiten Modulation (PWM)
27. Lektion: Watch Dog Timer (WDT)
28. Lektion: Interrupts
29. Lektion: Timer

7. Abend

21.11.2023

Das Filesystem

Die Funktionen zum Umgang mit dem Filesystem befinden sich im Modul os:

os.chdir(path)
wechselt das aktuelle Verzeichnis
os.getcwd()
Zeigt das aktuelle Verzeichnis an
os.ilistdir([dir])
Diese Funktion gibt einen Iterator zurück, der dann Tupel liefert, die den Einträgen in dem Verzeichnis entsprechen, das sie auflistet. Ohne Argument listet sie das aktuelle Verzeichnis auf, andernfalls das durch dir angegebene Verzeichnis.
Die Tupel haben die Form (Name, Typ, Inode[, Größe]):
  • name ist eine Zeichenkette (oder Bytes, wenn dir ein Bytes-Objekt ist) und ist der Name des Eintrags;
  • type ist eine ganze Zahl, die den Typ des Eintrags angibt, mit 0x4000 für Verzeichnisse und 0x8000 für normale Dateien;
  • inode ist eine ganze Zahl, die dem Inode der Datei entspricht und bei Dateisystemen, die keinen solchen Begriff haben, 0 sein kann.
    Einige Plattformen können ein 4-Tupel zurückgeben, das die Größe des Eintrags enthält. Bei Dateieinträgen ist size eine Ganzzahl, die die Größe der Datei angibt, oder -1, wenn sie unbekannt ist.
    Für Verzeichniseinträge ist ihre Bedeutung derzeit nicht definiert.
os.listdir([dir])
Wenn kein Argument angegeben wird, wird das aktuelle Verzeichnis aufgelistet. Andernfalls wird das angegebene Verzeichnis aufgelistet.
os.mkdir(path)
erzeugt ein neues Verzeichnis.
os.remove(path)
Entfernt eine Datei.
os.rmdir(path)
Entfernt ein Verzeichnis.
os.rename(old_path, new_path)
Ändert den Namen einer Datei.
  • Json

JSON (JavaScript Object Notation) ist aufgrund seiner Einfachheit und Kreuzkompatibilität mit mehreren Programmiersprachen ein weit verbreiteter Standard für den Datenaustausch. Aufgrund seiner menschlichen und maschinenlesbaren Natur ist es für viele Entwickler eine ideale Wahl. In Python jsonbietet das Modul eine benutzerfreundliche Schnittstelle zum Kodieren und Dekodieren von JSON-Daten, sodass Entwickler nahtlos mit JSON-Daten arbeiten können.

Das jsonModul in Python bietet verschiedene Methoden und Klassen zum Umgang mit JSON-Daten. Beispielsweise dumpserialisiert die Methode Python-Objekte in JSON, während die dumpsMethode eine JSON-String-Darstellung eines Python-Objekts zurückgibt. Andererseits loaddeserialisiert die Methode ein JSON-Objekt in ein Python-Objekt und die loadsMethode deserialisiert einen JSON-String in ein Python-Objekt.

Abgesehen von diesen Methoden jsonstellt das Modul mehrere Klassen bereit, mit denen die JSON-Kodierung und -Dekodierung angepasst werden kann. Eine solche Klasse ist die JSONEncoderKlasse, die benutzerdefinierte Codierungsregeln definieren kann. Eine weitere Möglichkeit ist die JSONDecoderKlasse, die benutzerdefinierte Dekodierungsregeln definieren kann.

Alles in allem jsonbietet das Modul in Python eine leistungsstarke und flexible Möglichkeit, mit JSON-Daten zu arbeiten. Ganz gleich, ob Sie eine Webanwendung erstellen oder mit Daten arbeiten, dieses Modul deckt alles ab, was Sie brauchen.

JSON kodieren dumpMethode Die dumpMethode serialisiert Python-Objekte in ein dateiähnliches JSON-Objekt, was besonders nützlich ist, wenn mit Dateien gearbeitet wird.

import json

data = { "name" : "John" , "age" : 30 , "city" : "New York" }

mit open ( "data.json" , "w" ) as json_file:

   json.dump(data, json_file)

dumpsMethode Die dumpsMethode serialisiert Python-Objekte in eine JSON-formatierte Zeichenfolge, was praktisch ist, wenn Sie JSON-Daten über ein Netzwerk senden oder in eine Webseite einbetten müssen.

import json

data = {

   „name“ : „John“ , 
   „age“ : 30 , 
   „city“ …
Kontextmanager
  • with
Wlan
NTP
RTC
Datum und Uhrzeit
Links:

8. Abend

28.11.2023


Kritik


$ jupyter notebook



Material zum Kurs

Die folgenden Dateien sind im Wiki als .txt gespeichert. Mit einen Klick darauf werden sie angezeigt, aber nicht herunter geladen.
Es ist folgendermaßen zu verfahren:

  • Datei mit Linksklick Ziel speichern unter herrunterladen.
  • Dateinamenerweiterung von .txt in .py ändern.
  • Die erscheinende Warnung weg klicken.
6. Lektion

Zahlenraten.py
https://www.python-lernen.de/uebung-zahlenraten.htm
https://www.freecodecamp.org/news/python-program-examples-simple-code-examples-for-beginners/
https://profound.academy/python-introduction/zYwMdQXFuKPpQa5RyFMJ

7. Lektion

Tannenbaum_1.py
Tannenbaum_2.py


Mediawiki - MEMS-Typen ändern

https://www.mediawiki.org/wiki/Manual:Configuring_file_uploads/de
https://www.mediawiki.org/wiki/Manual:$wgProhibitedFileExtensions

9. Lektion

Karel.txt

Material für den Kurs

Hier findet Ihr eine Liste der erforderlichen Hardware:

  • Für alle Hardwarebezogenen Lektionen:
    • Steckbrett
    • Kabel
  • 18. Lektion: Pin's
    • LED
    • Widerstand 330 Ohm
    • Taster
    • Widerstand 10kOhm
  • 19. Lektion: Neopixel
    • Neopixel LED - Nur EINE LED!


SSD1306 Display

ToDo

  • 1.Lektion
    • Wo ist das Programm Begrüßung.py?
  • 2.Lektion
    • Variablenbeschreibungen für die Übung!
  • 3.Lektion
  • 4.Lektion
  • 5.Lektion
  • 6.Lektion
  • 7.Lektion
  • 8.Lektion
  • 9.Lektion
  • 10.Lektion
  • 11.Lektion
  • 12.Lektion
    • Modules von ESP32 und Raspberry Pi Pico W einbauen
  • 13.Lektion
  • 14.Lektion
  • 15.Lektion
  • 16.Lektion
  • 17.Lektion
  • 18.Lektion
  • 19.Lektion
  • 20.Lektion
  • 21.Lektion
  • 22.Lektion
  • 23.Lektion
  • 24.Lektion
  • 25.Lektion
  • 26.Lektion
  • 27.Lektion
  • 28.Lektion
  • 29.Lektion
  • 30.Lektion

Links zur Vorbereitung

https://www.youtube.com/watch?v=nwIgxrXP-X4
https://techexplorations.com/
https://www.youtube.com/watch?v=362fjQdpFlc
https://www.youtube.com/watch?v=RBpK8C3N-Y8
https://www.youtube.com/watch?v=rfscVS0vtbw
https://www.youtube.com/watch?v=eWRfhZUzrAc
https://randomnerdtutorials.com/raspberry-pi-pico-outputs-inputs-microphyton/
https://randomnerdtutorials.com/getting-started-raspberry-pi-pico-w/#install-thonny-ide
100-days-of-phyton
[]
[]
[]

Navigation

Zur Attraktor Wiki Startseite