M5CardComputer SD-Card: Unterschied zwischen den Versionen
Peter (Diskussion | Beiträge) |
Peter (Diskussion | Beiträge) |
||
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 5: | Zeile 5: | ||
In UIFlow2 gibt es dafür einen großen Block, der auch schon die richtigen Voreinstellungen mitbringt:<br> | In UIFlow2 gibt es dafür einen großen Block, der auch schon die richtigen Voreinstellungen mitbringt:<br> | ||
[[file:sdcard_init_01.png]] | [[file:sdcard_init_01.png]] | ||
<br> | |||
Die Übersetzung in Micopython sieht dann so aus: | Die Übersetzung in Micopython sieht dann so aus: | ||
<pre> | <pre> | ||
Zeile 19: | Zeile 20: | ||
# Funktioniert, bringt aber diese Fehlermeldung: [Errno 22] EINVAL] | # Funktioniert, bringt aber diese Fehlermeldung: [Errno 22] EINVAL] | ||
</pre> | </pre> | ||
Sonderbarer Weise gibt das Original eine Fehlermeldung. Siehe Auskommentierte Zeilen im Listing. Nach dem | Sonderbarer Weise gibt das Original eine Fehlermeldung. Siehe Auskommentierte Zeilen im Listing. Nach dem Entfernen der Frequenzangabe erscheint sie nicht mehr. Es funktionierte aber auch mit der Fehlermeldung. | ||
<br> | |||
Die Fehlermeldung: [Errno 22] EINVAL] tritt wohl an verschiedenen Stellen auf. Sie deutet darauf hin, dass ein falscher Wert übergeben wurde. | |||
== SD-Card formatieren== | == SD-Card formatieren== | ||
Ich habe keine Möglichkeit gefunden die SD-Card im M5CardComputer zu formatieren. Deshalb habe ich sie unter Linux Mint formatiert und gleich ein Verzeichnis mit einigen Dateien darauf kopiert. | Ich habe keine Möglichkeit gefunden die SD-Card im M5CardComputer zu formatieren. Deshalb habe ich sie unter Linux Mint formatiert und gleich ein Verzeichnis mit einigen Dateien darauf kopiert. | ||
Mit den Dateifunktionen aus dem Modul os funktionierte der Zugriff auf die SD-Card sofort problemlos. | == Zugriff auf die SD-Card== | ||
Mit den Dateifunktionen aus dem Modul '''os''' funktionierte der Zugriff auf die SD-Card sofort problemlos.<br> | |||
Sie ist als '<nowiki/>'''/sd'''' ins Filesystem eingehängt. | |||
==Navigation== | == Ein Beispiel== | ||
<pre> | |||
import os, sys, io | |||
import M5 | |||
from M5 import * | |||
from hardware import * | |||
import time | |||
from hardware import sdcard | |||
# sdcard initialisieren | |||
sdcard.SDCard(slot=3, width=1, sck=40, miso=39, mosi=14, cs=12) | |||
# Datei anlegen und 2 Zeilen hineinschreiben | |||
with open('testdatei', 'w') as f: | |||
f.write('Erste Datei auf SD Card!\n') | |||
f.write('2. Zeile\n') | |||
# Eine weitere Zeile anhängen | |||
with open('testdatei', 'a') as f: | |||
f.write('Noch eine Zeile drangehängt.\n') | |||
# Datei zeilenweise auslesen und anzeigen | |||
with open('testdatei', 'r') as f: | |||
for zeile in f: | |||
print(zeile) | |||
</pre> | |||
Da die Datei mit '''with''' geöffnet wird muss sie nicht geschlossen werden. Das macht '''with''' im Hintergrund wenn der '''with-Block''' verlassen wird. | |||
== Aus der M5Stack Doku== | |||
Die SD-Card muss wohl gemountet werden. Bei meiner ging es auch ohne, war vielleicht Zufall? | |||
<br> | |||
Das Thema '''slot''' muss ich noch mal bearbeiten! | |||
<pre> | |||
import machine, os | |||
# Slot 2 uses pins sck=18, cs=5, miso=19, mosi=23 | |||
sd = machine.SDCard(slot=2) | |||
os.mount(sd, "/sd") # mount | |||
os.listdir('/sd') # list directory contents | |||
os.umount('/sd') # eject | |||
</pre> | |||
== Navigation== | |||
[[M5CardComputer|Zurück zur '''M5CardComputer''' Startseite]] | [[M5CardComputer|Zurück zur '''M5CardComputer''' Startseite]] |
Aktuelle Version vom 19. April 2024, 16:43 Uhr
https://community.m5stack.com/topic/6128/cardputer-sd-card-issues-how-to-format/6
SD-Card initialisieren[Bearbeiten | Quelltext bearbeiten]
Bevor wir eine SD-Card benutzen können, muss das Gerät erst initialisiert werden.
In UIFlow2 gibt es dafür einen großen Block, der auch schon die richtigen Voreinstellungen mitbringt:
Die Übersetzung in Micopython sieht dann so aus:
import os, sys, io import M5 from M5 import * from hardware import * import time from hardware import sdcard sdcard.SDCard(slot=3, width=1, sck=40, miso=39, mosi=14, cs=12) # sdcard.SDCard(slot=3, width=1, sck=40, miso=39, mosi=14, cs=12, freq=1000000) # Funktioniert, bringt aber diese Fehlermeldung: [Errno 22] EINVAL]
Sonderbarer Weise gibt das Original eine Fehlermeldung. Siehe Auskommentierte Zeilen im Listing. Nach dem Entfernen der Frequenzangabe erscheint sie nicht mehr. Es funktionierte aber auch mit der Fehlermeldung.
Die Fehlermeldung: [Errno 22] EINVAL] tritt wohl an verschiedenen Stellen auf. Sie deutet darauf hin, dass ein falscher Wert übergeben wurde.
SD-Card formatieren[Bearbeiten | Quelltext bearbeiten]
Ich habe keine Möglichkeit gefunden die SD-Card im M5CardComputer zu formatieren. Deshalb habe ich sie unter Linux Mint formatiert und gleich ein Verzeichnis mit einigen Dateien darauf kopiert.
Zugriff auf die SD-Card[Bearbeiten | Quelltext bearbeiten]
Mit den Dateifunktionen aus dem Modul os funktionierte der Zugriff auf die SD-Card sofort problemlos.
Sie ist als '/sd' ins Filesystem eingehängt.
Ein Beispiel[Bearbeiten | Quelltext bearbeiten]
import os, sys, io import M5 from M5 import * from hardware import * import time from hardware import sdcard # sdcard initialisieren sdcard.SDCard(slot=3, width=1, sck=40, miso=39, mosi=14, cs=12) # Datei anlegen und 2 Zeilen hineinschreiben with open('testdatei', 'w') as f: f.write('Erste Datei auf SD Card!\n') f.write('2. Zeile\n') # Eine weitere Zeile anhängen with open('testdatei', 'a') as f: f.write('Noch eine Zeile drangehängt.\n') # Datei zeilenweise auslesen und anzeigen with open('testdatei', 'r') as f: for zeile in f: print(zeile)
Da die Datei mit with geöffnet wird muss sie nicht geschlossen werden. Das macht with im Hintergrund wenn der with-Block verlassen wird.
Aus der M5Stack Doku[Bearbeiten | Quelltext bearbeiten]
Die SD-Card muss wohl gemountet werden. Bei meiner ging es auch ohne, war vielleicht Zufall?
Das Thema slot muss ich noch mal bearbeiten!
import machine, os # Slot 2 uses pins sck=18, cs=5, miso=19, mosi=23 sd = machine.SDCard(slot=2) os.mount(sd, "/sd") # mount os.listdir('/sd') # list directory contents os.umount('/sd') # eject