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

Реклама ⓘ

Установка цвета RGB светодиодной ленты с помощью клавиатуры Capacitive Touch Disk Pad

Клавиатура Capacitive Touch Disk Pad производства Robotdyn (https://robotdyn.com/capacitive-touch-disk-pad.html) представляет из себя 15 сенсорных кнопок. Эта компактная недорогая клавиатура может подключаться к любому емкостному модулю. Является полнофункциональной сенсорной клавиатурой, которая может быть легко встраивается в профессиональную систему управления или в приложение микроконтроллера. Сенсорные панели имеют номера от 1 до 15. Кнопки могут маркироваться с помощью фломастера. В комплекте: плата и перемычка и провода FF длиной 150 мм.

Подключение к ESP8266

Рассмотрим подключение клавиатуры к плате WI-FI NodeM на модуле ESP8266. Для подключения будем использовать 16-клавишный емкостный сенсорный модуль 16 Keys Capacitive touch TTP229 I2C module (https://robotdyn.com/16-keys-capacitive-touch-ttp229-i2c-module.html), который подключается к микроконтроллеру по шине I2C.

Подключение согласно схема соединений:

Скетч определения нажатой клавиши на клавиатуре на C в Arduino IDE

Напишем скетч для определения нажатых клавиш на сенсорной клавиатуре и вывода в последовательный порт. Используется библиотека Wire. I2C-адрес модуля TTP229 - 0x57. Получение данных по I2C:

void getTTP229data(byte *a, byte *b) {

 // запрос 2 bytes из TTP229

 Wire.requestFrom(TTP229_LSF, 2);   int dataN = 0;

 while(Wire.available())   {

   // получение побайтно

   char c = Wire.read();   if (dataN == 0) *a = c;

   if (dataN == 1) *b = c;   dataN++;

 }

}

Далее эти байты выводим в двоичном виде в монитор последовательного порта

Скачать архив со скетчем  

Загружаем скетч на плату Node MCU ESP8266, открываем монитор последовательного порта и смотрим вывод состояния клавиатуры по кнопкам 1-15 (1 – нажата, 0 - отжата):

 

Скрипт определения нажатой клавиши на клавиатуре на python

Arduino IDE не единственный способ программирования ESP8266. Еще один из вариантов - micropython. Это реализация Python 3, написанная на C, которая оптимизирована для микроконтроллеров. 

Документация по началу работы с micropython для ESP8266 - https://docs.micropython.org/en/latest/esp8266/tutorial/intro.html

Напишем скрипт для определения нажатых клавиш на сенсорной клавиатуре и вывода в терминал.

Используются библиотеки I2C,Pin, time

from machine import I2C,Pin

import time

 

Получение данных по I2C:

   data = i2c.readfrom(0x57,2)
   word=data[0]<<8 | data[1]

 

Функция для вывода списка нажатых клавиш

// вывод списка нажатых клавиш

def getkeys(data):

  arr=[0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]

  str1="click "

  mask=0x0001

  for i in range(1,16):

   if (mask<<i) & data > 0:

   str1=str1+str(arr[i])+" "

  print(str1)

 

Скачать архив со скриптом python  

Загружаем скрипт на плату Node MCU ESP8266, открываем терминал последовательного порта и смотрим вывод нажатых клавиш:

 

Написание программы установки цвета RGB светодиодной ленты с помощью клавиатуры Capacitive Touch Disk Pad.

В качестве примера использования создадим проект установки цвета RGB светодиодной ленты с помощью клавиатуры Capacitive Touch Disk Pad.

Будем использовать следующие компоненты:

  1. WIFI NodeMCU ESP8266  – 1;
  2. Клавиатура Capacitive Touch Disk Pad – 1;
  3. 16 Keys Capacitive touch TTP229 I2C module – 1;
  4. RGB-лента – 1;
  5. Транзистор TIP122 – 3;
  6. Резистор 1 кОм – 3;
  7. Блок питания 12В 2A – 1;
  8. Провода.

 

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

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

 

 

 

 

Назначение кнопок клавиатуры Capacitive Touch Disk Pad.

Определим назначение клавиш клавиатуры.

Клавиша

Цвет

Яркость

Клавиша

Цвет

Яркость

2

красный

полная

9

красный

половинная

3

желтый

полная

10

желтый

половинная

4

зеленый

полная

11

зеленый

половинная

5

голубой

полная

12

голубой

половинная

6

синий

полная

13

синий

половинная

7

пурпурный

полная

8

пурпурный

половинная

14

белый

тусклый

15

белый

яркий

1

нет

потушено

 

 

 

 

Написание скетча на C в Arduino IDE

Приступим к написанию скетча. По I2C получаем два байта из модуля TTP229 - 0x57. Определяем номер нажатой клавиши и из массива colors[][3]

// цвета для led rgb
int colors[][3]={{0,0,0},{0,0,0},
   {100,0,0},{100,100,0},{0,100,0},
   {0,100,100},{0,0,100},{100,0,100},
   {255,0,255},{255,0,0},{255,255,0},
   {0,255,0},{0,255,255},{0,0,255},
   {60,60,60},{150,150,150}};

получаем значения для r, g, b для данной клавиши и отправляем их на шим-выводы Arduino

   analogWrite(pwmRED,colors[k][0]);

   analogWrite(pwmGREEN,colors[k][1]);

   analogWrite(pwmBLUE,colors[k][2]);

 

Загружаем скетч на плату Node MCU ESP8266 и проверяем работу программы

Скачать архив со скетчем  

Написание скрипта на python

 

При написании скрипта на python используем библиотеки 2C,Pin,PWM, time.

from machine import I2C,Pin,PWM

import time

Создание объектов PWM

pwmRED=PWM(Pin(4))

pwmGREEN=PWM(Pin(14))

pwmBLUE=PWM(Pin(5))

По I2C получаем два байта из модуля TTP229 - 0x57. Определяем номер нажатой клавиши и из массива colors[][3]

// цвета для led rgb
colors=[[0,0,0],[0,0,0],

   [512,0,0],[512,512,0],[0,512,0],

   [0,512,512],[0,0,512],[512,0,512],

   [1023,0,1023],[1023,0,0],[1023,1023,0],

   [0,1023,0],[0,1023,1023],[0,0,1023],

   [200,200,200],[500,500,500]]

получаем значения для r, g, b для данной клавиши и отправляем их на шим-выводы Arduino

pwmRED.duty(colors[key][0])

   pwmGREEN.duty(colors[key][1])

   pwmBLUE.duty(colors[key][2])

 

Загружаем скрипт на плату и проверяем работу программы.

Скачать архив со скриптом python 

 

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

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
МикроконтроллерNodeM ESP82661 Поиск в магазине ОтронВ блокнот
Сенсорная КлавиатураCapacitive Touch Disk Pad1 Поиск в магазине ОтронВ блокнот
Модуль16 Keys Capacitive touch TTP229 I2C module1 Поиск в магазине ОтронВ блокнот
Светодиодная лентаRGB1 Поиск в магазине ОтронВ блокнот
Биполярный транзистор
TIP122
3 Поиск в магазине ОтронВ блокнот
Резистор
1 кОм
3 Поиск в магазине ОтронВ блокнот
Блок питания12В 2А1 Поиск в магазине ОтронВ блокнот
Добавить все

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

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

Теги:

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

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

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

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

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

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Модуль измерения тока на ACS712 (30А)
Модуль измерения тока на ACS712 (30А)
Arduino UNO Ручной фен 450 Вт с регулировкой температуры
вверх