▷ 사용부품
1. 아두이노 프로 마이크로(Atmega32U4 5V 16MHz)
2. 디지털 조도센서 모듈 GY-30 (BH1750FVI)
3. 아두이노 0.91인치 128x32 OLED 4핀 I2C 모듈
▷ 인용한 프로젝트
https://create.arduino.cc/projecthub/alankrantas/ardumeter-arduino-incident-light-meter-606f63
- 지인요청으로 아두이노 프로 마이크로에 조도센서와 0.91" OLED를 I²C로 연결해 셔터속도 측정 모듈을 만들어 봄.
- 기초는 위 링크의 소스에서 모듈 사용에 대한 코드분석을 한 후 불필요한 부분을 걷어냄.
- 프로그래머는 아니라 소스를 수정하는 선에서 기능상 구동은 함(부끄럽지만 공유_소스아래에 ino 파일 링크).
/* ------------------------------
https://create.arduino.cc/projecthub/alankrantas/ardumeter-arduino-incident-light-meter-606f63
ArduMeter (Arduino incident light meter) version 2
by Alan Wang
Ardumeter V2에 사용된 구성이 목적에 맞아 가져와서 수정함.
OLED와 BH1750외에는 모두 제거했고, 최종 처리는 루프문에 의해 폴링됨.
정밀한 시간측정이 최우선이라 BH1750도 저해상도 고속모드(0.016ms)로 설정.
코드 전체에 delay()를 사용하지 않았고, 동작도 문제없음.
Arduino Pro micro(5V)
BH1750/BH1750FVI digital light intensity sensor:
Library: https://github.com/claws/BH1750
VCC -> 3.3V
GND -> GND
SDA -> pin 2 (pin A4)
SCL -> pin 3 (pin A5)
ADD -> (none)
Full mode list:
BH1750_CONTINUOUS_LOW_RES_MODE
BH1750_CONTINUOUS_HIGH_RES_MODE (default)
BH1750_CONTINUOUS_HIGH_RES_MODE_2
BH1750_ONE_TIME_LOW_RES_MODE
BH1750_ONE_TIME_HIGH_RES_MODE
BH1750_ONE_TIME_HIGH_RES_MODE_2
0.96" SSD1306 OLED 128x64 display:
Library: https://github.com/greiman/SSD1306Ascii
VCC -> 3.3V
GND -> GND
SDA -> pin 2 (pin A4)
SCL -> pin 3 (pin A5)
------------------------------ */
#include <Wire.h>
#include <BH1750.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"
BH1750 lightMeter(0x23);
SSD1306AsciiAvrI2c oled;
float lux;
unsigned long current_ms = 0;
unsigned long measure_ms = 0;
void setup() {
// initialize serial port
Serial.begin(9600);
Wire.begin();
// begin returns a boolean that can be used to detect setup problems.
if (lightMeter.begin(BH1750::CONTINUOUS_LOW_RES_MODE)) {
Serial.println(F("BH1750 Advanced begin"));
} else {
Serial.println(F("Error initialising BH1750"));
}
// initialize OLED
oled.begin(&Adafruit128x32, 0x3c);
oled.setFont(System5x7);
oled.set2X();
oled.clear();
oled.println(" ArduMeter");
oled.print(" millisec..");
}
void loop() {
lux = lightMeter.readLightLevel();
current_ms = millis();
while (lux > 50) {
lux = lightMeter.readLightLevel();
measure_ms = current_ms;
if (lux < 50) {
current_ms = millis();
oled.clear();
oled.println(" ArduMeter");
oled.print(" ");
oled.print(current_ms-measure_ms);
oled.print("ms");
break;
}
}
}
여튼,
이렇게 테스트해서 완성하고..
케이스 모델링하고, 출력... (STL 파일 아래에 링크)
잘 됨! 끝~
'창고 > D.I.Y' 카테고리의 다른 글
18650충전지로 스트로브 외장배터리 팩을 디-아이-와이 (3) | 2016.02.20 |
---|---|
아이폰 마이크에 오디오 녹음하기 (2) | 2014.07.05 |
아이폰용 외장마이크 만들어보기 (2) | 2013.08.17 |
모니터 DIY 계획 대폭 간편화로 수정~ :) (4) | 2012.03.27 |
모니터...그까이꺼 대~~~충 그냥 나사 몇개 조여주면 되는거이지뭐~~어~~~ (4) | 2012.02.01 |
안성댁~ 안성맞춤! /ㅡ_-)/ 답배갑 독~ (4) | 2011.02.15 |