Решил сделать себе дхо. В ардуино полный 0. По примерам чуть разобрался. Что сделал почти устраивает, не могу понять как сделать. Что бы при подачи на Pin7 высокого уровня (включение дхо) они не просто включались а плавно разжигались. Заранее спасибо за ответы. Код (C++): #include <Adafruit_NeoPixel.h> // подключаем библиотеку Adafruit_NeoPixel strip = Adafruit_NeoPixel(5, 2, NEO_GRB + NEO_KHZ800); //Инициализируем первый поворотник 5 диодов на 2 цифровом выходе Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(5, 3, NEO_GRB + NEO_KHZ800);//Инициализируем второй поворотник 5 диодов на 3 цифровом выходе void setup() { pinMode(4, INPUT); pinMode(5, INPUT); pinMode(6, INPUT); pinMode(7, INPUT); strip.begin(); strip.show(); strip2.begin(); strip2.show(); } void loop() { { if ((digitalRead(5) == HIGH) and (digitalRead(6) == HIGH)) { //Режим аварийной сигнализации for(int k = 0; k < 2; k++) { for(int i = 0; i < 6; i++) { for(int j = 0; j < i; j++) { if ((digitalRead(5) == HIGH) and (digitalRead(6) == HIGH)) { k = 0; } strip.setPixelColor(j, strip.Color(255, 69, 0)); strip2.setPixelColor(j, strip2.Color(255, 69, 0)); } delay(5); strip.show(); strip2.show(); } for(int i = 0; i < 6; i++) { for(int j = 0; j < i; j++) { strip.setPixelColor(j, strip.Color(0, 0, 0)); strip2.setPixelColor(j, strip2.Color(0, 0, 0)); } delay(5); strip.show(); strip2.show(); } } } if (digitalRead(5) == LOW and digitalRead(6) == HIGH) { // включается один поворотник for(int k = 0; k < 2; k++) { for(int i = 0; i < 6; i++) { for(int j = 0; j < i; j++) { if ((digitalRead(5) == LOW) and (digitalRead(6) == HIGH)) { k = 0; } strip.setPixelColor(j, strip.Color(255, 69, 0)); } delay(100); strip.show(); } for(int i = 0; i < 6; i++) { for(int j = 0; j < i; j++) { strip.setPixelColor(j, strip.Color(0, 0, 0)); } delay(50); strip.show(); } } } if (digitalRead(5) == HIGH and digitalRead(6) == LOW) { // включаем второй поворотник for(int k = 0; k < 2; k++) { for(int i = 0; i < 6; i++) { for(int j = 0; j < i; j++) { if ((digitalRead(5) == HIGH) and (digitalRead(6) == LOW)) { k = 0; } strip2.setPixelColor(j, strip2.Color(255, 69, 0)); } delay(100); strip2.show(); } for(int i = 0; i < 6; i++) { for(int j = 0; j < i; j++) { strip2.setPixelColor(j, strip2.Color(0, 0, 0)); } delay(50); strip2.show(); } } } if (digitalRead(4) == HIGH and digitalRead(7) == HIGH) { for(int i = -1; i < 6; i++) { for(int j = -1; j < i; j++) { // Зажигаем габариты strip.setPixelColor(j, strip.Color(60, 60, 40)); strip2.setPixelColor(j, strip2.Color(60, 60, 40)); } delay(20); strip.show(); strip2.show(); } } if (digitalRead(7) == HIGH and digitalRead(4) == LOW) { for(int i = -1; i < 5; i++) { for(int j = -1; j < i; j++) { // Зажигаем дхо strip.setPixelColor(i, strip.Color(255, 255, 255)); strip2.setPixelColor(i, strip2.Color(255, 255, 255)); } delay(20); strip.show(); strip2.show(); } } if( digitalRead(4) == LOW and digitalRead(5) == LOW and digitalRead(6) == LOW and digitalRead(7) == LOW ) { for(int i = -1; i < 5; i++) { for(int j = -1; j < i; j++) { // выключено все, если нет ниодного сигнала strip.setPixelColor(i, strip.Color(0, 0, 0)); strip2.setPixelColor(i, strip2.Color(0,0, 0)); } strip.show(); strip2.show(); delay(20); } } } }
Все можно.Только зачем там Ардуино?Зачем плавный розжиг ДХО?Я на девятку делал плавный розжиг ближенго и совсем без Ардуино—работает.
Как лента WS2812 ловит помехи? У меня 15 метров дома натянуто. 448 светодиодов. Писал об этом здесь http://forum.amperka.ru/threads/450-ws2812-на-attiny1614-и-немного-кода.20663/ Так вот при выключении трансформаторного блока питания происходит сбой передачи данных. Благо у меня лента обновляется очень быстро, поэтому напрягает не сильно.
оно там не будет работать в первую очередь потому, что у ТС код из одних делеев... а он хочет на основе этого делать поворотники. Ну а в двух последних циклах еще и индексы диодов в ленте - отрицательные...