Помогите понять принцип работы каждого диода на ленте
- Войдите на сайт для отправки комментариев
Чт, 21/03/2019 - 02:44
Дана лента 40 диодов
Цель - при подачи питания на разные пины (ардуины) - на ленте загорается определенный диод определенным цветом.
код без действия, все просто горит ничего не происход , вообщем все как надо - при подаче на пин 8 = лента включается. каждому диоду свой цвет.
#include <Adafruit_NeoPixel.h> // подключаем библиотеку // how many diods on strip const int lentusa = 40; const int alllightsout = 7; Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(lentusa,alllightsout, NEO_GRB + NEO_KHZ800); // output 7 void setup() { } void loop() { if (digitalRead(8) == HIGH) { digitalWrite(alllightsout, HIGH); / strip3.setPixelColor(0, 0, 0, 0); strip3.setPixelColor(1, 0, 0, 0); strip3.setPixelColor(2, 255, 140, 0); // strip3.setPixelColor(3, 0, 0, 0); strip3.setPixelColor(4, 0, 0, 0); strip3.setPixelColor(5, 255, 140, 0); // strip3.setPixelColor(6, 255, 0, 0); strip3.setPixelColor(7, 255, 0, 0); // strip3.setPixelColor(8, 255, 0, 0); strip3.setPixelColor(9, 255, 0, 0); strip3.setPixelColor(10, 255, 0, 0); // strip3.setPixelColor(11, 255, 0, 0); strip3.setPixelColor(12, 255, 0, 0); strip3.setPixelColor(13, 255, 0, 0); // середина салона strip3.setPixelColor(14, 255, 0, 0); strip3.setPixelColor(15, 255, 0, 0); strip3.setPixelColor(16, 255, 0, 0); // strip3.setPixelColor(17, 255, 0, 0); strip3.setPixelColor(18, 255, 0, 0); strip3.setPixelColor(19, 255, 0, 0); // strip3.setPixelColor(20, 255, 0, 0); strip3.setPixelColor(21, 255, 0, 0); strip3.setPixelColor(22, 255, 0, 0); // strip3.setPixelColor(23, 255, 0, 0); strip3.setPixelColor(24, 255, 0, 0); strip3.setPixelColor(25, 255, 0, 0); // strip3.setPixelColor(26, 0, 0, 0); strip3.setPixelColor(27, 0, 0, 0); strip3.setPixelColor(28, 255, 140, 0); // strip3.setPixelColor(29, 0, 0, 0); strip3.setPixelColor(30, 0, 0, 0); strip3.setPixelColor(31, 255, 140, 0); // strip3.setPixelColor(32, 255, 0, 0); strip3.setPixelColor(33, 255, 0, 0); strip3.setPixelColor(34, 255, 0, 0); strip3.setPixelColor(35, 255, 0, 0); // strip3.setPixelColor(36, 255, 0, 0); strip3.setPixelColor(37, 255, 0, 0); strip3.setPixelColor(38, 255, 0, 0); strip3.setPixelColor(39, 255, 0, 0); strip3.begin(); strip3.show(); } if ( digitalRead(8) == LOW) { for (int i = 0; i < lentusa + 1; i++) { strip3.setPixelColor(i, strip3.Color(0, 0, 0)); strip3.begin(); strip3.show(); } } }
8 пин - полностью включает ленту,если на него нет ХАЙ , то она не должна гореть вообще..
Вопрос. Как дописать правильно, что бы например при подаче на ПИН 6 - определенныедиоды загорались другими цветами ? не работает так:
#include <Adafruit_NeoPixel.h> // подключаем библиотеку // how many diods on strip const int lentusa = 40; const int alllightsout = 7; Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(lentusa,alllightsout, NEO_GRB + NEO_KHZ800); // output 7 void setup() { } void loop() { if (digitalRead(8) == HIGH) { digitalWrite(alllightsout, HIGH); / strip3.setPixelColor(0, 0, 0, 0); strip3.setPixelColor(1, 0, 0, 0); strip3.setPixelColor(2, 255, 140, 0); // strip3.setPixelColor(3, 0, 0, 0); strip3.setPixelColor(4, 0, 0, 0); strip3.setPixelColor(5, 255, 140, 0); // strip3.setPixelColor(6, 255, 0, 0); strip3.setPixelColor(7, 255, 0, 0); // strip3.setPixelColor(8, 255, 0, 0); strip3.setPixelColor(9, 255, 0, 0); strip3.setPixelColor(10, 255, 0, 0); // strip3.setPixelColor(11, 255, 0, 0); strip3.setPixelColor(12, 255, 0, 0); strip3.setPixelColor(13, 255, 0, 0); // середина салона strip3.setPixelColor(14, 255, 0, 0); strip3.setPixelColor(15, 255, 0, 0); strip3.setPixelColor(16, 255, 0, 0); // strip3.setPixelColor(17, 255, 0, 0); strip3.setPixelColor(18, 255, 0, 0); strip3.setPixelColor(19, 255, 0, 0); // strip3.setPixelColor(20, 255, 0, 0); strip3.setPixelColor(21, 255, 0, 0); strip3.setPixelColor(22, 255, 0, 0); // strip3.setPixelColor(23, 255, 0, 0); strip3.setPixelColor(24, 255, 0, 0); strip3.setPixelColor(25, 255, 0, 0); // strip3.setPixelColor(26, 0, 0, 0); strip3.setPixelColor(27, 0, 0, 0); strip3.setPixelColor(28, 255, 140, 0); // strip3.setPixelColor(29, 0, 0, 0); strip3.setPixelColor(30, 0, 0, 0); strip3.setPixelColor(31, 255, 140, 0); // strip3.setPixelColor(32, 255, 0, 0); strip3.setPixelColor(33, 255, 0, 0); strip3.setPixelColor(34, 255, 0, 0); strip3.setPixelColor(35, 255, 0, 0); // strip3.setPixelColor(36, 255, 0, 0); strip3.setPixelColor(37, 255, 0, 0); strip3.setPixelColor(38, 255, 0, 0); strip3.setPixelColor(39, 255, 0, 0); strip3.begin(); strip3.show(); } iif (digitalRead(6) == HIGH and digitalRead(8) == HIGH) { digitalWrite(alllightsout, HIGH); // strip3.setPixelColor(0, 0, 0, 0); strip3.setPixelColor(1, 0, 0, 0); strip3.setPixelColor(2, 255, 215, 0); // strip3.setPixelColor(3, 0, 0, 0); strip3.setPixelColor(4, 0, 0, 0); strip3.setPixelColor(5, 255, 215, 0); // strip3.setPixelColor(6, 255, 0, 0); strip3.setPixelColor(7, 255, 0, 0); // strip3.setPixelColor(8, 255, 0, 0); strip3.setPixelColor(9, 255, 0, 0); strip3.setPixelColor(10, 255, 0, 0); // strip3.setPixelColor(11, 255, 0, 0); strip3.setPixelColor(12, 255, 0, 0); strip3.setPixelColor(13, 255, 0, 0); // strip3.setPixelColor(14, 255, 0, 0); strip3.setPixelColor(15, 255, 0, 0); strip3.setPixelColor(16, 255, 0, 0); // strip3.setPixelColor(17, 255, 0, 0); strip3.setPixelColor(18, 255, 0, 0); strip3.setPixelColor(19, 255, 0, 0); // strip3.setPixelColor(20, 255, 215, 0); strip3.setPixelColor(21, 255, 215, 0); strip3.setPixelColor(22, 255, 215, 0); // strip3.setPixelColor(23, 255, 0, 0); strip3.setPixelColor(24, 255, 0, 0); strip3.setPixelColor(25, 255, 0, 0); // strip3.setPixelColor(26, 0, 0, 0); strip3.setPixelColor(27, 0, 0, 0); strip3.setPixelColor(28, 255, 140, 0); // strip3.setPixelColor(29, 0, 0, 0); strip3.setPixelColor(30, 0, 0, 0); strip3.setPixelColor(31, 255, 140, 0); // strip3.setPixelColor(32, 255, 215, 0); strip3.setPixelColor(33, 255, 215, 0); strip3.setPixelColor(34, 255, 0, 0); strip3.setPixelColor(35, 255, 0, 0); // strip3.setPixelColor(36, 255, 0, 0); strip3.setPixelColor(37, 255, 0, 0); strip3.setPixelColor(38, 255, 0, 0); strip3.setPixelColor(39, 255, 0, 0); strip3.begin(); strip3.show(); } if ( digitalRead(8) == LOW) { for (int i = 0; i < lentusa + 1; i++) { strip3.setPixelColor(i, strip3.Color(0, 0, 0)); strip3.begin(); strip3.show(); } } }
Где может быть ошибка ? программа простая, но у меня не выходит делать так,что бы определенные диоды меняли цвета при подачи питания на определенные пины ардуино
а что не работает?
для начала setup как минимум должен выглядеть так
а что не работает?
Ардуина выдает разные цвета , словно не понимает что от нее хотят..
А код по структуре правильный получается ?
что бы добавить другие пины , так же дописывать ?
например дам я сигнал на 5 пин, пропишу 6-ому пину лоу , и цвета определённые каждому диоду как мне нужно , когда идет питание на пин 5. - будет ли работать в такой же структуре корректно ? А если одновременно на 6 так же приходит ? нужно прлписать пин 6 хай пин 5 хай пин 8 хай и так же каждому диоду цвет.
и обязательно ли прописывать все сценарии? присваивать пинам значение лоу ? мол , если там нет - а там есть - гори так.. а если и там и там есть - гори таким цветом .
Будет так тоже работать корректно ?
для начала setup как минимум должен выглядеть так
Спасибо, а брайгнесс обязательно?
думаю нет, но какая яркость по умолчанию не знаю.
дальше просто зажгите всю ленту белым, заодно проверите все диоды и свой блок питания :)
горит ?
горит ?
Горит все)
ок
теперь по цветам
цвета могу попутать местами, там у разных лент по разному.
ну а теперь можно и условий напихать... тока у меня уже глаза слипаются
Где может быть ошибка ?
Функция strip3.begin() должна выполняться один раз в setup().
Уважаемый, зажгите 1 светодиод в нужном Вам цвете. Уверяю - остальное будет очень просто. 40 - это много.
"Путь в тысячу ли начинается с первого шага"
Уважаемый, зажгите 1 светодиод в нужном Вам цвете. Уверяю - остальное будет очень просто. 40 - это много.
"Путь в тысячу ли начинается с первого шага"
нужно каждому свои цвета
Вот когда научитесь зажигать любой из них, нужным вам цветом, тогда можно переходить к дальнейшему, приделывать ифы и прочие свистелки. Пока вы пытаетесь шаманить и являться верным последователем карго-культа. За двое прошедших суток, могли реально научиться ею управлять, уже просто методом тыка. ИМХО.
Вот когда научитесь зажигать любой из них, нужным вам цветом, тогда можно переходить к дальнейшему, приделывать ифы и прочие свистелки. Пока вы пытаетесь шаманить и являться верным последователем карго-культа. За двое прошедших суток, могли реально научиться ею управлять, уже просто методом тыка. ИМХО.
Любой из них горит нужным мне цветом , все это пройдено , теперь мне просто нужно подключить условия - вот я и спросил как это реализовать
Извините, а нафига Вы strip3.begin() и strip3.show() в цикл пихаете?
Любой из них горит нужным мне цветом , все это пройдено , теперь мне просто нужно подключить условия - вот я и спросил как это реализовать
Ну если вы ее полностью приручили, тогда дело за малым:
if (digitalRead(нужный пин) == HIGH или LOW, как вам надо) {
включить ленту c заданными параметрами
}
чего еще проще?
Любой из них горит нужным мне цветом , все это пройдено , теперь мне просто нужно подключить условия - вот я и спросил как это реализовать
Ну если вы ее полностью приручили, тогда дело за малым:
if (digitalRead(нужный пин) == HIGH или LOW, как вам надо) {
включить ленту c заданными параметрами
}
чего еще проще?
ну и каждому диоду ставлю другой цвет , как и выше , так ?
у меня пинов несколько, соответсвенно нужно написать иф нужный пин - ХАЙ, а другой ЛОУ, и тот ЛОУ - то гори "так" (перечесление всех диодов и их цветов, так? - в таком формате почему то горит все миксовано и не понятно.. вот и спросил об ошибках :)
Если в управлении используется 2 пина, значит в условиях if через && нужно прописывать состояния на 2 пинах.
Перед тем как вбивать новою комбинацию свечений старую нужно выключить-погасить, либо на все пиксели вбивать новую комбинацию.
Если в управлении используется 2 пина, значит в условиях if через && нужно прописывать состояния на 2 пинах.
Перед тем как вбивать новою комбинацию свечений старую нужно выключить-погасить, либо на все пиксели вбивать новую комбинацию.
Значит, если у меня например 3 пина, то нужно прописывать каждую комбинацию ? и свечение каждого диода ? я правильно понял ? :)
Ну, да. Иначе старые данные по свечению остаются на пикселе - отсюда хаос свечения.
Значит, если у меня например 3 пина, то нужно прописывать каждую комбинацию ? и свечение каждого диода ? я правильно понял ? :)
Три пина, дадут восемь комбинаций. Нужно учитывать все.