<制御プログラム>
表示として、I2C接続小型LCDモジュールピッチ変換キット(秋月)を繋げました。
表示プログラムは、公開されているものを使わせていただきました。
JH7UBCブログ Rasberry Pi Pico MicroPython I2C LCD AQM0802A表示テスト
線量率計算の説明は、次回?書きます。
from machine import Pin,I2C
import utime
import time
led=Pin(25,Pin.OUT)
#led.toggle()
i2c=I2C(0,freq=100000,scl=Pin(17),sda=Pin(16))
addr=0x3e
buf=bytearray(2)
def write_cmd(cmd):
buf[0]=0x00
buf[1]=cmd
i2c.writeto(addr,buf)
#led.toggle()
def write_char(char):
buf[0]=0x40
buf[1]=char
i2c.writeto(addr,buf)
#led.toggle()
def print(str):
for c in str:
write_char(ord(c))
#led.toggle()
def LCD_cursor(x,y):
if y==0:
write_cmd(0x80+x)
if y==1:
write_cmd(0xc0+x)
#led.toggle()
def LCD_clear():
buf[0]=0x00
buf[1]=0x01
i2c.writeto(addr,buf)
utime.sleep(0.001)
#led.toggle()
def LCD_home():
buf[0]=0x00
buf[1]=0x02
i2c.writeto(addr,buf)
utime.sleep(0.001)
#led.toggle()
def LCD_init():
orders=[b'\x38', b'\x39', b'\x14', b'\x73', b'\x56', b'\x6c', b'\x38', b'\x0c', b'\x01']
utime.sleep(0.04)
# led.toggle()
for order in orders:
i2c.writeto_mem(addr, 0x00, order)
utime.sleep(0.001)
led.toggle()
LCD_init()
LCD_clear()
LCD_home()
LCD_cursor(0,2)
pikkari=[b'\xcb',b'\xdf',b'\xc2',b'\xb6',b'\xd8',b'\xa0',b'\xb8',b'\xdd']
print(pikkari)
blank=[b'\xa0',b'\xa0',b'\xa0',b'\xa0',b'\xa0',b'\xa0',b'\xa0',b'\xa0']
#割り込みテスト
cnt=0
ave=4500
btn=Pin(15,Pin.IN,Pin.PULL_UP)
sw1=Pin(3,Pin.IN,Pin.PULL_UP)
sw2=Pin(2,Pin.IN,Pin.PULL_UP) #mode
def pulse_in(p):
global cnt
global start
global ave
cnt=cnt+sw1.value()
stop=time.ticks_ms()
ave=0.95*ave+0.05*(sw1.value()*time.ticks_diff(stop,start)+(1-sw1.value())*ave)
start=stop
btn.irq(trigger=Pin.IRQ_FALLING,handler=pulse_in)
start=time.ticks_ms()
sw_old=0
while True:
LCD_cursor(0,1)
print(blank)
LCD_cursor(0,1)
if sw2.value()==1:
print(str(60000/ave))
else:
print(str(cnt))
LCD_cursor(7,1)
sw_new=sw1.value()
if sw_new==1:
cnt=cnt*sw_old
sw_old=sw_new
utime.sleep(0.5)
Comments
Post a Comment