How to use RP2040_Pi_Pico ? 2

<制御プログラム>
表示として、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

Popular posts from this blog

How to use RP2040_Pi_Pico ? 3

How to use RP2040_Pi_Pico ? 4