GIỚI THIỆU VỀ CẢM BIẾN ÁNH SÁNG BH1750FVI VÀ CÁCH LẬP TRÌNH
Giới thiệu
hôm nay mình sẽ hướng dẩn các bạn cách làm cảm biến đo cường độ ánh sáng BH1750FVI cùng arduino.
cảm biến đo cường độ ánh sáng BH1750FVI, là cảm biến ánh sáng có bộ chuyển đổi AD 16 bit tích hợp trong chip cà có thể suất ra trực tiếp dữ liệu theo dạng digital. cảm biến không cần bộ tính toán cường độ ánh sáng khác...
Các thiết bị càm chuẩn bị
- 1 arduino uno
- ! cảm biến bh1750fvi
- dây nối
- cổng com noi từ arduino uno nối vào máy tinh
- điện áp làm việc: 3.3-5v
- giao tiếp chuẩn I2C
- Phạm vi đo rộng va độ phân giải cao (1~65.535 lx)
- kết quả đo có thể thay đổi đo cường độ sáng (có thể phát hiện từ 0.11 lx, đến 100000 lx) (1~63.535 lx)
- sự ảnh hưởng của tia hồng ngoại rất là nhỏ
- kích thước (L x W) 3.2cm x 1.5cm
Lắp mạch
Lập trình
/*- sample code for the BH1750 light sensor
- Version 0.1
- website:www.DFRobot.com
- Connection:
- VCC-5V
- GND-GND
- SCL-SCL(analog pin 5)
- SDA-SDA(analog pin 4)
- ADD-NC
- */
- #include <Wire.h>
- int BH1750address = 0x23; //setting i2c address
- byte buff[2];
- void setup()
- {
- Wire.begin();
- Serial.begin(57600);//init Serail band rate
- }
- void loop()
- {
- int i;
- uint16_t val=0;
- BH1750_Init (BH1750address);
- delay(200);
- if (2==BH1750_Read(BH1750address))
- {
- val=((buff[0]<<8)|buff[1])/1.2;
- Serial.print(val,DEC);
- Serial.println("[lx]");
- }
- delay(150);
- }
- int BH1750_Read(int address) //
- {
- int i=0;
- Wire.beginTransmission(address);
- Wire.requestFrom(address, 2);
- while(Wire.available()) //
- {
- buff[i] = Wire.read(); // receive one byte
- i++;
- }
- Wire.endTransmission();
- return i;
- }
- void BH1750_Init(int address)
- {
- Wire.beginTransmission(address);
- Wire.write(0x10);//11x reolution 120ms
- Wire.endTransmission();
- }
Không có nhận xét nào:
Đăng nhận xét