Главная » Arduino
Призовой фонд
на май 2017 г.
1. Тестер компонентов MG328
Паяльник
2. Осциллограф DSO138
Паяльник
3. Регулируемый паяльник 60 Вт
Паяльник
4. 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 Поиск в FivelВ блокнот
Makey Makey Touch shield1 Поиск в FivelВ блокнот
Биполярный транзистор
TIP120
3 Поиск в FivelВ блокнот
Резистор
1 кОм
3 Поиск в FivelВ блокнот
Светодиодная лентаRGB1 Поиск в FivelВ блокнот
Блок питанияDC 12В1 Поиск в FivelВ блокнот
КругФольгированная цветная бумага6 Поиск в FivelВ блокнот
Замимкрокодил14 Поиск в FivelВ блокнот
Провод7 Поиск в FivelВ блокнот
Добавить все

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

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

Теги:

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

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

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

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

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

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

Arduino UNO
Arduino UNO
Печатная плата для усилителя "LM3886 + AD825" USB осциллограф DSO-2090
вверх