Touch

Example of how to use the Touch class of the Machine module:

from machine import Touch
from machine import Timer
import time


class TouchPad:

    def __init__(self, pin, name):
        self.touch = Touch(pin)
        self.last_press = 0
        self.name = name
        self.pressed = False

    def ispressed(self):
        if self.touch.read() < (self.touch.init_value() * 2 / 3):
            self.pressed = True
        else:
            self.pressed = False
        return self.pressed

    def just_pressed(self):
        now = time.ticks_ms()
        if now - self.last_press < 500:
            return True
        else:
            return False

    def set_press(self):
        self.last_press = time.ticks_ms()


class TouchController:

    def __init__(self, pads):
        self.pads = pads
        for pad in self.pads:
            pad.touch.init_value(1500)

    def check(self, alarm):
        for pad in self.pads:
            if pad.ispressed() and not pad.just_pressed():
                pad.set_press()
                if pad.name == 'Right':
                    if tleft.just_pressed():
                        print('Swipe right')
                    else:
                        print('{} pressed'.format(pad.name))
                elif pad.name == 'Left':
                    if tright.just_pressed():
                        print('Swipe left')
                    else:
                        print('{} pressed'.format(pad.name))
                elif pad.name == 'Up':
                    if tbott.just_pressed():
                        print('Swipe up')
                    else:
                        print('{} pressed'.format(pad.name))
                elif pad.name == 'Bottom':
                    if tupp.just_pressed():
                        print('Swipe down')
                    else:
                        print('{} pressed'.format(pad.name))


tleft = TouchPad('P4', 'Left')
tright = TouchPad('P8', 'Right')
tbott = TouchPad('P9', 'Bottom')
tupp = TouchPad('P23', 'Up')

# initialize the touch controller
touch_controller = TouchController(pads=[tleft, tright, tbott, tupp])

# enable the alarm to check the status
Timer.Alarm(touch_controller.check, ms=10, periodic=True)