Спортивное табло на WS2812B

Здравствуйте! Всем хорошего утра/дня/вечера/ночи.

Собрал табло на адресной светодиодной ленте WS2812B. Фото прилагаю.


Люблю собирать устройства, но в программировании пока что не силён, поэтому хотел спросить у знающих людей.

Хочу реализовать управление устройством через приложение на android смартфоне. Даже не нужен большой функионал, лишь бы можно было изменять каждую из цифр в отдельности и может если получится, то менять яркость и цвет символов.

Дорогие знатоки, подскажите, пожалуйста, какую библиотеку и как можно использовать. Каким образом я могу реализовать управление через приложение? На данный момент научился лишь включать несколько светодиодов по отдельности, задавая им цвет и разобрался в работе программы “радуга”. Не знаю куда идти дальше для реализации задуманного функционала.

Компоненты: 1)Arduino Nano, 2) WS2812B, 3) HC-05, 4) блок питания 5В 8А
Большие индикаторы размером 5х10, а маленькие 3х6 светодиодов.

Простенькая структурная схема:

Путь прохождения сигнала:

Вот такую программу использовал для создания свечения в стиле радуги:

#define NUM_LEDS 203
#include "FastLED.h"
#define PIN 12
CRGB leds[NUM_LEDS];
byte counter;
void setup() {
  FastLED.addLeds<WS2811, PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
  FastLED.setBrightness(50);
  pinMode(13, OUTPUT);
}
void loop() {
  for (int i = 0; i < NUM_LEDS; i++ ) {         // от 0 до первой трети
    leds[i] = CHSV(counter + i * 2, 255, 255);  // HSV. Увеличивать HUE (цвет)
    // умножение i уменьшает шаг радуги
  }
  counter++;        // counter меняется от 0 до 255 (тип данных byte)
  FastLED.show();
  delay(5);         // скорость движения радуги
}

Дальше учись программировать

2 лайка

Сначала программно выделить сегменты - семисегментники , выводить цифры, потом написать функцию типа tablo(8,8 ,8,8,8 ,8,8); потом мит апп инвентор2.

1 лайк

Вот поэтому и хочу узнать как именно это можно запрограммировать :slight_smile:

Спасибо большое за ответ! Я вот сразу и подумал, что нужно программно выделять сегменты.
То есть написать программу включения каждой цифры в отдельности и присвоить каждой функцию?
Как можно написать на каждую цифру без привязки начала к конкретному светодиоду? Ведь в коде всегда выбирается какой-то конкретный, который хочешь включить

Наоборот, с привязкой. И это уже больше школьная математика чем программирование. Для начала вычислите в общем виде номер “входного” светодиода энной цифры.

1 лайк

Как странно у тебя “учиться программировать” совпало с “дайте мне готовое для меня”. Ты наверно очень умный.

Хорошо, я отсчитаю с какого светодиода начинается каждый из индикаторов.
Существует ли какая-то команда для вызова функции, чтобы она выполнялась с конкретного светодиода?

Я реально не понимаю и хочу научиться программировать своё устройство. Где ты увидел “дайте мне готовое для меня”?

Буквально в каждом ответе ты требуешь готового для тебя.

У тебя шиза какая-то? Конкретно покажи где я просил ВЕСЬ готовый код?

Так не бывает.
Чтобы уметь программировать свое устройство, необходимо уметь программировать.

О, ты не просишь весь готовый код. Ты просишь весь учебник программирования, адаптированный под конкретно твое устройство. Это в 500 раз сложнее.

1 лайк

ТС вы сначала русским языком опишите как бы вы выводили цифру в определенное знакоместо, потом это надо перевести в понятный МК язык …

Я сюда пришёл получить совет, а не выслушивать твоё эго. За счёт новичков конечно легко самоутверждаться)

А как вы не разобравшись даже с отображением чисел - хотите сунуться во взаимодействие Android - Arduino ???

Все придется писать самостоятельно. Потому учитесь программировать.

Для начала сходите в эту тему

Дам на_водку:


Вроде правильно посчитал.
Для маленьких знакомест сами посчитайте …
Допустим надо зажечь сегмент A третьего большого знакоместа:
следовательно надо зажечь диоды 134+25, 134+26, 134+27, 134+28, 134+29 .

нет, писать отдельную функцию на каждый - типичная ошибка новичка. Надо писать одну общую функцию на все.

нужно задать как параметр - светодиод, с которого начинается цифра

почитай что-нибудь про функции в С, особенно про функции с параметрами

Нет. Всегда выводится весь буфер. Послать команду на конкретный светодиод не получится, хотя бы потому, что в ленте светодиоды не знают своих номеров