ラズパイとpicoの間で双方向通信を試みて
結論を言うと、うまくいかなくて諦めました。
あきらめて、pico – pico の双方向通信にしました。
考えてみたら当たり前だけど、pico – pico の双方向通信にすると
リモコンと本体、両方同じようなプログラムで良いので
ラズパイ – pico よりも全然簡単でした
本体側のプログラムです
前回とあまり変わらないので、コメントは略。
from machine import UART, Pin
import time
BAUD_RATE = 9600
UART_TIMEOUT = 1.0
LOOP_INTERVAL = 0.05
LED_PIN = 15 # GPIO 15 (RP-pico pin 20)
led = Pin(LED_PIN, Pin.OUT)
LED_ON = 1
LED_OFF = 0
on_count = 0
uart = UART(0, baudrate=BAUD_RATE, tx=Pin(0), rx=Pin(1))
while True:
if uart.any():
data = uart.read(1)
if data == b'1':
led.value(LED_ON)
uart.write(f"count: {on_count}\n".encode('utf-8'))
on_count += 1
if data == b'0':
led.value(LED_OFF)
time.sleep(LOOP_INTERVAL)
リモコン側のプログラムです
from machine import UART, Pin
import time
BAUD_RATE = 9600
UART_TIMEOUT = 1.0
LOOP_INTERVAL = 0.05
BUTTON_INPUT = 15 # 入力ピン(GPIO 15 = RP-pico pin 20)
STATUS_ON = 1
STATUS_OFF = 0
prev_onoff_status = STATUS_OFF
button = Pin(BUTTON_INPUT, Pin.IN, Pin.PULL_UP)
uart=UART(0, baudrate=9600,tx=Pin(0),rx=Pin(1))
while True:
if button.value() == 0:
if prev_onoff_status == STATUS_OFF:
prev_onoff_status = STATUS_ON
uart.write(b'1')
received_data = uart.readline()
print(f"本体から受信: {received_data}")
else:
if prev_onoff_status == STATUS_ON:
prev_onoff_status = STATUS_OFF
uart.write(b'0')
time.sleep(LOOP_INTERVAL)
次回はいよいよBluetoothでの接続に挑戦です

コメント