Реклама ⓘ
Главная » Arduino
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Makey Makey управление новогодней RGB-гирляндой

Кажется в 2012 году на kickstarter был более чем успешно запущен проект MaKey MaKey, который позволял  превратить в сенсорные кнопки любые предметы, которые хоть немного проводят электрический ток. Более того, плата подключалась к компьютеру и превращалась в USB-клавиатуру, С MaKey MaKey клавиатурой оказывались фрукты, цветы и прочие предметы.

Естественно через некоторое время предприимчивые китайцы наладили производство более дешевых аналогов, одним из которых была плата Makey Makey Touch USB shield - шилд к Arduino Uno. 

Использовать данный шилд можно в качестве USB-клавиатуры, либо для управления различными устройствами, я его решил использовать для управления RGB-лентой (в качестве гирлянды для новогодней елки). С помощью Makey Makey Touch USB shield мы будем определять прикосновения к новогодним "игрушкам" (кружки из фольгированной цветной бумаги разного цвета (красный, зеленый, синий, желтый, сиреневый, белый)) и зажигать RGB-ленту соответствующим цветом.

Электрическая схема (во Fritzing) имеет следующий вид

Элементы управления RGB-лентой (транзисторы TIP120 и резисторы) вынес на самодельный шилд

Вот примерно так

И скетч на Arduino. Нажатие на "игрушку" определенного цвета приводит к изменению цвета RGB-ленты на соответствующий. Чтобы лента постоянно горела будем запоминать последний цвет. При одновременном выборе нескольких цветов переключение цвета не происходит - введен фильтр, определяющий одновременное нажатие.

Вот Arduino код

// pins для RGB strip
int pinRed=6;
int pinGreen=7;
int pinBlue=5;
// переменные для хранения данных с touch
int InData0 = 0, InData1 = 0, InData2 = 0, InData3 = 0, InData4 = 0, InData5 = 0;  
int TouchSensitivity = 30; // 
int AllData=0;
int tekpos=0;
// массив значений rgb ленты для разных нажатий
int leds[8][3]={{0,0,0},
              {1,0,0},  // r
              {0,1,0},  // g
              {0,0,1},  // b
              {1,1,0},  // yellow
              {1,0,1},  // r+b
              {1,1,1},  // white
              {0,0,0}   // нажато несколько
             };
void setup()
{
  Serial.begin(9600);
  for(int i = A0; i <= A5; i++)
    {
      //pins touch Red, Green, Blue, Yellow, ,White
      pinMode(5, INPUT);      
    }
  
  // настройка пинов RGB strip
  pinMode(pinRed, OUTPUT);   
  pinMode(pinGreen, OUTPUT); 
  pinMode(pinBlue, OUTPUT); 
  tekpos=random(1,3);
  setRGB(tekpos);
  //TIMSK0 &= !(1 << TOIE0);
}
 
void loop()
{
  // получение данных с touch
  InData0 = 1024 - analogRead(A0);                
  InData1 = 1024 - analogRead(A1);
  InData2 = 1024 - analogRead(A2);
  InData3 = 1024 - analogRead(A3);
  InData4 = 1024 - analogRead(A4);
  InData5 = 1024 - analogRead(A5);
  // определение нажатой
  AllData=0;
  if(InData0 >= TouchSensitivity)
     AllData=AllData+5;
  if(InData1 >= TouchSensitivity)
     AllData=AllData+6;
  if(InData2 >= TouchSensitivity)
     AllData=AllData+7;
  if(InData3 >= TouchSensitivity)
     AllData=AllData+8;
  if(InData4 >= TouchSensitivity)
     AllData=AllData+9;
  if(InData5 >= TouchSensitivity)
     AllData=AllData+10;
  // 
  AllData=min(AllData,11); 
  AllData=max(AllData,4); 
  AllData=AllData-4;   
  Serial.print("AllData=");Serial.println(AllData);
  // включение ленты   
  if(AllData>0 && AllData<7) 
    {
    tekpos=AllData;
    setRGB(tekpos);
    }   

  delay(100);
}

// процедура включения ленты
void setRGB(int pos)
  {
  digitalWrite(pinRed,leds[pos][0]);
  digitalWrite(pinGreen,leds[pos][1]);
  digitalWrite(pinBlue,leds[pos][2]);
  }

И фото данного проекта

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Плата Arduino
Arduino Uno
1 Поиск в магазине ОтронВ блокнот
Makey Makey Touch shield1 Поиск в магазине ОтронВ блокнот
Биполярный транзистор
TIP120
3 Поиск в магазине ОтронВ блокнот
Резистор
1 кОм
3 Поиск в магазине ОтронВ блокнот
Светодиодная лентаRGB1 Поиск в магазине ОтронВ блокнот
Блок питанияDC 12В1 Поиск в магазине ОтронВ блокнот
КругФольгированная цветная бумага6 Поиск в магазине ОтронВ блокнот
Замимкрокодил14 Поиск в магазине ОтронВ блокнот
Провод7 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 Участие в конкурсе 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (2) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
Гость #
Смысл в такой заморочке? Подобный алгоритм можно реализовать допустим на 14-ти ногом МК + 3 кнопки,соответствующие 3 цветам,и вуаля 7 режимов в ключевом(с ШИМ ещё больше) режиме разного цвета свечения RGB ленты в наличии.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Raspberry Pi 2
Raspberry Pi 2
Модуль измерения тока на ACS712 (30А) Мультиметр DT9205A
вверх