Нужна помощь в управлени светодиодами в часах
- Войдите на сайт для отправки комментариев
Пт, 03/04/2020 - 11:55
Здравствуйте. Сделал часы семи-сегментные на светодиодах WS2812. Проект не мой а иностранного человека. Часы работают. Решил разделить цвета символов. Часы одним цветом, а вот соответственно минуты другим. Но понять как это сделать не понимаю. Подскажите пожалуйста. Заранее спасибо
Вот исходный код управления цветом:
void displaySegments(int startindex, int number) { byte numbers[ ] = { 0b00111111, // 0 0b00000110, // 1 0b01011011, // 2 0b01001111, // 3 0b01100110, // 4 0b01101101, // 5 0b01111101, // 6 0b00000111, // 7 0b01111111, // 8 0b01101111, // 9 0b01100011, // º 10 0b00111001, // C(elcius) 11 0b01011100, // º lower 12 0b00000000, // Empty 13 0b01110001, // F(ahrenheit) 14 }; for (int i = 0; i < 7; i++) { LEDs[i + startindex] = ((numbers[number] & 1 << i) == 1 << i) ? (colorMODE == 0 ? colorCRGB : colorCHSV) : colorOFF; } }
И где тут часы, а где минуты?
Если нужны минуты с часами я могу скинуть весь скетч на почту вам. Тут вроде как не вижу как приложить файл.
Но в самом скетче цвет привязывается к сегментам только в том фрагменте, который выложен выше
не надо почту - просто вставьте весь код точно так же, как вы вставили отрывок выше
Но для начала я бы советовал вам внимательно прочитать огромную тему про точно такие же часы буквально на пару сообщений ниже вашего в форуме:
http://arduino.ru/forum/programmirovanie/bolshie-nastennye-chasy-na-arduino
Значит пройдитесь двумя циклами раздельно по часам и по минутам. В каждом цикле будет присваивать свой цвет цифрам через LEDs[i]
Дак если я сделаю два одинаковых цикла, заменив только цвет в них. То так и будет. Что часы сначала одним цветом будут а по второму циклу будут все сегменты перекрашиваться в другой цвет
неправильно поняли. Первым циклом задайте цвет только первой и второй цифре, вторым - третьей и четвертой
Про указанные вами часы, я читал. Там скетч другой.
Выкладываю скетч у меня
Словами я понимаю. А как в цикле прописать цвет первой и второй. Ведь цикл
for (int i = 0; i < 7; i++)
учитывает только сегменты.
Киньте код если не сложно как это прописать
Заранее спасибо
вставьте код как код!! - так же, как вы вставляли в первом сообщении
Код выложил
это не код. читайте правила. вставьте его нормально.
без этого никакой помощи не будет.
Я не понимаю, на что Вы рассчитываете. Часы нужны Вам, а не мне. Какой смысл мне разбираться полдня в коде, который Вы даже не не пытаетесь понять, а потом еще и разжевывать что и где править.
Как так я не пытаюсь? Я пытаюсь и ваш вариант я делал. И увы он не дал результата
avr2012 - теперь другое дело, в коде есть номера строк и его можно обсуждать.
Вот, смотрите - в строчках 261-265 у вас выводятся на ленту каждая цифра и разделительные точки - отдельно. Добавьте в параметры процедуры displaySegments() цвет и вызывайте каждую цифру часов со своим цветом. Так вы сможете выводить разными цветами не только часы и минуты но и все четыре цифры сделать оазноцветными
Я спросил - где в этом массиве часы и где минуты? Какие значения переменной i соответствуют тем и другим?
В строках 261-265 выводится информация с приложения по блютузу
тогда 214 -219
Теперь я вас понял. В том то и дело что вроде как нет привязки i к часам и минутам. LEDs[i] учитывает только сегмент каждого элемента
Я согласен с B707 - нужно добавлять в процедуру displaySegments() параметр "цвет". Проблема только в том, что внутри этой процедуры используются два цветовых пространства. Т.е. цвет придётся передавать через union или использовать только одно пространство. За 5 сек это у Вас не получится.
Я согласен с B707 - нужно добавлять в процедуру параметр "цвет". Проблема только в том, что внутри этой процедуры используются два цветовых пространства. Т.е. цвет придётся передавать через union или использовать только одно пространство. За 5 сек это у Вас не получится.
для начала использовать только один ColorМode. а как заработает - думать дальше
Хорошо. Попробую
Посмотрите как тут реализовано управление цветом.
https://github.com/Lightwell-bg/LEDPixelClock
Посмотрите как тут реализовано управление цветом.
https://github.com/Lightwell-bg/LEDPixelClock
посмотрел. Никак не организовано.
Посмотрите как тут реализовано управление цветом.
https://github.com/Lightwell-bg/LEDPixelClock
посмотрел. Никак не организовано.
Вот же функция где цвет можно задать
Вот же функция где цвет можно задать
разве в ней есть возможность задавать разные цвета разным цифрам? - нет.
А ТС спрашивает именно это. А менять цвет подсветки и у него в коде можно....
Вот же функция где цвет можно задать
разве в ней есть возможность задавать разные цвета разным цифрам? - нет.
А ТС спрашивает именно это. А менять цвет подсветки и у него в коде можно....
Так добавить вместо LedColor LedColor[4] и менять на каждой цифре.