Mechanické dotykové spínače

Vepředu, po obou stranách podvozkové vany, má Kamil dva mechanické dotykové spínače ME-9101 s flexibilní pružinou. Fungují jednak jako koncové spínače po kontaktu zepředu, a dále při bočním kontaktu vpravo, vlevo, nahoru a dolů. V těle robota jsou zapojeny paralelně, jedním pólem trvale připojeny k zemi (GND), druhým pólem pak k pinu 0 na I/O expanderu PCF8574_4 (I2C adresa 0x24). Pokud je alespoň jeden ze spínačů aktivní, bude na vstupu do expanderu logická nula a k softwarovému ovládání tedy potřebujeme, aby v případě neaktivních spínačů byla na vstupu do expanderu logická jednička. To zajistíme připojením pull-up rezistoru k pinu expanderu. Jako u všech tlačítek ještě musíme ošetřit napěťové zákmity při aktivaci spínače. To lze s úspěchem udělat v ovládacím programu, kdy po zjištění prvního sepnutí počkáme cca 0.2 sekundy, než budeme v programu pokračovat. 
 

Vlastnosti:
Konfigurace kontaktů: 1x NC (rozpínací, 2 svorky) + 1x NO (spínací, 2 svorky)
Zatížení: 5A 250V AC, 0.4A 115V DC
Rozměry: 64 × 28 × 26 mm

K obsluze dotykových spínaču používá Kamil následující kód: 

from pcf8574 import PCF8574    # I/O I2C expandery
import time

dotykac = 0             # dotykový spínač je připojen na pin 0 expanderu 
pcf8574_4 = 0x24   # adresa PCF8574 na sběrnici I2C
sbernice = 1            # číslo sběrnice I2C
pcf_0x24 = PCF8574(sbernice, pcf8574_4)
time.sleep(0.2)
print(pcf_0x24)
xkrat = 0

while True:
    if pcf_0x24.port[dotykac] == 0:     # byl stisknu dotykový spínač
        time.sleep(0.2)       # počkáme, až odezní případné zákmity
        print("Dotykový spínač je aktivní")
        time.sleep(1)
        xkrat += 1
        
        if xkrat == 5:     # po 5 sepnutích konec
            break
    else:
        time.sleep(0.02)