Часы на микроконтроллере ESP8266 и кольце из адресных светодиодов WS2812. Программа для Arduino IDE.

  Рет қаралды 7,958

Справный канал

Справный канал

Күн бұрын

Часы на микроконтроллере ESP8266 и кольце из адресных светодиодов WS2812. Кольцо содержит в себе 60 светодиодов. Минута обозначается светящимся светодиодом (красным), час обозначается светящимся сектором (зеленым). Для удобства восприятия циферблата белым светятся часовые метки в позиции 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 и 11 часов. На микроконтроллере "подняты" WiFi-точка доступа и WEB-сервер. Установка времени на часах производится через запрос к этому WEB-серверу, например, из браузера мобильного телефона. В программе использованы библиотеки Adafruit_NeoPixel, TimeLib, а также стандартные библиотеки для реализации WEB-сервера и точки доступа.
Текст программы для Arduino IDE размещен в комментариях, так как в описании оказывается нельзя использовать угловые скобки.
#esp8266 #ws2812 #arduino #ардуино #часы #
handmade #хэндмэйд

Пікірлер: 24
@Справныйканал
@Справныйканал 3 жыл бұрын
Текст программы для Arduino IDE: #include #define PIN D1 #define NUMPIXELS 60 #define BRIGHTNESS 50 // Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) // NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products) Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); #include #include #include #include #ifndef APSSID #define APSSID "ESPap" #define APPSK "thereisnospoon" #endif /* Set these to your desired credentials. */ const char *ssid = APSSID; const char *password = APPSK; int GlobMin = 0; ESP8266WebServer server(80); void handleRoot() { String out = ""; int out2; // Установка времени if( server.hasArg("settime") ){ out = server.arg("settime"); Serial.println(out); int arg1 = out.substring(0,2).toInt(); int arg2 = out.substring(2,4).toInt(); int arg3 = out.substring(4,6).toInt(); int arg4 = out.substring(6,8).toInt(); int arg5 = out.substring(8,10).toInt(); int arg6 = out.substring(10).toInt(); setTime(arg1,arg2,arg3,arg4,arg5,arg6); clock_face(arg1, arg2); } out+="Now " + String(hour()) + ":" + String(minute()) + ":" + String(second()) + " " + String(day()) + "." + String(month()) + "." + String(year()) + ""; //server.send(200, "text/html", "You are connected"); //server.send(200, "text/html", "Now " + String(hour()) + ":" + String(minute()) + ":" + String(second()) + String(day())+""); server.send ( 200, "text/html", out ); } // the setup function runs once when you press reset or power the board void setup() { int j; int i; strip.begin(); // This initializes the NeoPixel library. delay(2000); Serial.begin(115200); Serial.println(); Serial.print("Configuring access point..."); /* You can remove the password parameter if you want the AP to be open. */ WiFi.softAP(ssid, password); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP address: "); Serial.println(myIP); server.on("/", handleRoot); server.begin(); Serial.println("HTTP server started"); // Demo быстрое прохождение всего циферблата for(j=0; j
@ЕленаПрекрасная-рисующийастроп
@ЕленаПрекрасная-рисующийастроп 3 жыл бұрын
Какая классная задумка!!
@nikolaythird1454
@nikolaythird1454 2 жыл бұрын
Креативно!
@Справныйканал
@Справныйканал 2 жыл бұрын
Спасибо!
@user-eo1vd2lu9u
@user-eo1vd2lu9u 6 ай бұрын
Как можно сделать,чтобы отображалась секундная точка?
@Справныйканал
@Справныйканал 6 ай бұрын
Объявляем еще одну переменную в начале loop, которая будет хранить секунды, например int TekSec; TekSec = second(); Понадобится еще глобальная переменная секунд, например int GlobSec = 0; Далее, нужно изменить код программы if (GlobMin != TekMin){ TekHour = hour(); clock_face(TekHour, TekMin); }, чтобы здесь проверялось на неравенство секунд, а не минут. Последнее, что нужно сделать, в функции clock_face сделать наложение секундной точки после вывода минутной стрелки. Как-то так, понятно, что придется отладить программу.
@НиколайСыч-г9ъ
@НиколайСыч-г9ъ 2 жыл бұрын
С минутной "стрелкой" ясно, а вот часовая "стрелка" ? Я так понимаю надо ориентироваться на первые по ходу светодиоды для определения часа. Несколько не удобно.
@Справныйканал
@Справныйканал 2 жыл бұрын
Я сделал "часовую стрелку" толстую, т.е. горит весь сектор (на обложке это зеленый сектор между 4 и 5 часами). Можно сделать как-то иначе, например, чтобы горел не весь сектор а один из 4-х светодиодов в зависимости от количества минут.
@БорисБ-ж9ы
@БорисБ-ж9ы 2 жыл бұрын
@@Справныйканал где в скетче поменять чтобы часовая была из 1 пикселя?
@Справныйканал
@Справныйканал 2 жыл бұрын
Вот в этом месте, вместо четырех пикселов оставьте один (закомментируйте "лишние" строки): strip.setPixelColor(pHour*5+1, strip.Color(0,100,0)); strip.setPixelColor(pHour*5+2, strip.Color(0,100,0)); strip.setPixelColor(pHour*5+3, strip.Color(0,100,0)); strip.setPixelColor(pHour*5+4, strip.Color(0,100,0)); Но мне кажется, что сектором понятнее.
@БорисБ-ж9ы
@БорисБ-ж9ы 2 жыл бұрын
@@Справныйканал спасибо за разъяснение...
@МихаилМалышев-в2ш
@МихаилМалышев-в2ш Жыл бұрын
,,кольцо,, продаётся готовое или сам делал?
@Справныйканал
@Справныйканал Жыл бұрын
Кольцо на алишке продается.
@user-eo1vd2lu9u
@user-eo1vd2lu9u 6 ай бұрын
какой пароль на подключение,не могу подключиться?
@Справныйканал
@Справныйканал 6 ай бұрын
thereisnospoon, он прямо в тексте программы прописан
@user-eo1vd2lu9u
@user-eo1vd2lu9u 6 ай бұрын
@@Справныйканал Спасибо,все работает,понравилось.Как можно сделать,чтобы отображалась секундная точка?
@aleks-s1442
@aleks-s1442 2 жыл бұрын
А если просто подключить контроллер для ленты с пультом с али за 200руб то получиться 300 эффектов примеры на канале
@БорисБ-ж9ы
@БорисБ-ж9ы 3 жыл бұрын
Ну а схема то где?
@ilyapermyakov3332
@ilyapermyakov3332 3 жыл бұрын
Схема самая простая :) кольцо подключено к выходу контроллера D1 (#define PIN D1).
@Справныйканал
@Справныйканал 2 жыл бұрын
Так и есть.
@БорисБ-ж9ы
@БорисБ-ж9ы 2 жыл бұрын
@@Справныйканал так что здесь часов реального времени то и нет совсем , время берется с инета?
@Справныйканал
@Справныйканал 2 жыл бұрын
Часы реального времени получается, что в самом контроллере. За это отвечает библиотека TimeLib.h. То есть контроллер сам считает время без помощи специальных микросхем. Можно, конечно, придумать, чтобы из инета время бралось, естественно потребуется переписывать программу.
@БорисБ-ж9ы
@БорисБ-ж9ы 2 жыл бұрын
@@Справныйканал не понятно а зачем он тогда подключается к вай фай сети?
He bought this so I can drive too🥹😭 #tiktok #elsarca
00:22
Elsa Arca
Рет қаралды 59 МЛН
Brawl Stars Edit😈📕
00:15
Kan Andrey
Рет қаралды 47 МЛН
LED Clock Final Build
4:21
Danny Simon
Рет қаралды 14 М.
Адресная лента ws2812b, бегущая строка, управление шрифтами
10:49
Ардуино для начинающих
Рет қаралды 8 М.
DIY WS2812 Analog style Arduino Ring Clock
9:57
Mirko Pavleski
Рет қаралды 21 М.