Накамерный свет для фотосессии

evrey55
Offline
Зарегистрирован: 04.08.2017

Всем доброго времени суток!

Решил я собрать RGB на адресных светодиодов +W светодиодную палку или накамерный свет для фотосессии.

Так вот в чем заключается помощь. Нужен грамотный человек который сможет мне помочь в отрисовке правильного подключение компонентов. Сделал наброски компонентов может что та надо убрать или что то добавить.

Вот ссылка на фото а то что то у меня не получаеться тут разместить фото 

https://drive.google.com/open?id=157sCPuRZYXhkMQhSIIsWXzrhfeSKFwDt

Всем заранее кто откликнется на помощь.

b707
Offline
Зарегистрирован: 26.05.2017

А в гугле пробовали искать? если искать за вас - сколько платите? :)

Хотя о чем я... если человек даже картинку в форум не сумел вставить - то какой гугль

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

evrey55 пишет:

 у меня не получаеться тут разместить фото
Всем заранее кто откликнется на помощь.

http://arduino.ru/forum/obshchii/sokhranenie-kartinok-na-forume

 

Пожалуйста.

evrey55
Offline
Зарегистрирован: 04.08.2017

evrey55
Offline
Зарегистрирован: 04.08.2017

Если вы не внимательные я писал что я новенький и еще толком не разобрался.

По сидел и понял как загружать картинки. Не переживайте ГУГЛ я отлично знаю и знаю как им пользоваться. И если бы я что то нашел подходящее для меня по моим наброскам я бы тут не писал бы включить логику свою в место того что бы тут умничать   

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Это что такое?  Это "отрисовка правильного подключение компонентов"? Или что?

evrey55
Offline
Зарегистрирован: 04.08.2017

asam]</p> <p>[quote=evrey55 пишет:

 у меня не получаеться тут разместить фото
Всем заранее кто откликнется на помощь.

http://arduino.ru/forum/obshchii/sokhranenie-kartinok-na-forume

 

Пожалуйста.

Спасибо я уже разобрался немного по сидел и понял как вставлять картинки

evrey55
Offline
Зарегистрирован: 04.08.2017

[quote=ЕвгенийП]

Это что такое?  Это "отрисовка правильного подключение компонентов"? Или что?

Мне нужно что бы помогли мне все это подключить если кому то не сложно

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А, понятно. Я то думал, что Вам нужно посмотреть Вашу идею и сделать замечания, если появятся. А Вам нужно, чтобы кто-то просто вместо Вас всё сделал? Боюсь, что это только в коммерческом разделе.

sadman41
Offline
Зарегистрирован: 19.10.2016

А мне нужна вилла если кому то несложно.  Просто я новинький и у меня нет времени зарабатывать на неё, но очень нужна!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

sadman41 пишет:

А мне нужна вилла если кому то несложно.

А вилка на первое время не устроит?

evrey55
Offline
Зарегистрирован: 04.08.2017

[quote=sadman41]

А мне нужна вилла если кому то несложно.  Просто я новинький и у меня нет времени зарабатывать на неё, но очень нужна!

ХАХАХАХА очень смешно можете свои три копей с виллай себе оставить 

evrey55
Offline
Зарегистрирован: 04.08.2017

[quote=ЕвгенийП]

А, понятно. Я то думал, что Вам нужно посмотреть Вашу идею и сделать замечания, если появятся. А Вам нужно, чтобы кто-то просто вместо Вас всё сделал? Боюсь, что это только в коммерческом разделе.

Хоть одно адекватное сообщение и направление куда писать. Спасибо Вам!

sadman41
Offline
Зарегистрирован: 19.10.2016

Напишите в спортлото сразу. Ибо на алиэспрессных RGBW светодиодах такие фото выйдут, что заколебёшься цветокорректировку делать - на каждом шуте будет свой ББ.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

evrey55]</p> <p>[quote=sadman41 пишет:

А мне нужна вилла если кому то несложно.  Просто я новинький и у меня нет времени зарабатывать на неё, но очень нужна!

ХАХАХАХА очень смешно можете свои три копей с виллай себе оставить 

 

Нуу, с таким подходом ты слона не продашь...

evrey55
Offline
Зарегистрирован: 04.08.2017

[quote=sadman41]

Напишите в спортлото сразу. Ибо на алиэспрессных RGBW светодиодах такие фото выйдут, что заколебёшься цветокорректировку делать - на каждом шуте будет свой ББ.

 

светодиоды будут браться neopixel rgb

evrey55
Offline
Зарегистрирован: 04.08.2017

asam]</p> <p>[quote=evrey55 пишет:

sadman41 пишет:

А мне нужна вилла если кому то несложно.  Просто я новинький и у меня нет времени зарабатывать на неё, но очень нужна!

ХАХАХАХА очень смешно можете свои три копей с виллай себе оставить 

 

Нуу, с таким подходом ты слона не продашь...

я ничего не собираюсь продавать это делаеться для собственного пользование 

sadman41
Offline
Зарегистрирован: 19.10.2016

evrey55 пишет:

светодиоды будут браться neopixel rgb

И что, думаете слово "neopixel" гарантирует результат? Это СД-ленты для декора, никакой цветовой точности или подбора в серии у них нет. Один будет более синим, другой более зелёным. +ШИМ по полной программе. Дальше сами попредставляйте спецэффекты на морде лица, освещённой такой панелью.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

evrey55 пишет:

По сидел и понял как загружать картинки. 

Так «По» наверное и проект реализует, пока сидит то... Подкорми его книгами чтоль, а то натощак сидеть...

b707
Offline
Зарегистрирован: 26.05.2017

evrey55 пишет:

ГУГЛ я отлично знаю и знаю как им пользоваться. И если бы я что то нашел подходящее для меня по моим наброскам

конечно, в гугле ничего похожего нет. Никто ведь до вас не покупал диоды непиксель - вы первый в мире узнали о их существовании :)

Tamerlan127
Offline
Зарегистрирован: 08.09.2019

Добрый вечер!

Хочу попросить помощи по поводу данного кода. Как подключить кнопки, чтобы можно было изменять значение в строке

float minimal_voltage = 2.75;

тем самым изменять напряжение отключения.

Сам лично программированием не занимаюсь, просто имеется схема , которую хотелось бы модернизировать и добавить пару кнопок для увеличения или уменьшения напряжение отключения.

Буду премного благодарен.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <Adafruit_INA219.h>



const int relay_pin = 2;                                        // pin подключения реле
//const float minimal_voltage = 2.8;                                     
float minimal_voltage = 2.75;                            // минимальное напряжение отключения нагрузки
const int window_sec = 1;                                     //время обновления показаний экрана LCD 

float voltage = 0;
float current = 0;
float power = 0;

float voltage_display = 0.0;
float current_display = 0.0;
float power_display = 0.0;

float voltage_sum = 0.0;
float current_sum = 0.0;
float power_sum = 0.0;

float capacity = 0.0;
float shuntvoltage = 0;
float busvoltage = 0;

int counter = 0;
int seconds = 0;
int minutes = 0;

int regim=1;
int flag=0;


boolean working = true;

unsigned long timelastinstance;   
unsigned long now;

                  
LiquidCrystal_I2C lcd(0x27,16,2);        //адрес дисплея
Adafruit_INA219 ina219;


void setup() {
  Serial.begin (9600);
  lcd.init();
  lcd.clear();
  lcd.setBacklight(HIGH);
  pinMode(relay_pin, OUTPUT);

   
  
  ina219.begin();
  shuntvoltage = ina219.getShuntVoltage_mV();
  busvoltage = ina219.getBusVoltage_V();
  voltage = busvoltage + (shuntvoltage / 1000);
  if (voltage > minimal_voltage) {digitalWrite(relay_pin, HIGH);}
  else {working = false; lcd.setCursor(0, 1); lcd.print("OFF");};
  lcd.setCursor(0, 0);
  lcd.print("Li-ON and Li-PO");
  lcd.setCursor(0, 1);
  lcd.print("TESTER  CHARGER");
  delay (2000);
  lcd.clear();
}

void loop() {
  if (working){
    now = millis();

    
          
        
    if ((now - timelastinstance) >= 1000) {
      timelastinstance = now;
      shuntvoltage = ina219.getShuntVoltage_mV();
      busvoltage = ina219.getBusVoltage_V();
      current = ina219.getCurrent_mA();
      power = ina219.getPower_mW();
      voltage = busvoltage + (shuntvoltage / 1000);
      
      voltage_sum += voltage;
      current_sum += current;
      power_sum += power;

      counter += 1;
      seconds += 1;
      if (seconds >= 60) {
        minutes+=1;
        seconds = 0;
      };
      {
                 
         };
                 
              
        voltage_display = voltage_sum/float(counter);
        current_display = current_sum/float(counter);
        power_display = power_sum/float(counter);
        capacity += current_display*window_sec/3600.0;
        voltage_sum = 0.0;
        current_sum = 0.0;
        power_sum = 0.0;
        String seconds_display = String(seconds);
        if (seconds < 10){seconds_display = '0'+seconds_display;};
        String minutes_display = String(minutes);
        if (minutes < 10){minutes_display = '0'+minutes_display;};

        String dataString = minutes_display+":"+seconds_display+"  U= "+String(voltage_display)+"  I= "+String(current_display)+"  P= "+String(power_display)+"  mAh= "+String(capacity);
        dataString.replace(".",",");
        dataString.replace("  ","\t");
        Serial.println(dataString);
        lcd.setCursor(0, 0);
        lcd.print("        ");
        lcd.setCursor(0, 0);
        lcd.print(voltage_display,2);
        lcd.print("V");
        lcd.setCursor(8, 0);
        lcd.print("        ");
        lcd.setCursor(8, 0);
        lcd.print(current_display,0);
        lcd.print("mA");
        lcd.setCursor(0, 1);
        lcd.print("        ");
        lcd.setCursor(0, 1);
        lcd.print(minimal_voltage);
        lcd.print("V");
        lcd.setCursor(8, 1);
        lcd.print("        ");
        lcd.setCursor(8, 1);
        lcd.print(capacity,0);
        lcd.print("mAh");

        counter = 0;
          if (voltage_display <= minimal_voltage) {
            digitalWrite(relay_pin, LOW);
            lcd.setCursor(0, 1);
            lcd.print("        ");
            lcd.setCursor(0, 1);
            lcd.print("OFF");
            working = false;
          };
        };
      delay(10);
      };
  };
  




  

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Tamerlan127, на этом форуме принято помогать только в одном - в обучении.

Если Вы учиться не собираетесь, а Вам просто нужно, чтобы за Вас сделали определенную работу, Вам - в платный раздел "Ищу исполнителя".

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Да чего не помочь то? )

Приделываешь на свободные пины две кнопки. Одна будет уменьшать, другая увеличивать (на какой-то, определенный тобой, шаг) значение переменной minimal_voltage.

Вот собственно и вся реализация. )

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Вот так это выглядит программно (уж склеить во едино, думаю, сам сможешь):

// определим дополнительные переменные
  byte button_up = 10;                     // номер пина, на который подключается кнопка увеличения значения (при нажатии кнопка должна притягиваться к GND)
  byte button_down = 11;                   // номер пина, на который подключается кнопка уменьшения значения (при нажатии кнопка должна притягиваться к GND)
  float voltage_step = 0.1;                // собственно шаг изменения значения minimal_voltage
  float max_value_voltage = 12.0           // максимальное значение, которое может принять переменная minimal_voltage

void setup(){
// эти строки добавить в setup ()
  pinMode(button_up, INPUT_PULLUP);
  pinMode(button_down, INPUT_PULLUP);
}

void loop(){
// эти строки добавить в loop ()
  if (!button_up) {
    minimal_voltage += voltage_step;
    if (minimal_voltage > max_value_voltage) {
      minimal_voltage = max_value_voltage;    // ограничим максимальное значение 
    }
  }
  if (!button_down) {
    minimal_voltage -= voltage_step;
    if (minimal_voltage < 0) {
      minimal_voltage = 0;                    // ограничим минимальное значение
    }
  }
}

Удачи! ))

PS: Но само по себе повышать или того хуже - снижать минимальное напряжение вплоть до нуля  не есть корошо...

Tamerlan127
Offline
Зарегистрирован: 08.09.2019

Спасибо большое за помощь. Собирал я это устройство для разряда  литиевых аккумуляторов, для замера емкости. В процессе эксплуатации появилась необходимость подключения и других аккумуляторов , с большим напряжением. И постоянно подключаться к компу для выставления минимального порога очень неудобно, вот захотелось решить эту задачу путем установки кнопок. минимальное напряжение будет выставляться от 2,8 в до 10,6 вольт. Попробую вечером сделать по предложенному Вами коду , а пока сделал так , что скажете по этому поводу.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <Adafruit_INA219.h>



const int relay_pin = 2;                                        // pin подключения реле                                   
float minimal_voltage = 2.5;                            // минимальное напряжение отключения нагрузки
const int window_sec = 1;                                     //время обновления показаний экрана LCD 

float voltage = 0;
float current = 0;
float power = 0;

float voltage_display = 0.0;
float current_display = 0.0;
float power_display = 0.0;

float voltage_sum = 0.0;
float current_sum = 0.0;
float power_sum = 0.0;

float capacity = 0.0;
float shuntvoltage = 0;
float busvoltage = 0;

int counter = 0;
int seconds = 0;
int minutes = 0;

int up=4;                             // кнопка увеличения
int down=5;                           // кнопка уменьшения
int clean=6;                          // кнопка сброса

boolean working = true;

unsigned long timelastinstance;   
unsigned long now;

                  
LiquidCrystal_I2C lcd(0x27,16,2);        //адрес дисплея
Adafruit_INA219 ina219;


void setup() {
  Serial.begin (9600);
  lcd.init();
  lcd.clear();
  lcd.setBacklight(HIGH);
  pinMode(relay_pin, OUTPUT);
 
  
  ina219.begin();
  shuntvoltage = ina219.getShuntVoltage_mV();
  busvoltage = ina219.getBusVoltage_V();
  voltage = busvoltage + (shuntvoltage / 1000);
  if (voltage > minimal_voltage) {digitalWrite(relay_pin, HIGH);}
  else {working = false; lcd.setCursor(0, 1); lcd.print("OFF");};
  lcd.setCursor(0, 0);
  lcd.print("    BATTERY");
  lcd.setCursor(0, 1);
  lcd.print("TESTER  CHARGER");
  delay (3000);
  lcd.clear();
}

void loop() {
  if (working){
    now = millis();

    if (digitalRead(up)==HIGH)
{
  minimal_voltage+=0.1;                                     // шаг увеличения
  while(digitalRead(up)==HIGH);
  if(minimal_voltage>=11){minimal_voltage=11;}              // максимальный предел
}

    if (digitalRead(down)==HIGH)
{
  minimal_voltage-=0.1;                                     // шаг уменшения
  while(digitalRead(down)==HIGH);
  if(minimal_voltage<=2.5){minimal_voltage=2.5;}            // минимальный предел
}
    


 


          
        
    if ((now - timelastinstance) >= 1000) {
      timelastinstance = now;
      shuntvoltage = ina219.getShuntVoltage_mV();
      busvoltage = ina219.getBusVoltage_V();
      current = ina219.getCurrent_mA();
      power = ina219.getPower_mW();
      voltage = busvoltage + (shuntvoltage / 1000);
      
      voltage_sum += voltage;
      current_sum += current;
      power_sum += power;

      counter += 1;
      seconds += 1;
      if (seconds >= 60) {
        minutes+=1;
        seconds = 0;
      };
      {
                 
         };
                 
              
        voltage_display = voltage_sum/float(counter);
        current_display = current_sum/float(counter);
        power_display = power_sum/float(counter);
        capacity += current_display*window_sec/3600.0;
        voltage_sum = 0.0;
        current_sum = 0.0;
        power_sum = 0.0;
        String seconds_display = String(seconds);
        if (seconds < 10){seconds_display = '0'+seconds_display;};
        String minutes_display = String(minutes);
        if (minutes < 10){minutes_display = '0'+minutes_display;};

        String dataString = minutes_display+":"+seconds_display+"  U= "+String(voltage_display)+"  I= "+String(current_display)+"  P= "+String(power_display)+"  mAh= "+String(capacity);
        dataString.replace(".",",");
        dataString.replace("  ","\t");
        Serial.println(dataString);
        lcd.setCursor(0, 0);
        lcd.print("        ");
        lcd.setCursor(0, 0);
        lcd.print(voltage_display,2);
        lcd.print("V");
        lcd.setCursor(8, 0);
        lcd.print("        ");
        lcd.setCursor(8, 0);
        lcd.print(current_display,0);
        lcd.print("mA");
        lcd.setCursor(0, 1);
        lcd.print("        ");
        lcd.setCursor(0, 1);
        lcd.print(minimal_voltage);
        lcd.print("V");
        lcd.setCursor(8, 1);
        lcd.print("        ");
        lcd.setCursor(8, 1);
        lcd.print(capacity,0);
        lcd.print("mAh");

        counter = 0;
          if (voltage_display <= minimal_voltage) {
            digitalWrite(relay_pin, LOW);
            lcd.setCursor(0, 1);
            lcd.print("        ");
            lcd.setCursor(0, 1);
            lcd.print("OFF");
            working = false;
         
          };
        };
      delay(10);
      };
  };
  

  




  

 

Tamerlan127
Offline
Зарегистрирован: 08.09.2019

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

bwn
Offline
Зарегистрирован: 25.08.2014

Tamerlan127 пишет:

Спасибо большое за помощь. Собирал я это устройство для разряда  литиевых аккумуляторов, для замера емкости. В процессе эксплуатации появилась необходимость подключения и других аккумуляторов , с большим напряжением. И постоянно подключаться к компу для выставления минимального порога очень неудобно, вот захотелось решить эту задачу путем установки кнопок. минимальное напряжение будет выставляться от 2,8 в до 10,6 вольт. 

ИМХО, не самая лучшая и удобная идея. Количество аккумуляторов конечно, сделать массив минимальных значений и перебирать одной кнопкой.

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Tamerlan127 пишет:

Попробую вечером сделать по предложенному Вами коду , а пока сделал так , что скажете по этому поводу.

Мда... Торопился и код не совсем верный привел, вот поправил:

// определим дополнительные переменные
  byte button_up = 10;                     // номер пина, на который подключается кнопка увеличения значения (при нажатии кнопка должна притягиваться к GND)
  byte button_down = 11;                   // номер пина, на который подключается кнопка уменьшения значения (при нажатии кнопка должна притягиваться к GND)
  float voltage_step = 0.1;                // собственно шаг изменения значения minimal_voltage
  float max_value_voltage = 12.0           // максимальное значение, которое может принять переменная minimal_voltage

void setup(){
// эти строки добавить в setup ()
  pinMode(button_up, INPUT_PULLUP);
  pinMode(button_down, INPUT_PULLUP);
}

void loop(){
// эти строки добавить в loop ()
  if (!digitalRead(button_up)) {
    minimal_voltage += voltage_step;
    if (minimal_voltage > max_value_voltage) {
      minimal_voltage = max_value_voltage;    // ограничим максимальное значение 
    }
  }
  if (!digitalRead(button_down)) {
    minimal_voltage -= voltage_step;
    if (minimal_voltage < 2.5) {
      minimal_voltage = 2.5;                    // ограничим минимальное значение
    }
  }
}

Но у тебя фактически та же самая реализация...

Tamerlan127
Offline
Зарегистрирован: 08.09.2019

Да , согласен полностью,  по началу я так и хотел сделать. Но только , если честно не смог определиться с минимальными значениями, и поэтому пока остановился на таком варианте. 

Tamerlan127
Offline
Зарегистрирован: 08.09.2019

Буду пробовать. Спасибо за помощь.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Кнопка сброса, кстати, в тему! Я что-то о ней не подумал...

// определим дополнительные переменные
  byte button_up = 10;                     // номер пина, на который подключается кнопка увеличения значения (при нажатии кнопка должна притягиваться к GND)
  byte button_down = 11;                   // номер пина, на который подключается кнопка уменьшения значения (при нажатии кнопка должна притягиваться к GND)
  byte button_clean = 11;                  // номер пина, на который подключается кнопка сброса значения (при нажатии кнопка должна притягиваться к GND)
  float voltage_step = 0.1;                // собственно шаг изменения значения minimal_voltage
  float max_value_voltage = 12.0           // максимальное значение, которое может принять переменная minimal_voltage

void setup(){
// эти строки добавить в setup ()
  pinMode(button_up, INPUT_PULLUP);
  pinMode(button_down, INPUT_PULLUP);
  pinMode(button_clean, INPUT_PULLUP);
}

void loop(){
// эти строки добавить в loop ()
  if (!digitalRead(button_up)) {
    minimal_voltage += voltage_step;
    if (minimal_voltage > max_value_voltage) {
      minimal_voltage = max_value_voltage;    // ограничим максимальное значение 
    }
  }
  if (!digitalRead(button_down)) {
    minimal_voltage -= voltage_step;
    if (minimal_voltage < 0) {
      minimal_voltage = 0;                    // ограничим минимальное значение
    }
  }
  if (!digitalRead(button_clean)) {
    minimal_voltage = 2.5;                   // сбросим к 2.5 (по умолчанию)
  }
}

 

Tamerlan127
Offline
Зарегистрирован: 08.09.2019

Да хочу сделать сброс , только всего устройства.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

На arduino уже есть кнопка общего сброса. Reset называется.

Tamerlan127
Offline
Зарегистрирован: 08.09.2019

Да, все верно сделаю  как Вы предлагаете , а для сброса устройства использую RESET самой ардуины.

Tamerlan127
Offline
Зарегистрирован: 08.09.2019

Да я знаю , под сбросом всего устройства  я имел ввиду сброс показаний емкости и перезапуск, так как после отключения нужно либо выключить - включить , либо сделать ресет на плате.

ata3d
Offline
Зарегистрирован: 24.05.2017

Если нужны реалистичные фото, нужно использовать белые светодиоды с CRI>93. Из RGB светодиодов, особенно как у вас 5050,  получить белый свет практически нереально и у них низкая светоотдача. То  что у Вас подойдет для спецэффектов, как дополнение.

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

И оксидов титана припудриться не помешает ))))))