Capacitive Touch Switch - czyli sensor dotykowy :)
Witajcie!
W dzisiejszym odcinku chciałbym zaprezentować takie nietypowe
"mrygadełko" diodą led. Mianowice chodzi mi tutaj o sensor
pojemnościowy. Z tego typu sensorami możemy się spotkać np:
w telefonach komórkowych gdzie zarządzanie aplikacjami odbywa
się za pomocą wybierania na ekranie funkcji.
W naszych zastosowania to raczej będzie się nadawało to jakiegoś
włącznika światła czy urządzenia zbudowanego na mikrokontrolerze.
Przedstawiony sposób jest o tyle fajny, że wykorzystujemy tylko
jeden pin portu na nasz TouchSwitch.
Ja na mojej płytce prototypowej podłączyłem kawałek typowej
łączówki do pinu PC7 Atmegi32 a na jej końcu umieściłem rezystor
560K, dla lepszej czułości. Tutaj proponuje samodzielnie dobrać
wartość rezystora i sprawdzić dla jakiej wartości czułość naszego
TouchSwitcha będzie odpowiednia. Ja akurat taki rezystor miałem
pod ręką.
Kod jest bardzo prosty i nie wymaga tłumaczenia. Wszystkie ważniejsze
kroki zostały opisane komentarzami:)
#include
#include
void touch_switch(void);
uint8_t key_lock;
int main(void)
{
DDRC |= (1 << PC0); // pin diody jako wyjcie
while(1)
{
touch_switch();
}
}
void touch_switch(void)
{
DDRC |= (1 << PC7); //pin PC7 jako wejcie
PORTC &=~(1 << PC7); // stan niski na pin PC7
_delay_ms(1);
DDRC &=~(1 << PC7); //pin PC7 jako wejcie
_delay_us(20);
if( !key_lock && (PINC & (1 << PC7) )) //tutaj sprawdzamy czy nasz sensor pojemnociowy jest dotknięty
{
key_lock=150; //ustawiamy stan zmiennej key_lock na wartoc początkową 150
PORTC ^= (1 << PC0); //zmiana stanu diody
} else if( key_lock && (PINC & 1 << PC7 )) key_lock++; //sprawdzamy czy sensor został puszczony
}
Film pokazujący nasz czujnik w akcji:)
Oczywiście aby mieć bardziej profesjonalny czujnik można takowy
zaprojektować sobie
np. w Eaglu oraz wytrawić płytkę.
Brak komentarzy:
Prześlij komentarz