Урок №3 Датчик касания
В данном уроке мы научимся работать с простым ёмкостным датчиком, который позволяет отследить всего одно касание.
Датчик касания
Наверное уже никому в наше время не нужно объяснять, что такое тачпад? Этим удобным манипулятором снабжены все современные ноутбуки. Вместо джойстика или мышки, для перемещения курсора и кликов мы используем тачпад, или, по-научному, сенсорную панель.

Описание
Для решения этой задачи нам понадобится соединить вместе контроллер Ардуино Уно, светодиод, и, собственно, сам датчик касания. В качестве последнего будем использовать небольшую платку на базе сенсорного чипа TTP223.

Данный датчик является цифровым, а значит он выдает только одно из двух возможных значений: истина или ложь. В электронике это соответствует высокому и низкому уровню напряжения, соответственно.

Использованный нами в уроке ёмкостный датчик имеет три контакта:

  • § VCC — питание +5В;
  • § GND — земля;
  • § I\O — Input\Output – сигнал;
В этом уроке вам могут понадобиться услуги паяльника. Если ваш датчик касания не спаян с ножками, то возьмите 40-пиновую гребенку идущую в комплекте. Отломайте от нее 3 пина и спаяйте их с датчиком касания. Если он уже с ножками, то используйте провода мама-папа.



Что нам понадобится?
Достаньте и подготовьте необходимые детали из коробки.
Arduino Uno
Мозг нашей схемы
Популярный микроконтроллер, его мощности достаточно пока нам для начальных экспериментов
Светодиод
Любого цвета
Длинная ножка на положительно заряженный, короткая на отрицательно
Макетная плата
на 400 точек
Соединения идут параллельно, плата разделена на 2 части горизонтальной линией
Резистор
На 10 кОм
О резисторах подробно мы подробно поговорим чуть ниже в разделе "Базовые знания"
Схема подключения
Подключение
1. Соединяем 5V с линией плюса на плате. Таким образом вся линия будет иметь напряжение 5 Вольт.
2. Соединяем GND с линией минуса. Вся линия становится минусовой.
3. Подключаем светодиод и резистор, помним, что резистор идет к длинной ( анодной-плюсовой) ножке светодиода.
4. Соединяем катодную минусовую ножку светодиода с линией минус.
5. Пин №2 соединяем с ножкой резистора.
6. Подключаем датчик касания
  • GND к минусовой линии
  • VCC к линии питания
  • I\O к пину № 9.

Скетч
#define TouchSensor = 9 // определение датчика касания ttp223 на порт номер 9
 #define led = 2; // определяем порт куда подключен светодиод номер 2
void setup() {
  Serial.begin(9600); // открывает последовательный порт, устанавливает скорость 9600 бит
  pinMode(led, OUTPUT);  
  pinMode(TouchSensor, INPUT);
}
 
void loop() {
  if (TouchSensor == HIGH){ //Если касаемся датчика. Включаем светодиод
    Serial.println("touched");
    digitalWrite(led,HIGH); 
    delay(10);   
  } 
else
 { //Иначе выключаем
    Serial.println("not touched");
    digitalWrite(led,LOW); 
    delay(10);  }
 }
Программирование
В этой программе мы используем новую функцию Serial.begin(). Serial begin — крайне важная инструкция Arduino, она позволяет установить контроллеру соединение с внешними устройствами. Эта функция инициирует последовательное соединение и задает скорость передачи данных в бит/c. Для обмена данными с компьютером используйте следующие значения: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 или 115200. Самым распространенным значением является 9600 – именно такая скорость обмена данными в мониторе порта Arduino IDE стоит по умолчанию. Эта цифра означает, что плата ардуино будет посылать по последовательному порту данные со скоростью 9600 бит в секунду.

Serial.printIn() – команда используется для вывода данных на монитор порта. У нас в этом коде должно высвечиваться «not touched» если кнопка не нажата, и «touched» если кнопка нажата. Их вы можете посмотреть, нажав на значок лупы в правом верхнем углу.

Serial.printIn () очень умная Команда, которая может напечатать практически все, что вы ей дадите, в том числе переменные различных типов, а также ваш текст, например "strings", и пр. Serial.print() печатает текст на одной сроке, а вот Serial.println() в конце переносит курсор на следующую строку. Обычно эти команды используют вместе, чтобы иметь возможность получить удобно читаемый текст.

Байты выводятся в виде отдельных символов, а символы и строки выводятся без изменений - "как есть". Например:

  • Serial.print(78) - выведет "78"
  • Serial.print(1.23456) - выведет "1.23"
  • Serial.print('N') - выведет "N"
  • Serial.print("Hello world.") - выведет "Hello world."
Все значения, которые мы выводим с помощью команд Serial.print мы можем увидеть в Мониторе порта – это значок в лупы в правом верхнем углу, либо «Инструменты – Монитор порта», либо сочетание клавиш Ctrl+Shift+M

Вопросы и задания
1. Поменяйте команды if-else местами – чтобы при касании светодиод выключался, а если его никто не трогает, был включен
2. Какое применение в жизни вы можете придумать для датчика касания?
3. Поменяйте вывод текста на монитор порта на YES\NO