Ночник. Неделя неспешно и заработало.

Serrous
Идет загрузка
Загрузка
25.06.2019
939
9
печатает на FLSUN 3D Metal Frame Large Print Area 3D Printer
Мы печатаем

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

9
Статья относится к принтерам:
FLSUN 3D Metal Frame Large Print Area 3D Printer
Нашел на тингсервисе планетку... подумал а почему бы не сделать ночник... печать, подбор компонентов, пайка, программирование. Ушло недельку времени - и заработало. Модельки пока выкладывать не буду. Буду переделывать подставку.
По оборудованию.

Wemos d1 mini

30 см светодиодной ленты. 24 вольта RGBW.

MT3608 повышающий преобразователь.

коневертер уровней 3.3/5 вольта - транзисторы не хотели полностью открываться от 3.3 вольт

4 транзистора irf520

Разьем USB A - хотелось стандартным проводом питатать, теперь можно питать как от зарядника телефона так и от компа.

видео работыПрога на телефоне для управления

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

9
Комментарии к статье

Комментарии

25.06.2019 в 11:56
0

Схему и код могу выкинуть если надо кому.

25.06.2019 в 12:21
0

А ссылку с твинга можно? Искал может не так, только громадных размеров нашел.
Или свой файлик если не жалко :) По электронике разберусь. Спасибо.

25.06.2019 в 14:17
0

Спасибо.

27.06.2019 в 11:05
0

А почему лента 24 вольта? Или какя была? 
Приложение своё? 

27.06.2019 в 14:28
0

Лента какая была в наличии.. но повышать все равно надо ьыло бы. а какая разница до 12 или до 24 вольт. 
приложение http://remotexy.com/
5 минут и готово ) но правда платное ... но за 30 секунд ее можно настроить...

27.06.2019 в 17:13
0

Так вроде есть и 5 вольтовые ленты. А приложение можно было использовать бесплатное БЛИНК или от Алексгайвера.

27.06.2019 в 17:19
0

возможно и есть... я взял все из наличия... 
приложение у меня тоже давно куплено.. его фишка что вся связь автоматом програмится...  вот весь код...  все что между RemoteXY include library  и END RemoteXY include  сгенерировано автоматически. и графика вся тоже тут лежит... на смарте ставишь голое приложение. подключаешься к вайфай точке lamp ... и приложуха подгружает интерфейс автоматом... тоесть не надо ничего вообще настраивать на телефоне

#include
#include

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// определение режима соединения и подключение библиотеки RemoteXY
#define REMOTEXY_MODE__ESP8266WIFI_LIB_POINT
#include

#include

// настройки соединения
#define REMOTEXY_WIFI_SSID 'lamp'
#define REMOTEXY_WIFI_PASSWORD '12345678'
#define REMOTEXY_SERVER_PORT 6377

// конфигурация интерфейса
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =
{ 255, 5, 0, 0, 0, 166, 0, 8, 13, 1,
  4, 128, 4, 8, 56, 6, 2, 26, 129, 0,
  4, 3, 14, 4, 17, 208, 145, 208, 181, 208,
  187, 209, 139, 208, 185, 0, 4, 128, 4, 20,
  56, 6, 2, 26, 129, 0, 5, 15, 10, 4,
  17, 208, 154, 209, 128, 208, 176, 209, 129, 208,
  189, 209, 139, 208, 185, 0, 4, 128, 4, 31,
  56, 6, 2, 26, 129, 0, 5, 27, 18, 4,
  17, 208, 151, 208, 181, 208, 187, 208, 181, 208,
  189, 209, 139, 208, 185, 0, 4, 128, 4, 42,
  56, 6, 2, 26, 129, 0, 5, 38, 13, 4,
  17, 208, 161, 208, 184, 208, 189, 208, 184, 208,
  185, 0, 2, 0, 20, 62, 22, 11, 2, 26,
  31, 31, 79, 78, 0, 79, 70, 70, 0, 129,
  0, 8, 53, 46, 6, 17, 208, 144, 208, 178,
  209, 130, 208, 190, 208, 188, 208, 176, 209, 130,
  208, 184, 209, 135, 208, 181, 209, 129, 208, 186,
  208, 184, 0
};

// структура определяет все переменные вашего интерфейса управления
struct {

  // input variable
  int8_t rgb_w; // =0..100 положение слайдера
  int8_t rgb_r; // =0..100 положение слайдера
  int8_t rgb_g; // =0..100 положение слайдера
  int8_t rgb_b; // =0..100 положение слайдера
  uint8_t autom; // =1 если переключатель включен и =0 если отключен

  // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0

} RemoteXY;
#pragma pack(pop)
/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

byte rgbr = 0;
byte rgbb = 0;
byte rgbg = 0;
byte rgbw = 0;
byte autom = 0;
byte oldrgbr, oldrgbg, oldrgbb, oldrgbw, oldautom;
int temp, timer, svet, cikl;
const int eeprom_addr = 100; // Адрес записи в eeprom

void setup()
{
  Serial.begin (9600);
  EEPROM.begin(512);
  RemoteXY_Init ();
  pinMode(D4, OUTPUT);
  pinMode(D7, OUTPUT);
  pinMode(D6, OUTPUT);
  pinMode(D5, OUTPUT);

  readeeprom();
  oldrgbr = rgbr;
  oldrgbg = rgbg;
  oldrgbb = rgbb;
  oldrgbw = rgbw;
  oldautom = autom;
  timer = millis();
}

void loop()
{
  RemoteXY_Handler ();
  rgbw = RemoteXY.rgb_w;
  rgbr = RemoteXY.rgb_r;
  rgbg = RemoteXY.rgb_g;
  rgbb = RemoteXY.rgb_b;
  autom = RemoteXY.autom;

  if (autom != oldautom) {
    oldautom = autom;
    writeeeprom();

  }

  if (autom == 0) {
    if (rgbw != oldrgbw) {
      oldrgbw = rgbw;
      temp = (rgbw * 10);
      Serial.println (temp);
      analogWrite(D4, temp);
      writeeeprom();
    }

    if (rgbr != oldrgbr) {
      oldrgbr = rgbr;
      temp = (rgbr * 10);
      Serial.println (temp);
      analogWrite(D7, temp);
      writeeeprom();
    }

    if (rgbg != oldrgbg) {
      oldrgbg = rgbg;
      temp = (rgbg * 10);
      Serial.println (temp);
      analogWrite(D6, temp);
      writeeeprom();
    }

    if (rgbb != oldrgbb) {
      oldrgbb = rgbb;
      temp = (rgbb * 10);
      Serial.println (temp);
      analogWrite(D5, temp);
      writeeeprom();
    }
  }
  else {
    if ((millis() - timer) >= 200) {
      timer = millis();
      autoswitch2();
    }
  }
}

void readeeprom() {
  EEPROM.begin(512);
  EEPROM.get(eeprom_addr + 10, rgbr);
  EEPROM.get(eeprom_addr + 30, rgbb);
  EEPROM.get(eeprom_addr + 50, rgbg);
  EEPROM.get(eeprom_addr + 60, rgbw);
  EEPROM.get(eeprom_addr + 70, autom);
  temp = (rgbw * 10);
  analogWrite(D4, temp);
  RemoteXY.rgb_w = rgbw;
  temp = (rgbr * 10);
  analogWrite(D7, temp);
  RemoteXY.rgb_r = rgbr;
  temp = (rgbg * 10);
  analogWrite(D6, temp);
  RemoteXY.rgb_g = rgbg;
  temp = (rgbb * 10);
  analogWrite(D5, temp);
  RemoteXY.rgb_b = rgbb;
  RemoteXY.autom = autom;
  Serial.println (rgbw);
}

void writeeeprom() {
  EEPROM.begin(512);
  EEPROM.put(eeprom_addr + 10, rgbr);
  EEPROM.put(eeprom_addr + 30, rgbb);
  EEPROM.put(eeprom_addr + 50, rgbg);
  EEPROM.put(eeprom_addr + 60, rgbw);
  EEPROM.put(eeprom_addr + 70, autom);
  EEPROM.commit();
}

void autoswitch2() {

  if (svet == 0)
  { // гасим красный, параллельно разжигаем зеленый
    cikl = cikl + 1;
    if (cikl < 100) {
      temp = (cikl * 10);
      analogWrite(D7, (1000 - temp));
      analogWrite(D6, (temp));
    }
    else {
      svet = 1;
      cikl = 0;
    }
  }

      if (svet == 1)
  { // гасим зеленый, параллельно разжигаем синий
    cikl = cikl + 1;
    if (cikl < 100) {
      temp = (cikl * 10);
      analogWrite(D6, (1000 - temp));
      analogWrite(D5, (temp));
    }
    else {
      svet = 2;
      cikl = 0;
    }
  }

          if (svet == 2)
  { //гасим синий, параллельно разжигаем красный
    cikl = cikl + 1;
    if (cikl < 100) {
      temp = (cikl * 10);
      analogWrite(D5, (1000 - temp));
      analogWrite(D7, (temp));
    }
    else {
      svet = 0;
      cikl = 0;
    }

  }
}

27.06.2019 в 17:19
0

а если выкинуть еще работу с епром ваще будет мелкое

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Печать сценки из мультфильма

Баловство с инструментом

Девушка с айфоном

3D-Многоножка как цель MMU

Моргающая черепушка для флористов

Герконовый датчик импульсов для газового счетчика BK-4GT