〔ESP32-WROOM-32E〕
〔マイコンのトップに戻る〕
[準備編]
[module編]
[GPIO編]
[通信編]
[OLED編]
[WiFi編]
[メール編]
[並行処理編]
[色々編]

"boot.py"と"main.py"しか入っていないですね。
このファイルは起動時にESP8266が特別に扱うファイルで、
"boot.py"スクリプトが存在する場合は最初に実行され、次に"main.py"スクリプトが実行されます。
注意は、"ampy"を操作する時に、他に"COM4"ポートへアクセスしていない事です。

"get"コマンドはファイルをダウンロードするのではなく、ファイルの内容を表示する事に注意です。
他にディレクトリ作成、ファイル書き込みもできる様です。

ファイルに書き込むにはパイプライン操作を行えばOKです。
PowerShellで操作したら出来たファイルがえらい改行だらけでぇ....
"コマンドプロンプト"にした次第です、古い人間はPowerShellなんてぇ出来るかぃ!
--------------------------------------------------------------------------------
import time
from machine import Pin
led = Pin(16, Pin.OUT) # ボードに内蔵のLED
printf("Hello world!") # ここをワザと間違ってみる
led.value(0) # LED点灯
time.sleep(1)
led.value(1) # LED消灯
--------------------------------------------------------------------------------

チョットぉトレースがうざいがぁエラー行と"printf"のネームエラーが出ているようですね。
次は正常スクリプトでやってみる。

では次はループする下記スクリプトを書き込んでみる。
--------------------------------------------------------------------------------
import time
from machine import Pin
led = Pin(16, Pin.OUT) # ボードに内蔵のLED
i = 0
led.value(0) # LED点灯
while True:
if i > 30 : break # 30カウントで終了
print(i)
i=i+1
time.sleep(1) # 1000msで繰り返す
led.value(1) # LED消灯
--------------------------------------------------------------------------------

スクリプトが終了するまではプロンプトが返ってこない、
終了後に"print"メッセージが一気に表示される様です。
Myボードのリセットボタンを押せばプロンプトが返ってきます。
”help”表示

”os”のモジュール一覧

"os.listdir()"でフラッシュメモリのファイル一覧が表示できますね。
ファイル作成以外は大体ファイル操作は出来そうですね。
uosの詳しい説明は、ここを参照しましょう。
マイクロパイシェル(upysh)

上の操作よりはこちらの方がいいなぁ。
"clear"は、画面の消去です、"cls"の方が良かったな。
"mv()"は、ファイル移動だが、"mv('test.txt','lib/test.txt')"とするとディレクトリへ移動できる様です。
"head()"は、頭から10行だけ表示します、"head('test.txt', n=10)"なので10を変えれます。

ファイル作成もできる様ですね。
[ファイルopenモード"w"・"r"]
[open()][f.close()][f.write()][f.read()]

こんな操作でファイル書き込みと読み込みができます。
ファイルのオープンモードは"r"で読み込む場合に使用します。
"w"は書き込みモード、ファイルが存在しない場合は作成され、有れば常に上書きされます。
なのでぇ、前に書き込んであったデータは消えます。
尚、"f.write()"から返されるのは書き込んだバイト数です。
[ファイルopenモード"a"・"x"]

"a"はアペンドモードでファイルの最後に追加書き込みされます。
ファイルが存在しない場合は作成されます。
"x"はファイルが存在しない場合は作成され書き込まれますが、有ればエラーです。
ファイルopenモードを指定しない場合は読み込みモードとなります。
[f.seek()]

"f.seek()"メソッドは読み書きする位置までシークします。
第1引数でシークする位置を指定し、
第2引数は"0"ならファイル先頭からシークしなさい指示です、
"2"ならファイルの最後を基準にしてシークし、
"1"なら現在のファイル位置を基準にしてシークします。
"f.seek(7,0)"は先頭0から数えて7バイト目に位置付けし、
"f.seek(-4,2)"は最後1から数えて先頭方向へ4バイト目に位置付けします。
"f.seek(0,2)"がファイルの最後の次位置ですよ。
又、"f.tell()"は、ファイル中における現在の位置を示す整数を返します。
[ファイルopenモード"+"]

"+"はファイルへの読み書きが同時に行えるモードです。
前に書き込んであったデータは残るので"ESP"が"esp"になった次第です。
又、"w+"・"r+"・"a+"モードもOKです。
[f.flush()]

"f.flush()"メソッドは実際にファイルへ書き込みます。
通常は"f.close()"でファイルに書き込まれます、それまではバッファに読み書きを行っています。
たまに"close"前に書き込んで置きたいと思う事が有るのですがぁ、そんな時に使いましょう。
[os.remove()]

次の操作の為に一旦ファイルを削除します。
(因みに、ディレクトリの削除は"os.rmdir()"を使います)

そして新たなファイルを作成します、内容は1行単位の改行付きデータを3行ほど作成。
[f.readlines()][f.readline()]

"f.read()"は読み込みのサイズを指定していないので全部読み込まれています。
"f.readlines()"は3行全部読み込まれています。
"f.readline()"は1行のみ読み込まれています。
ならばぁ。
短いスクリプトを書いてみます、(正確は書いたスクリプトを貼り付けますです)

上のは、各データに改行(\n)が入っていて、"print()"も改行してくれるので各データ間が空きました。
なので、下で"print()"が改行しない様にしたら各データ間が詰まります。
尚、読み込んだデータの方の改行を削除するには、
print(i.replace('\n',''))
と書き換えればOKです。

"f.readlines()"を使った場合はこんなんなりましたぁ。
あ、それとぉ、オープン時のファイルモードを指定しなかった場合は読み込みモードです。
withブロックは、ブロックの終了時に自動的にファイルクローズされます。
[f.tell()]

"f.tell()"は、ファイルオブジェクトのファイル中における現在の位置を示す整数を返します。
ステートメントの最後が":"行で終わる場合は、プロンプトは"..."に変わります、
カーソルが自動的に正しい量だけインデントされ、次の行をすぐに入力し始める事ができます。
入力完了なら[ENTER]キーを4回押しましょう、実行されます。
ファイルの詳細を表示してみる。
[os.ilistdir()][os.mkdir]

先ずは"os.mkdir()"でディレクトリ"lib"を作成します。
でぇ、"os.ilistdir()"でファイルの詳細が分かる様です。
但し、このメソッドはファイル情報が入ったイテレータ(データ構造)を返す様です。
32768(0x8000)は普通のファイルで16384(0x4000)はディレクトリの様です。
最後の数値がファイルサイズの様です。

| SDカード | ボード1ピンNo |
ボード2ピンNo |
SPI名称 |
ESP接続先 |
| @ | D3(DATA3) | CS |
SS(CS) |
GPIO4 |
| A | CMD | DI |
SDI |
GPIO13(MO) |
| B | (VSS) | (VSS) | ||
| C | (VDD) | (VDD) | ||
| D | CLK |
CLK | SCK |
GPIO14 |
| E | (VSS) | (VSS) | ||
| F | D0(DATA0) | DO |
SDO |
GPIO12(MI) |
| G | D1(DATA1) | |||
| H | D2(DATA2) |

"sdcard.py"を右クリックして、[実行(U)'Flash sdcard.py']をクリックします。
"main.py"も同様に操作します。
--------------------------------------------------------------------------------
import uos
import sdcard
from machine import SPI, Pin
# SDカードの初期化とマウントを行う(SPIの初期化、ピン4番(GPIO4)をSSで割り付)
sd = sdcard.SDCard(SPI(1), Pin(4, Pin.OUT))
uos.mount(sd, "/sd")
# "test.txt"を読み込む
with open('/sd/test.txt', 'r') as f:
for i in f:
print(i, end='')
# "test1.txt"に書き込みテスト
with open('/sd/test1.txt', 'w') as f:
f.write('Hello ESP8266')
print(uos.listdir('/sd')) # SDカードのファイル一覧を表示
# SDカードをアンマウントする
uos.umount('/sd')
print(uos.listdir()) # フラッシュメモリのファイル一覧を表示
--------------------------------------------------------------------------------
G "MicroPython REPL"を動作させましょう。

REPLが表示され、">>>"のプロンプトが表示されるのを待ちます。
表示されたら[CTRL]+[D]キーを押しましょう。
ソフトリセットが実行されスクリプトが動作し、こんな感じになるでしょう。
【きむ茶工房ガレージハウス】
Copyright (C) 2006-2021 Shigehiro Kimura All Rights Reserved.