Виноградный мультитач

в 0:23, , рубрики: arduino, DIY, diy или сделай сам, метки: ,

Наткнулся на интересную штуку под названием MaKey MaKey.

http://makeymakey.com/

Вот за что уважаю американцев — так это за талант красиво преподнести и довести до промышленного производства всякую простейшую штуку.

Посмотрел видео, порадовался за ребят. Но где-то сразу зудеть начало. Полез за резюками. Через 15 минут (из которых пять минут ушло на перекур) получился вот такой девайс:

Реализация проста до неприличия. Нужны лишь резисторы номиналом 1-50 Мом (по одному на каждый контакт). Я использовал резюки на 1 Мом.

В скетче использовал библиотеку CapSense, которая, собссно, всю работу и делает.

Схема подключения:

Виноградный мультитач

На базе сэмпла набросал простейший скетч

#include <CapSense.h>

#define SND_PIN 12 // пин, к которому подключён спикер

CapSense  key1 = CapSense(7, 5); // клавиша 1 между 7-м и 5-м пинами
CapSense  key2 = CapSense(7, 4); // клавиша 2 между 7-м и 3-м пинами
CapSense  key3 = CapSense(7, 3); // клавиша 3 между 7-м и 3-м пинами

int range = 200; // пороговое значение, определяющее нажатие, подбирается экспериментально
byte button; // побитовое обозначение нажатых клавиш
int freq; // частота звука для воспроизведения на спикер

void setup()          
{
 // выключает автокалибровку на 1-й клавише.
 // Пока фиг знает зачем, советуют в примерах либы
 key1.set_CS_AutocaL_Millis(0xFFFFFFFF);
}

void loop()          
{
  long total1 = key1.capSense(30);
  long total2 = key2.capSense(30);
  long total3 = key3.capSense(30);

  button = 0;
  if (total1 > range) button |= 1;
  if (total2 > range) button |= 2;
  if (total3 > range) button |= 4;
  
  switch (button) {
   case 1: freq = 200; break;
   case 2: freq = 300; break;
   case 3: freq = 400; break;
   case 4: freq = 500; break;
   case 5: freq = 600; break;
   case 6: freq = 700; break;
   case 7: freq = 800; break;
   case 8: freq = 900; break;
   default: freq = 0;
  }
  
  freq? tone(SND_PIN, freq) : noTone(SND_PIN); // воспроизводим или останавливаем звук
}

* This source code was highlighted with Source Code Highlighter.

Если прошить нечто типа такого — ардуина с клавишами-виноградинами будет в роли HID-клавиатуры (ещё не пробовал). Но для этого не всякая Ардуинка подойдёт, нужна с чипом atmega8u2 в качестве USB контролера (новая Arduino UNO как раз с ним). Жаль, под рукой нет ничего подходящего, а хотелось поиграть в бамбермена-онлайн с виноградной клавиатуры :-) Можно, конечно, набросать софтинку которая будет через COM-порт читать с ардуины сигнали о нажатиях и транслировать их в события клавиатуры, но это уже не то (через HID всё-таки интереснее).

UPD> Получил работающий девайс, зудеть перестало, расслабился. Почитал про МакиМаки поподробнее — оказывается, там как раз на ардуине и сделано :-)

UPD> Просто пищать спикером неинтересно, надо бы для дочи развлекуху сделать :-) Может быть следующий топик как раз об этом и будет, если получится что-нибудь интересное.

Автор: Gol


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js