Люксметр (измеритель освещенности) из китайского плеера

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Давно я ничего нового и рабочего и удовлетворяющего меня не делал. Исправляюсь).

Была давняя идея сделать люксметр, и удачно нашел на али комактный калиброванный датчик BH1750. Также на форуме есть тема про китайский плеер, позволяющий из него что то собрать, так как уже и либа для дисплея есть (но об этом позже). И мне захотелось скрестить их: дисплей, ардуину, датчик и конечно все на питании от встроенного в плеер аккумулятора.

Собственно получилось вот что:

Компактный люксметр в корпусе плеера.

Характеристики определяются датчиком, а он может измерять освещенность от 1 до 65535 люкс.

Кстати есть еще один датчик на али TSL2561, но я его похоже потерял или где то лежит в куче других деталей в куче коробок. По характеристикам пишут что он лучше, так и не проверил(.

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

По сборке: никакой схемы у меня нет . Просто я ее не делал, но самую главную инфу я сохранил:

Я покупал плеер у этого продавца. Почему я специально дал ссылку: да просто в данном корпусе минимум 2 варианта платы плеера, а контакты куда провода подпаивать буду давать по фото своего плеера.

Маленькое замечание по плееру: я оставил родную схему зарядки, а она никакая и легко убивает аккумулятор, я забыл снять с зарядки и аккумулятор вздулся. Аккумулятор в утиль, снял с другого плеера, хорошо купил два, второй кстати такой, и в него ардуина не влезет, придется делать плату свою. Так к сведенью.

Сборка:

1. Плеер аккуратно разобрать, все детали сохранить! Они вам еще пригодятся.

2. Выпаять родной контроллер, разъем 3.5мм (для наушников), разъем для карты памяти, светодиод фонарика. Скажу честно я разъемы тупо вырвал, но не советую так делать. Аккумулятор временно отпаять.

3. Нужна Ардуино про мини, у меня 5В 16мгц только была, но она успешно работает и от 3.3В и разумеется переходник USB-UART на 3.3В. Я использовал такой с переключателем 3.3-5В. Сильно подорожал, много вариантов дешевле.

4. Нужен тонкий провод. У меня МГТФ диаметр не помню, но толстый для этой задачи, с трудом засунул, берите сразу максимально тонкий 

И собственно фото с нужными контактами:

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

Да и конечно код. Его можно оформить в библиотеку и т.д. Ах да чуть не забыл. Для этого дисплея есть 2 библиотеки ST7765 и Dogm. Dogm я так и не запустил, а вот с ST7765 помучался.

Я планировал пойти простым путем и использовать шрифты 16*32 из хронографа и используя фукнцию либы для вывода картинки вывести на дисплей. Но не тут то было. Если в нуле по оси Y выводить все вроде нормально, но стоит попробовать приподнять начинается такое: разрывы символов(часть снизу часть сверху) и так далее. Победить не удалось. Они зачем то видеобуфер распилили на полосы и по странному алгоритму расположили, думаю отсуда получились мои разорванные символы. Это мое предположение.  Пришлось на основе кода от хронографа, а точнее либы для дисплея 1202 сделать либу для ST7765, точнее код. Я удалил многие тригонометрические функции чтобы не мешали править код, но добавить их не проблема, тупо копипаст из хронографа и будет работать, все названия функций одинаковые.

Собственно код, он у меня разбит как в хронографе по файлам, но думаю будет понятно. Компилировал в ардуино 1.6.12. Так к сведенью.

Luxmeter_mod2.ino

#include <avr/pgmspace.h>
#define pgm     pgm_read_byte
#include <Wire.h>
#include <BH1750.h>


BH1750 lightMeter;
unsigned int lux;


#define CS      10
#define Data    11
#define Clock   13
#define DC      A0

#define LCD_X        128
#define LCD_Y        64
#define LCD_String    8
#define swap(a, b) { int t = a; a = b; b = t; }

#define LCD_D         1
#define LCD_C         0

byte LCD_RAM[LCD_X*LCD_String];

#define BLACK 1
#define WHITE 0

#define LCDWIDTH 128
#define LCDHEIGHT 64

#define CMD_DISPLAY_OFF   0xAE
#define CMD_DISPLAY_ON    0xAF

#define CMD_SET_DISP_START_LINE  0x40
#define CMD_SET_PAGE  0xB0

#define CMD_SET_COLUMN_UPPER  0x10
#define CMD_SET_COLUMN_LOWER  0x00

#define CMD_SET_ADC_NORMAL  0xA0
#define CMD_SET_ADC_REVERSE 0xA1

#define CMD_SET_DISP_NORMAL 0xA6
#define CMD_SET_DISP_REVERSE 0xA7

#define CMD_SET_ALLPTS_NORMAL 0xA4
#define CMD_SET_ALLPTS_ON  0xA5
#define CMD_SET_BIAS_9 0xA2 
#define CMD_SET_BIAS_7 0xA3

#define CMD_RMW  0xE0
#define CMD_RMW_CLEAR 0xEE
#define CMD_INTERNAL_RESET  0xE2
#define CMD_SET_COM_NORMAL  0xC0
#define CMD_SET_COM_REVERSE  0xC8
#define CMD_SET_POWER_CONTROL  0x28
#define CMD_SET_RESISTOR_RATIO  0x20
#define CMD_SET_VOLUME_FIRST  0x81
#define  CMD_SET_VOLUME_SECOND  0
#define CMD_SET_STATIC_OFF  0xAC
#define  CMD_SET_STATIC_ON  0xAD
#define CMD_SET_STATIC_REG  0x0
#define CMD_SET_BOOSTER_FIRST  0xF8
#define CMD_SET_BOOSTER_234  0
#define  CMD_SET_BOOSTER_5  1
#define  CMD_SET_BOOSTER_6  3
#define CMD_NOP  0xE3
#define CMD_TEST  

Font.ino

//цифры размером 16х32 пикселей
static const char mass16x32 [10][64] PROGMEM ={
{   0xF8, 0xFC, 0xFA, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //0
    0x3F, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x3F,
    0xFE, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFE,
    0x1F, 0x3F, 0x5F, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F},

{   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xF8, //1
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x1F},

    {0x00, 0x00, 0x02, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //2
    0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBF, 0x7F, 0x3F,
    0xFE, 0xFF, 0xFE, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
    0x1F, 0x3F, 0x5F, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x40, 0x00, 0x00},

    {0x00, 0x00, 0x02, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //3
    0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBF, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x40, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F},

    {0xF8, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFC, 0xF8, //4
    0x3F, 0x7F, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBF, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x1F},

    {0xF8, 0xFC, 0xFA, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x02, 0x00, 0x00, //5
    0x3F, 0x7F, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x40, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F},

    {0xF8, 0xFC, 0xFA, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x02, 0x00, 0x00, //6
    0x3F, 0x7F, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
    0xFE, 0xFF, 0xFE, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x1F, 0x3F, 0x5F, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F},

    {0x00, 0x00, 0x02, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //7
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x1F},

    {0xF8, 0xFC, 0xFA, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //8
    0x3F, 0x7F, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBF, 0x7F, 0x3F,
    0xFE, 0xFF, 0xFE, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x1F, 0x3F, 0x5F, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F},

    {0xF8, 0xFC, 0xFA, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xFA, 0xFC, 0xF8, //9
    0x3F, 0x7F, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBF, 0x7F, 0x3F,
    0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0xFF, 0xFE,
    0x00, 0x00, 0x40, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x5F, 0x3F, 0x1F}};

LCD.ino

//========================================================================
//                        Графические функции
//========================================================================
/*
  Clear_LCD();
  Update();
  fillScreen(color);
  drawPixel (x, y, color);
  drawChar(x, y, color, char c);
  drawString(x, y, color, char *str);
  drawLine(x0, y0, x1, y1, color);
  drawFastVLine(x, y, h, color);
  drawFastHLine(x, y, w, color);
  drawRect(x, y, w, h, color);
  drawCircle(x0, y0, r, color);
  drawRoundRect(x, y, w, h, r, color);
  drawTriangle(x0, y0, x1, y1, x2, y2, color);
  drawCircleHelper(x0, y0, r, cornername, color);

  fillCircle(x0, y0, r, color);
  fillCircleHelper(x0, y0, r, cornername, delta, color);
  fillRect(x, y, w, h, color);
  fillRoundRect(x, y, w, h, r, color);
  fillTriangle(x0, y0, x1, y1, x2, y2, color);

  drawBitmap(x, y, const uint8_t *bitmap, w, h, boolean color);
*/

//======================================================Очистка дисплея
void Clear_LCD() {
  for (int index = 0; index < 864 ; index++) {
    LCD_RAM[index] = (0x00);
  }
}

//=======================================================Управление пинами
void dWrite(byte pin, byte val) {
  byte bit = digitalPinToBitMask(pin);
  volatile byte *out;
  out = portOutputRegister(digitalPinToPort(pin));
  (val) ? *out |= bit : *out &= ~bit;
}

#define _BV(bit) (1<<(bit))
//=========================================================Отправка 9 байт
void SendByte(byte mode, byte c) {
  dWrite(CS, 0);
  (mode) ? dWrite(DC, 1) : dWrite(DC, 0);
  for (byte i = 0; i <8; i++) {
    dWrite(Clock, 0);
    (c & 0x80) ? dWrite(Data, 1) : dWrite(Data, 0);
    dWrite(Clock, 1);
    c <<= 1;
  }
}

//=====================================================Обновить дисплей
void Update() {
  for (byte p = 0; p < 8; p++) {
    //SendByte(LCD_C, CMD_SET_PAGE | pagemap[p]);
    SendByte(LCD_C, CMD_SET_PAGE | p);

    byte col = 0;

    SendByte(LCD_C, CMD_SET_COLUMN_LOWER | (1 & 0xf));
    SendByte(LCD_C, CMD_SET_COLUMN_UPPER | ((1 >> 4) & 0x0F));
    SendByte(LCD_C, CMD_RMW);

    for (byte col = 0; col < LCD_X; col++) {
      SendByte(LCD_D, LCD_RAM[(LCD_X * p) + col]);
    }
  }
}


//===================================================Нарисовать пиксель
void drawPixel (byte x, byte y, boolean color) {
  if ((x < 0) || (x >= LCD_X) || (y < 0) || (y >= LCD_Y)) return;

  if (color) LCD_RAM[x + (y / 8)*LCD_X] |= _BV(y % 8);
  else       LCD_RAM[x + (y / 8)*LCD_X] &= ~_BV(y % 8);
}

//======================================================Вывод картинки
void drawBitmap(byte x, byte y, const char *bitmap, byte w, byte h, boolean color) {
  for (int16_t j = 0; j < h; j++) {
    for (int16_t i = 0; i < w; i++ ) {
      if (pgm(bitmap + i + (j / 8)*w) & _BV(j % 8)) {
        drawPixel(x + i, y + j, color);
      }
    }
  }
}

//========================================================================
//                        Управление дисплеем
//========================================================================




//===================================================Инициализация дисплея
void Inicialize() {
  pinMode(CS,    OUTPUT);
  pinMode(Data,  OUTPUT);
  pinMode(Clock, OUTPUT);
  pinMode(DC, OUTPUT);

  // Инициализация дисплея
  dWrite(CS, 0);
  delay(500);

  SendByte(LCD_C, CMD_SET_BIAS_7);              // LCD bias select
  SendByte(LCD_C, CMD_SET_ADC_NORMAL);          // ADC select
  SendByte(LCD_C, CMD_SET_COM_REVERSE);          // SHL select
  SendByte(LCD_C, CMD_SET_DISP_START_LINE);     // Initial display line
  SendByte(LCD_C, CMD_SET_POWER_CONTROL | 0x4); // turn on voltage converter (VC=1, VR=0, VF=0)
  delay(50);
  SendByte(LCD_C, CMD_SET_POWER_CONTROL | 0x6); // turn on voltage regulator (VC=1, VR=1, VF=0)
  delay(50);
  SendByte(LCD_C, CMD_SET_POWER_CONTROL | 0x7); // turn on voltage follower (VC=1, VR=1, VF=1)
  delay(10);
  SendByte(LCD_C, CMD_SET_RESISTOR_RATIO | 0x6); // set lcd operating voltage (regulator resistor, ref voltage resistor)

  SendByte(LCD_C, CMD_DISPLAY_ON);
  SendByte(LCD_C, CMD_SET_ALLPTS_NORMAL);

  SendByte(LCD_C, CMD_SET_DISP_REVERSE);

  SendByte(LCD_C, CMD_SET_VOLUME_FIRST);
  SendByte(LCD_C, CMD_SET_VOLUME_SECOND | (0 & 0x3f));

  Clear_LCD();
  Update();
}

//=========================Вывод символа 16х32 пикселя в координаты XY
void simb16x32(byte x, byte y, boolean color, byte c) {
  for (byte k = 0; k < 4; k++) {
    for (byte i = 0; i < 16; i++) {
      byte line = pgm(&(mass16x32[c][i + k * 16]));
      for (byte j = 0; j < 8; j++) {
        (line & 0x01) ? drawPixel(x + i, y + j + k * 8, color) : drawPixel(x + i, y + j + k * 8, !color);
        line >>= 1;
      }
    }
  }
}

Main.ino

void setup(){
  Inicialize();
  lightMeter.begin();
}
+
void loop(){
  lux = lightMeter.readLightLevel();
  simb16x32(95,  17, 1, lux%10);
  lux/=10;
  simb16x32(75,  17, 1, lux%10);
  lux/=10;
  simb16x32(55,  17, 1, lux%10);
  lux/=10;
  simb16x32(35,  17, 1, lux%10);
  lux/=10;
  simb16x32(15,  17, 1, lux%10);

  Update();
  delay(300);
}

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Видео будет позже

админ пожалуйста поменяй картинки местами какие разъемы удалять

bodriy2014
bodriy2014 аватар
Offline
Зарегистрирован: 12.05.2015

Привет!

Классно получилось, ждем видео!!!

 

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Интересно получилось. Подпишусь.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

спасибо. отредактирую видео и может вечером выложу

bpl
Offline
Зарегистрирован: 15.02.2016

jeka_tm  а +  в  Main.ino нужен или нет. – 05 строка.

Скетч скомпилировался в IDE  Arduino  1.8.1.  закомментировав +  в  Main.ino. В железе проверить быстро не смогу. Плеер есть, датчика пока нет.

(Компилировал из интереса компиляции целого кода из нескольких .ino файлов вроде разобрался – получилось.)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

нет конечно. случайно видно нажал

a5021
Offline
Зарегистрирован: 07.07.2013

Какие-то не очень приятные ощущения у меня от этого BH1750. Располагаю двумя экземплярами, купленными в разное время и у разных продавцов на али. Оба демонстрируют несколько странное поведение. При выборе разных разрешений (режимы High Resolution Mode и High Resolution Mode 2), показатели освещенности разые, при неизменном положении самого датчика и источника освещения. При заявленной производителем точности измерений в 1 и 0.5 процента для этих режимов соответвенно, имею, например, 12 lux в режиме HiRes и не сходя с места тут же 60 lux в режиме HiRes2. Разница в пять раз как-то не сильно располагает к доверию, что внутри датчика где-то действительно обитает точность с допуском 0.5 - 1 процент.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну это и не точный измерительный прибор. это как у нас на работе: изредка мне нужен штангельциркуль, и он имеется. но когда отк пристает ко мне что нужно поверить, я говорю это просто индикатор и поверка не нужна)) на полгода отстают

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Замечательное изготовление, примите мои поздравления.

Тут уже был автор, который делал люксометр на каком-то тоже калиброванном датчике. Ваше изделие меня интересует с теми же целями: калибровка, пусть хотя бы сильно примерная моих поделок датчиков освещенности на базе TSC3200 ..

Соответственно к Вам просьба тоже (предыдущий автор отказался проводить экспермент):

Возьмите обыкновенную настольную лампу, вкрутите в неё лампочку на 40вт, и в полной темноте или "почти полной" измерьте уровень освещенности листа белой бумаги такой лампой при условии: лампа светит поперпендикулярно листу с расстояния 0.5м.; датчик освещенности расположен как можно перпендикулярнее листа на расстоянии 0.5м. (исключить засветку от лампы напрямую!)

Что покажет ваш калиброванный датчик?

В.2: положить на стол датчик и посветить на него той же лампой 40вт перпендикулярно с расстояния 1метр ровно и тоже исключая сторонние засветки.

Заранее спасибо.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

спасибо. да могу. а нужно именно 40вт? у меня ни одной лампы накаливания. люминесцентные только 

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Да, нужна именно лампа накаливания. 40вт просто диапазон "удобный", но можно и 60вт, дальше будет не так интересно.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну нет у меня ламп накаливания

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013
enjoyneering
enjoyneering аватар
Offline
Зарегистрирован: 05.09.2016

рекомендую попробовать вот эту библиотеку. больше полета для творчества и раскрывает весь потенциал датчика. подробности тут.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

a5021
Offline
Зарегистрирован: 07.07.2013

enjoyneering пишет:

рекомендую попробовать вот эту библиотеку. больше полета для творчества и раскрывает весь потенциал датчика. подробности тут.

Нет у него никакого потенциала. Весьма посредственный датчик. А если время экспозиции менять, то и точности никакой уже не будет.

NST
Offline
Зарегистрирован: 04.06.2016

Прошу извинить за поднятие темы, хочу поделиться фоткой для подключения Arduino на плеере который попался мне (заказывал в сентябре 2017 на Ali у Da Da Electronic):

Пины для подключения Arduino (люксметр)

На 9 пин не обращайте внимания, захотел регулировать яркость подсветки через ШИМ

Датчик взял немного другой (MAX44009), но скетч остался почти без изменений, только скачал библиотеку отсюда, в файлах C:\Users\имя\Documents\Arduino\libraries\MAX44009-master\MAX44009.h и MAX44009.cpp закомментрировал использование шины I2C и раскомментрировал Wire.h. Работает :)

jeka_tm, спасибо вам за интересную разработку! Этот плеер с дисплеем настоящая находка для подобных проектов)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Поздравляю) Так ты получается родной микроконтроллер не выпаивал?

NST
Offline
Зарегистрирован: 04.06.2016

Спасибо!

Не, это просто так получилось на фото, потом конечно выпаял микросхему и SD

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Не, так даже понятнее. У меня труднее понять

Я кстати заказал еще пару плееров по 129 рублей, так на всякий случай, но немного в другом корпусе

NST
Offline
Зарегистрирован: 04.06.2016

Тоже видел в таком корпусе, но побоялся сильных отличий на плате (в итоге они все равно попались).
Добавлю лот в избранное, может разместите потом на Ali фото платы вместе с отзывом? жаль, что на форуме нет личных сообщений

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

хорошо и туда и сюда если не забуду

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Как обещал

NST
Offline
Зарегистрирован: 04.06.2016

Спасибо за фото, в целом детальки такие же, выводы только придется выискивать. Взял на заметку :)