Raspberry Pi Picoで、もう少しボリュームコントローラー、サーボを付けましたので、アップさせていただきます。
画像荒くて申し訳ないです。今回は、クォリティより、スピードを重視させて頂きました。
参考にさせて頂いたサイト:
液晶表示
サーボ(クルクル回る器械)
右左のスイッチ
LEDライト
LEDは、赤:330Rの抵抗器、白:330Rの抵抗器、青:330R+220R=550Rの抵抗器を使いました。
スイッチは、330Rの抵抗器を使っています。
LED等が壊れてしまう可能性があるので、必ず抵抗器はチェックして下さい。
def servo_value(degree):
return int((degree * 9.5 / 180 + 2.5) * 65535 / 100)
import _thread, time
from lcd1602 import LCD
from machine import Pin, PWM
led=Pin(25,Pin.OUT)
led.value(1)
lcd = LCD()
string = 'Valid Code Co.,\n'
lcd.message(string)
led_blue=Pin(16,Pin.OUT)
led_white=Pin(17,Pin.OUT)
led_red=Pin(18,Pin.OUT)
button = machine.Pin(14, machine.Pin.IN)
mode = 'auto'
buf = ''
pwm = PWM(Pin(25))
pwm.freq(1000)
pwmServo = PWM(Pin(19))
pwmServo.freq(50)
sensor_adc = machine.ADC(0)
conversion_factor = 3.3 / (65535)
cnt = [0] # スレッドで共有する変数
# Core1 並列処理(本体LED点滅&カウント数表示) ---------------------------------------------------------------
def core0(cnt):
try:
while True: # ずっと繰り返し
if button.value() == 0:
#Manual
lcd.clear()
lcd.message(string + ' ON')
mode = 'manual'
led.value(1)
if 'blue' == buf:
led_blue.value(1)
led_white.value(0)
led_red.value(0)
elif 'white' == buf:
led_blue.value(0)
led_white.value(1)
led_red.value(0)
elif 'red' == buf:
led_blue.value(0)
led_white.value(0)
led_red.value(1)
else:
#auto
lcd.clear()
lcd.message(string + ' It\'s my turn.')
mode = 'auto'
led.value(0)
led_blue.value(1)
time.sleep(1)
led_blue.value(0)
led_white.value(1)
time.sleep(1)
led_white.value(0)
led_red.value(1)
time.sleep(1)
led_red.value(0)
except KeyboardInterrupt:
pass
def core1(cnt):
try:
while True: # ずっと繰り返し
reading = sensor_adc.read_u16()
pwm.duty_u16(reading)
#print('ADC', reading)
pwmServo.duty_u16(servo_value(sensor_adc.read_u16() * 180 / 65535))
time.sleep(0.1)
except KeyboardInterrupt:
pass
# 新しいスレッドでcore1関数を実行 ※引数はタプルで指定(要素1つはカンマ付)
_thread.start_new_thread(core1, (cnt,))
# メインスレッドでcore0関数を実行
core0(cnt)