LinkedIn YouTube Facebook
Szukaj

Wstecz
SoM / SBC

[PRZYKŁAD] Pojemnościowe przyciski dotykowe z modułem Gravity: Conductivity Sensor Switch DFRobot oraz Arduino

W artykule przedstawiono przykładowe wykorzystanie czujników dotyku firmy DFRobot – Gravity: Conductivity Sensor Switch. Moduł ten pozwala na zmontowanie pojemnościowych przycisków dotykowych poprzez podłączenie do terminali (np. za pomocą przewodów z zakończeniami typu „krokodylek”) elementów metalowych, ciała człowieka, owoców lub roślin. Pozwala to na stworzenie takich projektów jak owocowe pianino czy kontroler do gier, w których role przycisków będą tworzyć np. banany.

W artykule zostały wykorzystane następujące elementy:

Rys. 1. Moduł czujnika dotyku Gravity: Conductivity Sensor Switch firmy DFRobot

Do stworzenia pojemnościowych przycisków z owoców lub innych przedmiotów służą moduły Gravity: Conductivity Sensor Switch firmy DFRobot. Moduł jest wyposażony w dwa pola do których należy podłączyć przewodami przedmiot pełniące rolę przycisków. Gdy moduł wykryje zmianę pojemności między padami, na wyjściu czujnika pojawi się stan wysoki. Płytka posiada złącze zgodne z standardem Gravity (wyjście cyfrowe).

W zestawie, oprócz modułu, znajdują się również dwa przewody z zakończeniami typu „krokodylek” o długości 45 cm oraz przewód 3-żyłowy zgodny z standardem Gravity. Przewody krokodylkowe pozwalają one na połączenie modułu z przedmiotami, które będą pełnić funkcję przycisków pojemnościowych.

Rys 2. Przewody z zakończeniami typu „krokodylek”, znajdujące się w zestawie z modułem

Do podłączenia modułów Gravity do płytki KAmduino UNO wykorzystano nakładkę rozszerzającą DFRobot Gravity IO Expansion Shield v7.1.

Rysunek 3. DFRobot Gravity IO Expansion Shield v7.1 do Arduino

Płytka ta pozwala na łatwe podłączenie modułów z serii Gravity do płytek Arduino, ponadto posiada złącza do modułu łączności Xbee, oraz do podłączenia zewnętrznego źródła zasilania. Moduły Gravity: Conductivity Sensor Switch posiadają wyjścia cyfrowe, dlatego należy podłączyć je do złącz z wejściami/wyjściami cyfrowymi, oznaczonymi literą D na płytce (zdjęcie 4).

Rys 4. Złącza do podłączenia modułów z wejściem/wyjściem cyfrowym

Należy pamiętać, że ważne jest w którym miejscu podłączymy czujniki, gdyż do tych pinów będziemy musieli odnosić się w programie. Ja podłączyłem czujniki do pinów 2 oraz 4 (rysunek 5).

Rys 5. Moduły Gravity: Conductivity Sensor Switch podłączone do nakładki Gravity IO Expansion Shield

Następnie należy podłączyć diodę oraz buzzer przez rozszerzenie DFRobot Gravity IO Expansion Shield do płytki KAmduino UNO. Trzeba to zrobić jak na schemacie poniżej:

Rys 6. Schemat podłączenia diody LED oraz buzzera do płytki KAmduino UNO

Układ z podłączoną diodą oraz buzzerem prezentuje się następująco:

Rys 7. Dioda oraz buzzer podłączone do płytki KAmduino UNo przy wykorzystaniu DFRobot Gravity IO Expansion Shield v7.1

Gotowy do zaprogramowania układ prezentuje się następująco;

Rys 8. Zmontowany układ gotowy do programowania

Ostatnim krokiem jest podłączenie naszych owoców do modułów – w moim przypadku są to banany). Należy zrobić to jak na rysunku poniżej:

Rys 9. Sposób podłączenia elementu, który będzie pełnił role przycisku dotykowego do modułu Gravity: Conductivity Sensor Switch firmy DFRobot

Należy zwrócić uwagę na kolejność przewodów. Przewód żółty ma być podłączony do przedmiotu, który pełnił funkcję przycisku dotykowego (w tym przypadku banan), drugi przewód – biały – powinien się łączyć z elementem, który ma dotykać przycisku – w tym przypadku z ciałem człowieka. Prawidłowe podłączenie zostało przedstawione na rysunku 9.

Gdy mamy gotowy układ możemy przejść do programowania płytki Arduino. Mój program jest bardzo prosty. Kod musi odczytać stan z dwóch modułów pojemnościowych przycisków dotykowych. Jeżeli na pierwszym z nich pojawi się stan wysoki zostanie zapalona czerwona dioda LED. Jeżeli drugi moduł przycisku dotykowego wygeneruje stan wysoki na swoim wyjściu, zostanie uruchomiony buzzer. Pełen kod programu znajduje się w sekcji do pobrania na dole artykułu.

Na początku deklarujemy role poszczególnych pinów: piny 2 i 4 muszą być ustawione jako wejścia, gdyż do nich podłączone są moduły przycisków pojemnościowych. Natomiast piny 9 i 11 muszą być ustawione jako wyjścia – do nich podłączona jest dioda LED oraz buzzer.

void setup() {

  pinMode(2, INPUT);
  pinMode(4, INPUT);

  pinMode(9, OUTPUT);
  pinMode(11, OUTPUT);
 
}

W pętli głównej programu sprawdzany jest na stan na pinie 2. Jeśli na tym pinie został wykryty stan wysoki zostanie uruchomiony buzzer (na pin 9 zostanie podany stan wysoki), w przeciwnym wypadku na pinie 9 będzie utrzymywany stan niski. Analogicznie, jeżeli na pinie 4 został wykryty stan wysoki zostanie zapalona dioda LED (na pin 11 zostanie podany stan wysoki), w przeciwnym wypadku na pinie 11 utrzymywany będzie stan niski.

void loop() 
{
  
  if (digitalRead(2) == 1)
  {
    digitalWrite(9, HIGH);
  }
  else
  {
    digitalWrite(9, LOW);
    
  }

  if (digitalRead(4)== 1)
  {
    digitalWrite(11, HIGH);
  }
  else 
  {
    digitalWrite(11,LOW);
  }
  
}

 

Autor: Patryk Mądry