Ардуинки, ESP, программирование
92 subscribers
51 photos
8 videos
5 files
15 links
Канал о программировании и вообще об электронике

Вот наш чат: https://yangx.top/arduinki_esp_chat
加入频道
Всем привет! На связи я, а это канал об электронике(это и так понятно). Всего будет 8 видов сообщений(уже больше):
#начало - для новичков
#avrки - для тех, кто уже что-то знает
#espшки - для тех, кому уже мало обычных ардуинок
#вифи - для тех, кому нравится вайфай
#поделки - для тех, кто зашёл поглазеть
#ардуиноиде - фишки и настройка ArduinoIDE
#резисторы - радиоэлектроника и собирание схем
#платки - виды ардуинок, еспшек и других камушков
#уроки — ну тут всё понятно
#железки — всякие датчики и модули
#библиотеки — использование разных библиотек
#гайверхаб — гайверхаб
#адрескаадресная лента

В следующем сообщении будут основные термины
👍1
В ближайшее время на канале выйдет инструкция, как собрать такую лампу.
А теперь зачем это всё: в магазинах похожая штука стоит 5 тыс. р., а эта собрана примерно за 1500р., в магазинном варианте нет эффектов и вайфая, а тут есть, в этой лампе можно настроить потребляемый ток, а в магазинной лампе нельзя. Короче дешевле, лучше, но придётся самому собрать
#поделки
#espшки
#вифи
#адреска
👍4
ledwemos4_0.zip
441.1 KB
А вот переделанная прошивка лампы. Управление (настройка вифи) как в поливаторе. Добавил возможность скрыть настройки эффекта + случайная генерация пароля.
При первом запуске еспшка создаст точку доступа. Надо подключиться и всё настроить (ssid и пароль от роутера, эффекты, кол-во диодов и др). После перезагрузки еспшки она попытается подключиться к роутеру. Потом уже из гайверхаба можно управлять еспшкой (в том числе опять настроить).

П.С. Теперь будет урок про адресные ленты

#поделки
#espшки
#вифи
#адреска
7👍2
А сейчас вы узнаете, как подключить адресную ленту WS2812 и управлять ей.
0. Ещё есть обычные ленты, не адресные. Они целиком светятся одним цветом. У обычных лент 4 ноги, а у адресных 3. У адресных лент можно управлять цветом каждого диода, но для них нужен икроконтроллер.
1. Подключение
GND --------- GND
DIN --470ом-- пин
5V ---------- 5в блок питания

ИЛИ

GND --------- GND
DIN --470ом-- пин
5V ---------- 5V
5V ---------- 5в блок питания
Важно! нельзя подключать ленту к ардуине без доп. питания!!! Есть 3 варианта:
1. Питать ардуину от компьютера, а ленту от бп. Ноги 5в не соединены
2. Питать и ленту, и ардуину от бп. Ноги 5в соединены
3. 1 вариант, но соединить ноги 5в. Если не повезёт(нет диода на плате ардуины), может сломаться компьютер. Но это не точно

2. Прошивка
Сначала надо подключить библиотеку FastLED и объявить массив диодов:
cpp 
#include <FastLED.h>
CRGB leds[кол-во диодов];


Для удобства можно задефайнить кол-во диодов:
cpp 
#define NUM_LEDS 50
#include <FastLED.h>
CRGB leds[NUM_LEDS];

В сетупе надо настроить ленту и (ОЧЕНЬ ЖЕЛАТЕЛЬНО) настроить макс.ток, чтобы не сгорел бп, а в лупе по таймеру обновлять ленту:
cpp 
#define NUM_LEDS 50
#define CURRENT_LIMIT 1200
#define BRIGHTNESS 127 // яркость

#include <FastLED.h>
CRGB leds[NUM_LEDS];

void setup() {
Serial.begin(115200); // открываем сериал
FastLED.addLeds<WS2812, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip ); // настраиваем ленту. <ЧИП, ПИН, ПОРЯДОК ЦВЕТОВ>
FastLED.setBrightness(BRIGHTNESS); // яркость
if (CURRENT_LIMIT > 0) FastLED.setMaxPowerInVoltsAndMilliamps(5, CURRENT_LIMIT); // макс. ток (напряжение в В, ток в мА)
FastLED.clear(); // залить чёрным
//fillAll(CRGB::Yellow);
FastLED.show(); // показать. Вызывать после изменений
}
void loop() {
static uint32_t tmr; // таймер на миллис
if (millis() - tmr >= (1000 / 24)) {
tmr = millis();
FastLED.show(); // показать
}
}


Всё. Можно рисовать. Вот способы:
// залить всё 
void fillAll(CRGB color) {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = color;
}
}
// залить
void fill(int a, int b, CRGB color) {
int dir = a > b ? -1 : 1;
for (int i = a; i < b; i+=dir) {
leds[i] = color;
}
}
// уменьшить яркость
#define SUB 0x40
void fade() {
for (int i = 0; i < NUM_LEDS; i++) {
byte &r = leds[i].r, &b = leds[i].b, &g = leds[i].g;
if (r >= SUB) r -= SUB;
else r = 0;
if (g >= SUB) g -= SUB;
else g = 0;
if (b >= SUB) b -= SUB;
else b = 0;
}
}
/*
leds[i] = col - покрасить диод #i. 1 диод это 0
fillAll(col) - залить
fill(a, b, col) - залить от a до b
fade() - плавно уменьшить яркость всей ленты
ЦВЕТ
CRGB::имя
CRGB(r, g, b)
CHSV(h, s, v)
0xRRGGBB
RR красный. 00 чёрный, FF максимальный
GG зелёный. 00 чёрный, FF максимальный
BB синий. 00 чёрный, FF максимальный
R + G = жёлтый
G + B = циановый
R + B = магентовый
R + G + B = белый
0xFF0000 — красный 0x00FF00 — зелёный
0x0000FF — синий 0xFFFF00 — жёлтый
0xFF00FF — магентовый 0x00FFFF — циановый
0xFFFFFF — белый
*/

#адреска
#железки
#библиотеки
#avrки (хотя и на есп работает)
#уроки
П.С. Схему подключения, код и внешний вид этого девайса пришлю потом
П.П.С. Медленно, но верно заканчивается кол-во оставшихся символов...(их всего ~4000. Тут 3301)
11🤮2👍1