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)