
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
stable diffusionのエラー
-
【Excel VBA】10進数を2進数に...
-
int型(2バイト)データの分割
-
CSVファイルの行と列のセルって...
-
パイプを用いたプロセス間通信...
-
C言語の勉強しています。すみま...
-
ポインター引数の関数でコンパ...
-
c言語 配列から数字だけをint型...
-
C#でのswitch文
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
COBOLのCOMP形式について
-
Line Inputにて改行があっても...
-
半角、全角の判別方法
-
全角半角を調べるライブラリ関...
-
この関数はどのプログラミング...
-
utf-8でメールを送信すると件名...
-
COleDateTime とtime_t
-
ビットからバイトへの変換
-
Excel 1セル当りの文字数が2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
stable diffusionのエラー
-
printfの%eで指数部分の桁数を...
-
C言語の勉強しています。すみま...
-
C言語についてです! 同じ年の...
-
ポインター引数の関数でコンパ...
-
c言語での wavファイルの編集(...
-
C#でのswitch文
-
ビットデータのチェック方法
-
txtファイルを読み込んで表示関...
-
int型(2バイト)データの分割
-
Excel VBA グラフ作成のとき...
-
'dataType' 引数を Null にする...
-
Cのプログラムがどうしても動き...
-
C言語について
-
matlabでのRRI検出
-
【VBA】複数条件の検索
-
VBA セルの値入力について
-
Nextの次に、入力した数値の中...
-
System.Collections.ArrayList ...
-
PINVOKEで構造体配列をマーシャ...
おすすめ情報
CPUボードはラズパイpico
回路図は今だにないですが、とりあえず、picoから出す信号を作ってみたいです。
目的は、picoを使って、二つのボタンを繋いで、長方形LEDライトボードを光らせるようにしたいです。