
from machine import Pin, SPI
import time
KEY1 = Pin(0, Pin.IN, Pin.PULL_UP)
KEY2 = Pin(15, Pin.IN, Pin.PULL_UP)
Vdd = Pin(2, mode=Pin.OUT, value=0)
spi = SPI(0, baudrate=7500000, polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=Pin(6), mosi=Pin(7))
cs = Pin(1, mode=Pin.OUT, value=0)
cs(1)
Vdd(0)
state = False
def spi_write_data_1():
spi.write(bytes([0x01]))
def spi_write_data_2():
spi.write(bytes([0x02]))
def spi_write_data_3():
spi.write(bytes([0x03]))
def spi_write_data_4():
spi.write(bytes([0x04]))
def spi_write_data_5():
spi.write(bytes([0x05]))
def spi_write_data_6():
spi.write(bytes([0x06]))
def spi_write_data_7():
spi.write(bytes([0x07]))
def spi_write_data_8():
spi.write(bytes([0x08]))
def reverseGPIO():
if Vdd.value() == 1:
cs(0)
spi_write_data_1()
spi_write_data_2()
spi_write_data_8()
spi_write_data_4()
spi_write_data_5()
cs(1)
time.sleep(0.008)
else:
Vdd(1)
time.sleep(0.1)
cs(0)
spi_write_data_1()
spi_write_data_4()
spi_write_data_5()
spi_write_data_3()
spi_write_data_2()
cs(1)
time.sleep(0.008)
try:
while True:
if KEY1.value() == 0:
time.sleep_ms(10)
if KEY1.value() == 0:
reverseGPIO()
while KEY1.value() == 0:
time.sleep_ms(10)
if KEY2.value() == 0:
state = not state
if state:
cs(0)
spi_write_data_6()
cs(1)
else:
cs(0)
spi_write_data_7()
cs(1)
while KEY2.value() == 0:
time.sleep_ms(10)
except:
pass
こんにちは、MicroPythonコードを修正したいのですが、このように実行させたいので、どう修正したら、全然わからなくて、宜しかったら、教えていただけますでしょうか?
1. まず、初めにKEY 1を押してから直ぐに放した後、以下のデータを実行され:
Vdd(1)
time.sleep(0.1)
cs(0)
spi_write_data_1()
spi_write_data_4()
spi_write_data_5()
spi_write_data_3()
spi_write_data_2()
cs(1)
time.sleep(0.008)
2. そして、初めにKEY2を押してから直ぐに放したら、以下のデータが実行され:
cs(0)
spi_write_data_6()
cs(1)
3. それから、二回目KEY2を押してから直ぐに放したら、このデータが実行され:
cs(0)
spi_write_data_7()
cs(1)
4. 2番と3番がずっと繰り返せる
5. 最後に、KEY1を押してから直ぐ放したら、このデータが実行され:
cs(0)
spi_write_data_1()
spi_write_data_2()
spi_write_data_8()
spi_write_data_4()
spi_write_data_5()
cs(1)
Vdd.value(0)
time.sleep(0.1)
6. 5番が実行された後、1番に戻り、無限に繰り返せる。
7. 1番から5番までの内容は、一回目の繰り返しです。KEY1を押す前と最後にKEY1を押した後、KEY2を押しても何のコードが実行されないように修正したい。つまり、最初にKEY1が押され、その直後にKEY2が押された場合のみ、データが出力される。
Logic Analyzerで解析した波形図をアップロードします。ご参照ください。
写真のように、
1.チャンネル0~3は、それぞれVdd、Vddio、Vled、enを表します。
2.チャンネル7はKEY1、チャンネル8はKEY2を表しています。
3.図の白丸で囲った2つの部分は、コードが実行された後のループ(繰り返し)です。
4. 緑で囲った部分は、ボタン2を押してすぐに離すと、このサイクル(繰り返し)の外で発生する信号です。
5.緑で囲まれている部分から発生する信号をなくしたい(青色の丸で囲った部分と同じにしたい)

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) micropython コードについて 2 2023/06/14 13:13
- ドライブ・ストレージ HDDのチェック方法 6 2022/05/04 09:49
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- 英語 英語についてです。 write と write it down の違い 教えてくれませんか? 調べた 6 2022/09/10 16:51
- その他(SNS・コミュニケーションサービス) 自分のpcがハッキングされたようなメールが来たのですがどうすればいいですか? 4 2022/10/02 16:14
- Microsoft ASP SPIの非言語の割合と比が難しくて苦戦しています 2 2023/08/06 16:03
- その他(プログラミング・Web制作) Python - Excel で Webからデータを連続取得したいのですが エラーが出ます 1 2023/07/06 20:08
- 工学 非言語分野が全くできない人にオススメの参考書を教えてください 1 2023/06/01 16:15
- その他(プログラミング・Web制作) I2C接続のLCDディスプレイを使う 2 2023/05/01 17:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構造体のソートの方法について...
-
printfの%eで指数部分の桁数を...
-
Python3、、プログラミングの問...
-
c言語の多次元配列で1から100ま...
-
Nextの次に、入力した数値の中...
-
ポインター引数の関数でコンパ...
-
ActivePerlでSMTPプロトコルで...
-
ハッシュで重複キーを認める方...
-
花の名前を教えてください
-
アセンブリ言語と機械語のアド...
-
クイックソートを教えて下さい。
-
sort関数でひらがなとカタカナ...
-
テキストを処理するプログラム
-
複数行を順番通りに並べたい
-
Perl マッチング 1行だけ表示
-
C言語でのLinuxとwindows共通の...
-
エクセルVBA:日付データの変換...
-
int型(2バイト)データの分割
-
CreateProcessでの環境変数の設...
-
C言語 リスト構造
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
stable diffusionのエラー
-
エクセルVBA:日付データの変換...
-
【Excel VBA】10進数を2進数に...
-
int型(2バイト)データの分割
-
Excel VBA グラフ作成のとき...
-
C#でのswitch文
-
'dataType' 引数を Null にする...
-
linuxのシェルでファイル名に先...
-
printfの%eで指数部分の桁数を...
-
ポインター引数の関数でコンパ...
-
CreateProcessでの環境変数の設...
-
C言語でのLinuxとwindows共通の...
-
C言語でPBYTE型からDOUBLE型へ変換
-
pythonでDBのカラム名で取得し...
-
エクセルVBAで16の16乗を正確に...
-
FFTがうまくできない
-
ビットデータのチェック方法
-
参照渡しの速度について
-
POSTで配列のデータを渡す方法は?
-
PINVOKEで構造体配列をマーシャ...
おすすめ情報
CPUボードはラズパイpico
回路図は今だにないですが、とりあえず、picoから出す信号を作ってみたいです。
目的は、picoを使って、二つのボタンを繋いで、長方形LEDライトボードを光らせるようにしたいです。