lilik
02.Июль.2025 15:24:11
1
Сделал себе модуль. Не знаю зачем, но радужно.
Навесной монтаж заодно вспомнил, глаза уже не те, руки тоже.
Думаю новичкам хорошая тренировка в пайке, 3 Д печати и программировании.
Спойлер
/////////////////////////////////////
// примеры для ws2812b
//Arduino UNO
#include "Adafruit_NeoPixel.h"
#define kn 5 //вывод кнопки
#define line_ 26 //число пикселей в ленте
uint8_t dataPin = 6;// вывод для подключения
Adafruit_NeoPixel strip = Adafruit_NeoPixel(line_,dataPin , NEO_GRB + NEO_KHZ800);// Создаем переменную strip для управления нашей лентой.
byte M=40;//
byte cv[6];//
byte massiv_ws2812b_[6][4]={ {11,10,15,14},//массив-переходник
{9,8,17,16},
{7,6,19,18},
{5,4,21,20},
{3,2,23,22},
{1,0,25,24},
};//
///RGB
void setup() {
strip.begin();
}
void loop() {
knopki();
delay(20);
}
///////////////////////////////////////
void knopki(){// функция отработки нажатия кнопок
//
int val=analogRead(A0);//чтение кнопочной станции
int VAL=0;//
if(val<20){VAL=1;}
if(val>20&&val<110){VAL=2;}
if(val>300&&val<400){VAL=3;}
if(val>450&&val<550){VAL=4;}
if(val>650&&val<810){VAL=5;}
if(val>810&&val<900){VAL=6;}
//
if(VAL!=0){
cv[VAL-1]++;if(cv[VAL-1]>7){cv[VAL-1]=1;}
for ( int i = 0; i < 4; i++) {
strip.setPixelColor(massiv_ws2812b_[VAL-1][i], (cv[VAL-1]%2)*M, ((cv[VAL-1]/2)%2)*M, ((cv[VAL-1]/4)%2)*M);
}
strip.show();
delay(200);
}
}
///////////////////////////////////////
Из применений пока видится только:
Кодовый цветовой замок
Декодер цветовой маркировки резисторов
Игра - повтори цветовую комбинацию
3 лайка
Шестицветная радуга нонче не в почёте. И чёй-то резистор одной кнопке не доложили.
lilik
02.Июль.2025 15:44:04
3
Я вообще в радуге больше 5 не видел.
Резистор не поставил чтоб цеплять можно было и к цифровому выводу (три кнопки срабатывают как одна).
1 лайк
И в лягушке можно увидеть А схема и номиналы бы не помешали.
lilik
02.Июль.2025 16:16:21
5
Обдумать начертание нужно и добавлю.
А встроенные сенсорные кнопки ESP32 нет желания попробовать?
Осталось вместо 25-и светодиодов нестандартной ленты использовать 6шт обычных 50х50 с шагом 60шт на метр.
lilik
02.Июль.2025 17:02:51
9
Они громоздки для таких кнопок и конструкция будет совсем другая. У этой ленты все шансы стать стандартной
высота 5мм, шаг 1см (100 штук на метр), пайка контактов с одной стороны. В отличии от 2,7 мм надёжнее.
lilik
02.Июль.2025 17:04:47
10
Нет. Пробовал раньше. Они здорово работают сами по себе и не работают с лентой.
Раскройте сокральный смысл, почему в одном случае uint8_t, а в другом byte?
lilik
02.Июль.2025 17:29:48
12
Изначально писал как в справочнике форума, потом тут узнал, что есть uint8_t как более древний (так, не так?). В итоге беря фрагменты кода в том числе и от себя, ничего не меняю. Получается и так и эдак.
1 лайк
te238s
02.Июль.2025 17:33:17
13
uint8_t более православен, и в стандартных библиотеках Си именно этот вариант. К тому же он нагляден и однозначен на платформах любой архитектуры и разрядности(про всякие word и double word исписано мильон тем)
3 лайка
После лекции Петровича, выяснилось, что пины следует объявлять как
constexpr uint8_t pin = 13;
если я ничего не путаю.
Зачем - как раз понятно.
Непонятна конструкция кнопки.
Мембранная клава и светодиод
lilik
03.Июль.2025 03:05:19
17
Ещё как вариант светодиодная матрица и резистивный сенсорный экран сверху.
lilik
03.Июль.2025 04:42:30
18
Тогда эффект таракана не получится.
То есть ход кнопки обеспечивается исключительно за счет упругости тонкой пластины?
Тогда почему не сразу экран вместо светодиодной матрицы?
Сразу появляется возможность оперативного изменения не только цвета, но и надписи на “кнопке”.
lilik
03.Июль.2025 07:30:45
20
Матрица ярче, у экрана мало светодиодов подсветки. Ну и заманчиво управлять пикселем каждым, касанием прозрачной поверхности над ним. Но в целом таких проектов не видел. Видимо сенсорный экран по выводам плохо паяется
Где то, не помню где, товарищ на бумаге в клетку нарисовал карандашом кнопки, а сверху сенсор разместил.