Дана лента 40 диодов
Цель - при подачи питания на разные пины (ардуины) - на ленте загорается определенный диод определенным цветом.
код без действия, все просто горит ничего не происход , вообщем все как надо - при подаче на пин 8 = лента включается. каждому диоду свой цвет.
01 | #include <Adafruit_NeoPixel.h> // подключаем библиотеку |
04 | const int lentusa = 40; |
08 | const int alllightsout = 7; |
12 | Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(lentusa,alllightsout, NEO_GRB + NEO_KHZ800); |
19 | if (digitalRead(8) == HIGH) |
22 | digitalWrite(alllightsout, HIGH); |
24 | strip3.setPixelColor(0, 0, 0, 0); |
25 | strip3.setPixelColor(1, 0, 0, 0); |
26 | strip3.setPixelColor(2, 255, 140, 0); |
28 | strip3.setPixelColor(3, 0, 0, 0); |
29 | strip3.setPixelColor(4, 0, 0, 0); |
30 | strip3.setPixelColor(5, 255, 140, 0); |
32 | strip3.setPixelColor(6, 255, 0, 0); |
33 | strip3.setPixelColor(7, 255, 0, 0); |
35 | strip3.setPixelColor(8, 255, 0, 0); |
36 | strip3.setPixelColor(9, 255, 0, 0); |
37 | strip3.setPixelColor(10, 255, 0, 0); |
39 | strip3.setPixelColor(11, 255, 0, 0); |
40 | strip3.setPixelColor(12, 255, 0, 0); |
41 | strip3.setPixelColor(13, 255, 0, 0); |
43 | strip3.setPixelColor(14, 255, 0, 0); |
44 | strip3.setPixelColor(15, 255, 0, 0); |
45 | strip3.setPixelColor(16, 255, 0, 0); |
47 | strip3.setPixelColor(17, 255, 0, 0); |
48 | strip3.setPixelColor(18, 255, 0, 0); |
49 | strip3.setPixelColor(19, 255, 0, 0); |
51 | strip3.setPixelColor(20, 255, 0, 0); |
52 | strip3.setPixelColor(21, 255, 0, 0); |
53 | strip3.setPixelColor(22, 255, 0, 0); |
55 | strip3.setPixelColor(23, 255, 0, 0); |
56 | strip3.setPixelColor(24, 255, 0, 0); |
57 | strip3.setPixelColor(25, 255, 0, 0); |
59 | strip3.setPixelColor(26, 0, 0, 0); |
60 | strip3.setPixelColor(27, 0, 0, 0); |
61 | strip3.setPixelColor(28, 255, 140, 0); |
63 | strip3.setPixelColor(29, 0, 0, 0); |
64 | strip3.setPixelColor(30, 0, 0, 0); |
65 | strip3.setPixelColor(31, 255, 140, 0); |
67 | strip3.setPixelColor(32, 255, 0, 0); |
68 | strip3.setPixelColor(33, 255, 0, 0); |
69 | strip3.setPixelColor(34, 255, 0, 0); |
70 | strip3.setPixelColor(35, 255, 0, 0); |
72 | strip3.setPixelColor(36, 255, 0, 0); |
73 | strip3.setPixelColor(37, 255, 0, 0); |
74 | strip3.setPixelColor(38, 255, 0, 0); |
75 | strip3.setPixelColor(39, 255, 0, 0); |
80 | if ( digitalRead(8) == LOW) |
82 | for ( int i = 0; i < lentusa + 1; i++) |
86 | strip3.setPixelColor(i, strip3.Color(0, 0, 0)); |
8 пин - полностью включает ленту,если на него нет ХАЙ , то она не должна гореть вообще..
Вопрос. Как дописать правильно, что бы например при подаче на ПИН 6 - определенныедиоды загорались другими цветами ? не работает так:
001 | #include <Adafruit_NeoPixel.h> // подключаем библиотеку |
004 | const int lentusa = 40; |
008 | const int alllightsout = 7; |
012 | Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(lentusa,alllightsout, NEO_GRB + NEO_KHZ800); |
019 | if (digitalRead(8) == HIGH) |
022 | digitalWrite(alllightsout, HIGH); |
024 | strip3.setPixelColor(0, 0, 0, 0); |
025 | strip3.setPixelColor(1, 0, 0, 0); |
026 | strip3.setPixelColor(2, 255, 140, 0); |
028 | strip3.setPixelColor(3, 0, 0, 0); |
029 | strip3.setPixelColor(4, 0, 0, 0); |
030 | strip3.setPixelColor(5, 255, 140, 0); |
032 | strip3.setPixelColor(6, 255, 0, 0); |
033 | strip3.setPixelColor(7, 255, 0, 0); |
035 | strip3.setPixelColor(8, 255, 0, 0); |
036 | strip3.setPixelColor(9, 255, 0, 0); |
037 | strip3.setPixelColor(10, 255, 0, 0); |
039 | strip3.setPixelColor(11, 255, 0, 0); |
040 | strip3.setPixelColor(12, 255, 0, 0); |
041 | strip3.setPixelColor(13, 255, 0, 0); |
043 | strip3.setPixelColor(14, 255, 0, 0); |
044 | strip3.setPixelColor(15, 255, 0, 0); |
045 | strip3.setPixelColor(16, 255, 0, 0); |
047 | strip3.setPixelColor(17, 255, 0, 0); |
048 | strip3.setPixelColor(18, 255, 0, 0); |
049 | strip3.setPixelColor(19, 255, 0, 0); |
051 | strip3.setPixelColor(20, 255, 0, 0); |
052 | strip3.setPixelColor(21, 255, 0, 0); |
053 | strip3.setPixelColor(22, 255, 0, 0); |
055 | strip3.setPixelColor(23, 255, 0, 0); |
056 | strip3.setPixelColor(24, 255, 0, 0); |
057 | strip3.setPixelColor(25, 255, 0, 0); |
059 | strip3.setPixelColor(26, 0, 0, 0); |
060 | strip3.setPixelColor(27, 0, 0, 0); |
061 | strip3.setPixelColor(28, 255, 140, 0); |
063 | strip3.setPixelColor(29, 0, 0, 0); |
064 | strip3.setPixelColor(30, 0, 0, 0); |
065 | strip3.setPixelColor(31, 255, 140, 0); |
067 | strip3.setPixelColor(32, 255, 0, 0); |
068 | strip3.setPixelColor(33, 255, 0, 0); |
069 | strip3.setPixelColor(34, 255, 0, 0); |
070 | strip3.setPixelColor(35, 255, 0, 0); |
072 | strip3.setPixelColor(36, 255, 0, 0); |
073 | strip3.setPixelColor(37, 255, 0, 0); |
074 | strip3.setPixelColor(38, 255, 0, 0); |
075 | strip3.setPixelColor(39, 255, 0, 0); |
082 | iif (digitalRead(6) == HIGH and digitalRead(8) == HIGH) |
084 | digitalWrite(alllightsout, HIGH); |
086 | strip3.setPixelColor(0, 0, 0, 0); |
087 | strip3.setPixelColor(1, 0, 0, 0); |
088 | strip3.setPixelColor(2, 255, 215, 0); |
090 | strip3.setPixelColor(3, 0, 0, 0); |
091 | strip3.setPixelColor(4, 0, 0, 0); |
092 | strip3.setPixelColor(5, 255, 215, 0); |
094 | strip3.setPixelColor(6, 255, 0, 0); |
095 | strip3.setPixelColor(7, 255, 0, 0); |
097 | strip3.setPixelColor(8, 255, 0, 0); |
098 | strip3.setPixelColor(9, 255, 0, 0); |
099 | strip3.setPixelColor(10, 255, 0, 0); |
101 | strip3.setPixelColor(11, 255, 0, 0); |
102 | strip3.setPixelColor(12, 255, 0, 0); |
103 | strip3.setPixelColor(13, 255, 0, 0); |
105 | strip3.setPixelColor(14, 255, 0, 0); |
106 | strip3.setPixelColor(15, 255, 0, 0); |
107 | strip3.setPixelColor(16, 255, 0, 0); |
109 | strip3.setPixelColor(17, 255, 0, 0); |
110 | strip3.setPixelColor(18, 255, 0, 0); |
111 | strip3.setPixelColor(19, 255, 0, 0); |
113 | strip3.setPixelColor(20, 255, 215, 0); |
114 | strip3.setPixelColor(21, 255, 215, 0); |
115 | strip3.setPixelColor(22, 255, 215, 0); |
117 | strip3.setPixelColor(23, 255, 0, 0); |
118 | strip3.setPixelColor(24, 255, 0, 0); |
119 | strip3.setPixelColor(25, 255, 0, 0); |
121 | strip3.setPixelColor(26, 0, 0, 0); |
122 | strip3.setPixelColor(27, 0, 0, 0); |
123 | strip3.setPixelColor(28, 255, 140, 0); |
125 | strip3.setPixelColor(29, 0, 0, 0); |
126 | strip3.setPixelColor(30, 0, 0, 0); |
127 | strip3.setPixelColor(31, 255, 140, 0); |
129 | strip3.setPixelColor(32, 255, 215, 0); |
130 | strip3.setPixelColor(33, 255, 215, 0); |
131 | strip3.setPixelColor(34, 255, 0, 0); |
132 | strip3.setPixelColor(35, 255, 0, 0); |
134 | strip3.setPixelColor(36, 255, 0, 0); |
135 | strip3.setPixelColor(37, 255, 0, 0); |
136 | strip3.setPixelColor(38, 255, 0, 0); |
137 | strip3.setPixelColor(39, 255, 0, 0); |
145 | if ( digitalRead(8) == LOW) |
147 | for ( int i = 0; i < lentusa + 1; i++) |
151 | strip3.setPixelColor(i, strip3.Color(0, 0, 0)); |
Где может быть ошибка ? программа простая, но у меня не выходит делать так,что бы определенные диоды меняли цвета при подачи питания на определенные пины ардуино
а что не работает?
для начала setup как минимум должен выглядеть так
1
void
setup
() {
2
strip3.begin();
3
strip3.setBrightness(50);
4
strip3.show();
// Initialize all pixels to 'off'
5
}
а что не работает?
Ардуина выдает разные цвета , словно не понимает что от нее хотят..
А код по структуре правильный получается ?
что бы добавить другие пины , так же дописывать ?
например дам я сигнал на 5 пин, пропишу 6-ому пину лоу , и цвета определённые каждому диоду как мне нужно , когда идет питание на пин 5. - будет ли работать в такой же структуре корректно ? А если одновременно на 6 так же приходит ? нужно прлписать пин 6 хай пин 5 хай пин 8 хай и так же каждому диоду цвет.
и обязательно ли прописывать все сценарии? присваивать пинам значение лоу ? мол , если там нет - а там есть - гори так.. а если и там и там есть - гори таким цветом .
Будет так тоже работать корректно ?
для начала setup как минимум должен выглядеть так
1
void
setup
() {
2
strip3.begin();
3
strip3.setBrightness(50);
4
strip3.show();
// Initialize all pixels to 'off'
5
}
Спасибо, а брайгнесс обязательно?
думаю нет, но какая яркость по умолчанию не знаю.
дальше просто зажгите всю ленту белым, заодно проверите все диоды и свой блок питания :)
1
loop
{
2
for
(
int
i = 0; i < lentusa; i++)
3
{
4
strip3.setPixelColor(i, strip3.Color(255, 255, 255));
5
}
6
strip3.show();
7
8
while
(1);
// пока стоп, больше ничего не делаем
9
}
горит ?
горит ?
Горит все)
ок
теперь по цветам
01
loop
{
02
for
(
int
i = 0; i < lentusa; i++)
03
{
04
strip3.setPixelColor(i, strip3.Color(255, 0, 0));
// красный
05
}
06
strip3.show();
07
delay(3000);
08
09
for
(
int
i = 0; i < lentusa; i++)
10
{
11
strip3.setPixelColor(i, strip3.Color(0, 255, 0));
// зеленый
12
}
13
strip3.show();
14
delay(3000);
15
16
for
(
int
i = 0; i < lentusa; i++)
17
{
18
strip3.setPixelColor(i, strip3.Color(0, 0, 255));
// синий
19
}
20
strip3.show();
21
delay(3000);
22
}
цвета могу попутать местами, там у разных лент по разному.
ну а теперь можно и условий напихать... тока у меня уже глаза слипаются
Где может быть ошибка ?
Функция 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 пина, то нужно прописывать каждую комбинацию ? и свечение каждого диода ? я правильно понял ? :)
Три пина, дадут восемь комбинаций. Нужно учитывать все.