
こんにちは、ラズパイPicoと2つのボタン2を繋いて、SPI通信のMicroPythonコードを修正したいのですが、このように実行させたい:
最初にKEY1を押す前に、もしKEY2を押しちゃったら、何のデータも実行されないようにしたい。つまり、KEY1を押したあと、KEY2がしか効かないようにしたい
どう修正したら、全然わからなくて、宜しかったら、教えていただけますでしょうか?
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([0x1]))
def spi_write_data_2():
spi.write(bytes([0x2]))
def spi_write_data_3():
spi.write(bytes([0x3]))
def spi_write_data_4():
spi.write(bytes([0x4]))
def spi_write_data_5():
spi.write(bytes([0x5]))
def spi_write_data_6():
spi.write(bytes([0x6]))
def spi_write_data_7():
spi.write(bytes([0x7]))
def spi_write_data_8():
spi.write(bytes([0x8]))
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
写真(Logic Analyzerの信号波形図)のように:緑で囲まれている部分を消したい

A 回答 (2件)
- 最新から表示
- 回答順に表示

No.2
- 回答日時:
情報アップデートありがとうございます
申し訳ないですが、直接のやり取りは、遠慮させてください
大きめの画像などであれば、クラウド系のストレージを使っていただいた方がいいです。例えば、https://datadeliver.net/ サイトなどがあるので、そういうサイトにアップしていただければと思います
Channelの説明からする、紐解いてみましたが、ソースコードとロジアナのデータが合ってないように思えます
というのは、reverseGPIO( )で、Vdd(0)が無いので、このソースコードでは、ずっとHighになったままだと思いますが、どうでしょうか?
また、もう一つ気になるのが、Channel8はKEY2ということですが、ロジアナを基準で考えると、SCSか、SCLKか、MOSIのPINを見てるように思えます
今一度、ソースコードと、ロジアナのデータの確認をお願いできればと思います
また、別途気になったのが、通常この手のプログラムは、データの立ち上がりエッジをトリガーにするか、立ち下がりエッジをトリガーにするか、統一するのが一般的ですが、質問者さんのロジアナのデータを見ると、それが統一されてないようです、その辺りも、統一する方向で考えられた方がいいと思います

No.1
- 回答日時:
この質問のコードは、スマホで見るとインデントがついてるのが分かりますが、PCで見るとインデントが付いてないので、特にPythonでは、良く分からないコードになってます
また、イメージが大きすぎるようなので、文字が潰れて判別しづらいです
特に、このロジアナのChannel1〜8が、どのIOなのかが全く分かりませんし、肝心のKEY1と、KEY2が不明なままでは、KEY1と、KEY2がトリガーとなるタイミングチャートとしては、どこの処理で、どこのIOに何のデータを書いてるかが、第三者が見たときに、全く理解できないものになってます
そのあたりを、クリアにしていただければ、まだ、解答やヘルプなどができると思いますので、ご検討ください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
プログラミングを学べる!?進化している子どものおもちゃについて専門家に聞いた!
プログラミングを学べるレゴブロックがあることはご存知だろうか。レゴに限らず最近のおもちゃには、プログラミングの要素がどんどん取り入れられているようだ。「教えて!goo」にも、「プログラミングを学べる子供...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pythonでのローカルファイルか...
-
if関数とは?
-
今のプログラミング言語
-
プログラミングについて
-
プログラム言語
-
自作scratch アニメの商用利用
-
数学、プログラミング、物理、...
-
画像生成AIのプロンプトの作り...
-
vba クリップボードクリアにつ...
-
pip --versionがエラーになる
-
Geminiフォーム 画像生成で 人...
-
pythonの実行に関する質問
-
CSVファイルの複数行削除
-
著作権法について
-
Pythonでの文字列からfloatへの...
-
プログラミングのPythonのnoteb...
-
MOVEコマンドでサブフォルダー...
-
プログラミング言語のバージョ...
-
⚠️至急です!⚠️ Yahoo!知恵袋の...
-
COPYコマンドで、最後に1文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
write downとfill outの違いを...
-
fortranのwrite文コメント有無...
-
OpenSSLのSSL_write()をタイム...
-
奇数・偶数の区別をプログラミング
-
パスカル→JAVA
-
最大値、最小値の求め方
-
HTMLの値の渡し方について質問...
-
ACCESSのレポートの表示...
-
遷移先のURLにパラメータを表示...
-
フォームのtextareaにnl2brを使...
-
javascriptでlabelの値取得
-
改行したいのですが
-
aspxでIFみたいなことがしたい
-
ASP.netで、CheckBoxListのSele...
-
<asp>タグの属性情報が取得でき...
-
C#のRichTextBoxで表示行数を取...
-
ASPからEXCELに出力する
-
スペースの取り方について
-
テキストボックスにマクロでメ...
-
入力テキスト内で改行コードが...
おすすめ情報
ロジアナでは、Channel1〜8それぞれは、
vdd,vddio,vled,en,scs,sclk,mosi,KEY1(白い線),KEY2(紫色の線)となる。
ここで、制限があるため、もし宜しければ、メールを教えていただけますでしょうか?