Помогите организовать контроллер ARGB-контроллер для системы из нескольких вентиляторов
- Войдите на сайт для отправки комментариев
Доброго времени суток!
Есть 6 вентиляторов с ARGB-подсветкой фирмы Cooler Master (3 по 120мм и 3 по 140мм). Подключил их через хаб CoolerMaster Masterfan ARGB and PWM hub. Хаб питается от БП компьютера через Sata-коннектор. Выход с хаба можно подключить к материнской плате к разъему ARGB 3пин (5v), но софт материнской платы весьма скуден - очень мало режимов. Видел на ютубе видео "Гирлянда за 5 минут, без программирования и SMS (ESP8266 + WS2812b)", по аналогии, думаю, можно сделать так же для моих вентиляторов. Вот только проблема, в видео ардуинка питается через БП. Хочу понять, как организовать питание ардуинки с разъема USB на материнской плате (9 пин). Как я понял сильной нагрузки на плату не будет, т.к. сам хаб питается от БП системного блока. Может есть какое-то готовое решение или ткните ссылкой куда посмотреть, я первый раз сталкиваюсь с ардуино. И как залитая прошивка на ардуинку из видео выше будет дружить с ARGB вентиляторами...
Помогите новичку, пожалуйста.
Если паяльником не владеете, то питание можно наколхозить из выкидного USB коннектора (на заднюю планку такие выводятся) и короткого usb-кабеля.
А вот как на диоды выводить без инструмента - большой вопрос.
тебе лучше не подключать такие устройства к материнке. подключай к молексу или сата-конектору. в магазине покупаешь короткий переходник, обрезаешь провода и делаешь свой переходник для питания. а вообще я противник RGB светомузык. компьютер это инструмент а не дискотека..
Никак не будет дружить. И не лезь, если ты ноль. Только материнку спалишь.
Допустим запитаю от молекс/сата БП в системном блоке. Есть шанс через ардуино управлять вариантами подсветки, как в видео выше?
Ну, если управляющую программу напишешь, то сможешь управлять чем угодно, хоть шлюзом Брацкой ГЭС. А если в программировании ноль, то не судьба в этот рас.
В первом посте писал название видео, я про ту прошивку имел ввиду.
Ладно, я вас понял, никто не сталкивался с такой же задачей как у меня :)
Для слепых повторю:
Никак не будет дружить. И не лезь, если ты ноль. Только материнку спалишь.
Как я её спалю, если они физически в неё не вставлены? Кто из нас слепой?
Для слепых и тупых: замечание про материнку относится к подключению дуни к хедеру на материнке. Первая фраза относится к вопросу. Прочитай еще раз и подумай.
как в видео выше?
Каком видео? Вы что-то талдычите про какое-то видео, какую-то прошивку, но ни одной ссылки нет. Нам надо брать хрустальный шар и гадать что там за видео и что там за прошивка?
Я не стал размещать ссылку, думал у вас тут запрещено)
https://youtu.be/db1mpguOwfI
Не запрещено, просто мы по ссылкам не ходим.
ТС из вашего первого поста следует, что светодиоды вентиляторов уже к ардуино подключены, скетч написан и вопрос - как питать Арду от ПК?
С питанием разобрались, можно от молекс-сата БП компьютера запитать. Вопрос к каким пинам ардуинки цеплять 3 пин, которые идут от хаба с вентиляторами (3пин argb)…
С питанием разобрались, можно от молекс-сата БП компьютера запитать. Вопрос к каким пинам ардуинки цеплять 3 пин, которые идут от хаба с вентиляторами (3пин argb)…
Ну если с остальным разобрались цепляйте на любой. В чём загвоздка?
Вопрос к каким пинам ардуинки цеплять 3 пин, которые идут от хаба с вентиляторами (3пин argb)…
Если у Вас такие вопросы, то я присоединяюсь к мнению rkit. Бросайте это дело и отойдите подальше от аппаратуры.
Есть шанс через ардуино управлять вариантами подсветки, как в видео выше?
Поищи схемы и описание под своё изделие. В данном варианте пишут, что стоят адресные (как в видео) светодиоды на вентиляторе. Поиграйся с одним, а впрочем если нет понимания лучше не рисковать, хотя там всего 5 Вольт.
Ещё такой вопрос, при проверке скетча в программе вылезает ошибка Call of overloaded ‘abs(unit32_t)’ is ambiguous.
Ещё такой вопрос, при проверке скетча в программе вылезает ошибка Call of overloaded ‘abs(unit32_t)’ is ambiguous.
1. А где, собственно, сам вопрос?
2. Как скетч, так и сообщение об ошибке нужно выкладывать текстом, а не картинкой.
1. Что я делаю не так, по инструкции в видео делаю тоже самое.
2.
/* Скетч разработан 30.11.2018 Wirekraken */ #include <ESP8266WebServer.h> #include <WebSocketsServer.h> #include <FS.h> #include <FastLED.h> const char* ssid = "OmegaMash"; // имя вашей сети const char* password = "Magadan777"; // пароль вашей сети IPAddress Ip(192,168,1,10); // IP-адрес для ESP IPAddress Gateway(192,168,1,1); // IP-адрес шлюза (роутера) IPAddress Subnet(255,255,255,0); // маска подсети, диапазон IP-адресов в локальной сети #define LED_COUNT 60 // число пикселей в ленте #define LED_DT 2 // пин, куда подключен DIN ленты (номера пинов ESP8266 совпадает с Arduino) uint8_t bright = 25; // яркость (0 - 255) uint8_t ledMode = 0; // эффект (0 - 29) uint8_t flag = 1; // флаг отмены эффекта CRGBArray<LED_COUNT> leds; uint8_t delayValue = 20; // задержка uint8_t stepValue = 10; // шаг по пикселям uint8_t hueValue = 0; // тон цвета // инициализация websocket на 81 порту WebSocketsServer webSocket(81); ESP8266WebServer server(80); void setup(){ Serial.begin(9600); LEDS.setBrightness(bright); LEDS.addLeds<WS2811, LED_DT, GRB>(leds, LED_COUNT); // настройки для вашей ленты (ленты на WS2811, WS2812, WS2812B) updateColor(0,0,0); LEDS.show(); WiFi.config(Ip, Gateway, Subnet); WiFi.begin(ssid, password); Serial.println(""); while (WiFi.status() != WL_CONNECTED){ delay(500); Serial.print("."); } Serial.print("IP address: "); Serial.println(WiFi.localIP()); server.onNotFound([](){ if(!handleFileRead(server.uri())) server.send(404, "text/plain", "FileNotFound"); }); server.begin(); SPIFFS.begin(); webSocket.begin(); webSocket.onEvent(webSocketEvent); } void loop(){ //обработка входящих запросов HTTP или WebSockets webSocket.loop(); server.handleClient(); ledEffect(ledMode); } //функция обработки входящих сообщений void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length){ if(type == WStype_CONNECTED){ IPAddress ip = webSocket.remoteIP(num); String message = String("Connected"); webSocket.broadcastTXT(message); // отправляем последнее значение всем клиентам при подключении } if(type == WStype_TEXT){ String data; for(int x = 0; x < length; x++){ if(!isdigit(payload[x])) continue; data += (char) payload[x]; } if(payload[0] == 'B'){ flag = 0; Serial.print("Bright: "); bright = data.toInt(); Serial.println(data); LEDS.setBrightness(bright); } else if(payload[0] == 'F'){ flag = 0; Serial.print("Function: "); ledMode = data.toInt(); Serial.println(data); ledEffect(ledMode); } else if(payload[0] == '#'){ if(!flag){ Serial.print("flag : "); Serial.println(flag); ledMode = flag; ledEffect(ledMode); flag = 1; } else{ //преобразуем в 24 битное цветовое число uint32_t rgb = (uint32_t) strtol((const char *) &payload[1], NULL, 16); //преобразуем 24 бит по 8 бит на канал uint8_t r = abs(0 + (rgb >> 16) & 0xFF); uint8_t g = abs(0 + (rgb >> 8) & 0xFF); uint8_t b = abs(0 + (rgb >> 0) & 0xFF); Serial.print("ColorPicker: "); Serial.print(r); Serial.print(g); Serial.println(b); for(int x = 0; x < LED_COUNT; x++){ leds[x].setRGB(r,g,b); } LEDS.show(); } } } } // функция эффектов void ledEffect(int ledMode){ switch(ledMode){ case 0: updateColor(0,0,0); break; case 1: rainbow_fade(); delayValue = 20; break; case 2: rainbow_loop(); delayValue = 20; break; case 3: new_rainbow_loop(); delayValue = 5; break; case 4: random_march(); delayValue = 40; break; case 5: rgb_propeller(); delayValue = 25; break; case 6: rotatingRedBlue(); delayValue = 40; hueValue = 0; break; case 7: Fire(55, 120, delayValue); delayValue = 15; break; case 8: blueFire(55, 250, delayValue); delayValue = 15; break; case 9: random_burst(); delayValue = 20; break; case 10: flicker(); delayValue = 20; break; case 11: random_color_pop(); delayValue = 35; break; case 12: Sparkle(255, 255, 255, delayValue); delayValue = 0; break; case 13: color_bounce(); delayValue = 20; hueValue = 0; break; case 14: color_bounceFADE(); delayValue = 40; hueValue = 0; break; case 15: red_blue_bounce(); delayValue = 40; hueValue = 0; break; case 16: rainbow_vertical(); delayValue = 50; stepValue = 15; break; case 17: matrix(); delayValue = 50; hueValue = 95; break; // тяжелые эффекты case 18: rwb_march(); delayValue = 80; break; case 19: flame(); break; case 20: theaterChase(255, 0, 0, delayValue); delayValue = 50; break; case 21: Strobe(255, 255, 255, 10, delayValue, 1000); delayValue = 100; break; case 22: policeBlinker(); delayValue = 25; break; case 23: kitt(); delayValue = 100; break; case 24: rule30(); delayValue = 100; break; case 25: fade_vertical(); delayValue = 60; hueValue = 180; break; case 26: fadeToCenter(); break; case 27: runnerChameleon(); break; case 28: blende(); break; case 29: blende_2(); } } // функция получения типа файла String getContentType(String filename){ if(server.hasArg("download")) return "application/octet-stream"; else if(filename.endsWith(".htm")) return "text/html"; else if(filename.endsWith(".html")) return "text/html"; else if(filename.endsWith(".css")) return "text/css"; else if(filename.endsWith(".js")) return "application/javascript"; else if(filename.endsWith(".png")) return "image/png"; else if(filename.endsWith(".gif")) return "image/gif"; else if(filename.endsWith(".jpg")) return "image/jpeg"; else if(filename.endsWith(".ico")) return "image/x-icon"; else if(filename.endsWith(".xml")) return "text/xml"; else if(filename.endsWith(".pdf")) return "application/x-pdf"; else if(filename.endsWith(".zip")) return "application/x-zip"; else if(filename.endsWith(".gz")) return "application/x-gzip"; return "text/plain"; } // функция поиска файла в файловой системе bool handleFileRead(String path){ #ifdef DEBUG Serial.println("handleFileRead: " + path); #endif if(path.endsWith("/")) path += "index.html"; if(SPIFFS.exists(path)){ File file = SPIFFS.open(path, "r"); size_t sent = server.streamFile(file, getContentType(path)); file.close(); return true; } return false; }Скетч писал какой-то школьник безграмотный.
Или кот. Зачем ему там abs() - загадка.
А могла эта ошибка возникнуть из-за версии программы? Сейчас у меня стоит последняя версия, а сам скетч 2018 года.
А если и да - как это облегчает жизнь с таким исходником?
Попробовать найти старую версию, зашить через неё, пользоваться. Если нет - попытаться связаться тогда с автором.
Попробовать найти старую версию, зашить через неё, пользоваться. Если нет - попытаться связаться тогда с автором.
может проще этот поправить? - абс тут зачем?
Если бы я понимал в этом коде хоть что-то. Да, мы в технаре проходили Visual Basic, но учили нас банальщине а ля вызов диалоговых окон с кнопками "OK" и "Cancel". А язык в ардуинке мне мало знаком.
попытаться связаться тогда с автором.
С этого надо было начинать.