Érintés érzékelő Picoval

Az MPR121 érintés érzékelő könnyen használható Picoval is. I2C-n keresztül lehet az eszközzel kommunikálni, ezért a GND és táp mellett szükséged lesz egy SDA és egy SCL lábra a Picon.

Ehhez itt egy library:

from micropython import const
from time import sleep_ms

ADDRESS = const(0x5a)

class MPR121:    
    def __init__(self, i2c):
        self.i2c = i2c
        self.reset()
    
    def cmd(self, reg, value):
        self.i2c.writeto_mem(ADDRESS,reg,bytes([value]))
        
    def reset(self):
        self.cmd(0x80, 0x63)
        sleep_ms(1)
        self.cmd(0x5e, 0)
        self.set_thresholds(12,6)
        rst = [0x01,0x01,0x0e,0,0x01,0x05,0x01,0,0,0,0]
        for i in range(43, 54):
            self.cmd(i, rst[i-43])
        self.cmd(0x5b, 0)
        self.cmd(0x5c, 0x10)
        self.cmd(0x5d, 0x20)
        self.cmd(0x5e, 0x8f)
    
    def touched(self):
        self.cmd(0,0)
        lower = self.i2c.readfrom(ADDRESS, 2)
        return lower[0] + (lower[1]<<8)
                
    def set_thresholds(self, touch, release):
        for i in range(12):
            self.cmd(0x41 + 2*i, touch)
            self.cmd(0x42 + 2*i, release)

És itt a kód, amivel ki tudod próbálni:

from machine import Pin, I2C
from time import sleep
from mpr121 import MPR121

i2c=I2C(0,sda=Pin(16), scl=Pin(17))
cap = MPR121(i2c)

while True:
    a=cap.touched()
    if a:
        print('{:012b}'.format(a))
    sleep(0.02) 

Comments are closed.