Bir ortamda ki ışık miktarını arduino ile ölçebilirsiniz. TSL2561 Digital Light Sensor ışık seviyesini ölçmenize yarıyor. Bu sensörün 7 dolar gibi bir ücreti var. Arduino uno başlangıç olarak yeterli olacaktır. Bir el feneri yardımıyla veya başka bir ışık kaynağını sensör üzerine getirerek ışığın seviyesini artırarak ölçüm yapabilirsiniz.

Sensör içerisinde photodiyot bulunuyor. Bunun sayesinde analog olarak değerleri arduinoya aktarabiliyor. Biraz kodları kurcalamayla diğer mikroişlemcilere de uygulayabilirsiniz. Arduino ile bir çok sensör çok rahatlıkla kullanılıyor. Ayrıca burda ki kodları anlayarak lcdnin çalışma mantığını anlayabilirsiniz.

light meter

Malzemeler:

Arduino uno

TSL2561 Digital light sensörü

16×2 LCD

LCD I2C / SPI Backpack

LightMeterSchematic

Arduino uno launchpad üzerinden beslemeyi alabilirsiniz ayrıca, diğer bağlantıları da kolayca launchpad üzerinden yapabilirsiniz bu size kolaylık sağlayacaktır. TSL2561 sadece 4 bacağını kullanacağız diğer 2 bacağı işimize yaramayacak. ADOR ve INT bacaklarını kullanmanıza gerek yok.

 

 

 

 

 

 

LightMeterStep2

İlk önce ışık sensörünün bağlantılarını yapalım.

  • Sensör GND pini – siyah kablo – Arduino gnd pini
  • Sensör VCC pini – sarı kablo – Arduino 3.3v pini
  • Sensör SCL pini – yeşi kablo– Arduino analog pin 5 (i2c clock)
  • Sensör SDA pini – mavi kablo – Arduino analog pin 4 (i2c data)

 

 

 

 

 

LightMeterStep3

LCD bağlantılarına gelirsek

  • LCD GND pin – siyah kablo – Arduino grnd pin
  • LCD 5V pin – kırmızı kablo – Arduino A5V pin
  • LCD LAT pin – turuncu kablo – Arduino digital pin 4 (SPI latch pin)
  • LCD  DAT pin – mavi kablo – Arduino digital pin 3 (SPI data pin)
  • LCD CLK pin – yeşil kablo – Arduino digital pin 2 (SPI clock pin)

Güncel kodları bu siteden bulabilirsiniz.

https://github.com/dmalec/I2C-Light-Meter

#include "Wire.h"
#include "LiquidCrystal.h"
#include "TSL2561.h"

// SPI bağlantısı. Data pin  #3, Clock  #2 ve Latch  #4
LiquidCrystal lcd(3, 2, 4);

//! i2c ışık sensörü için
TSL2561 tsl(TSL2561_ADDR_FLOAT);

//! LCD ye ışık değerlerini yazdırıyoruz
char output_buffer[6];

void setup() {
// Seri bağlantının ayarlanması
Serial.begin(9600);
Serial.println(F("Serial initialized"));

// LCD Ayarları
lcd.begin(16, 2);
Serial.println(F("LCD initialized"));
lcd.setBacklight(HIGH);

// Ekrana yazdırılacak çizgi
lcd.setCursor(0, 0);
lcd.print(F("Vis:"));

// Alt çizgi ayarları
lcd.setCursor(0, 1);
lcd.print(F("Lux:"));

//Işık sensörü ayarları
if (tsl.begin()) {
Serial.println(F("Sensor initialized"));
} else {
Serial.println(F("Sensor failed to initialize"));
}

// Işık sensörü kazanç ayarları
tsl.setGain(TSL2561_GAIN_0X);

//Işık sensörü zaman ayarlı
tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS);

// Düşük ışık için yapılacak ayarlar
// tsl.setGain(TSL2561_GAIN_16X);
// tsl.setTiming(TSL2561_INTEGRATIONTIME_402MS);
}

//! Ana döngü.
void loop() {

uint32_t full_luminosity = tsl.getFullLuminosity();
uint16_t ir_spectrum = full_luminosity >> 16;
uint16_t full_spectrum = full_luminosity & 0xFFFF;

// Üst çizgide başlangıç
lcd.setCursor(5, 0);

// Program hafızasından yazdırılacak formatı
snprintf_P(output_buffer, 6, PSTR("%5d"), (full_spectrum - ir_spectrum));

// Ekrana Yazdır
lcd.print(output_buffer);

//Alt satır
lcd.setCursor(5, 1);

//Ekrana yazdırılacak yazının formatı
snprintf_P(output_buffer, 6, PSTR("%5d"), tsl.calculateLux(full_spectrum, ir_spectrum));

// Ekrana yazdır
lcd.print(output_buffer);

// Bekleme süresi 0.5sn.
delay(500);
}

Bu da videosu

6 YORUMLAR

  1. ıyı gunler ben ısık şiddeti ölçer arduınoyla yazılım ve poteustakı ve 7 segmentlı dısplayde gostermemız ıstıyor hoca yardımcı olsanız cok sevınırım ve ayrıca dısardan gırılen herhangı bır bılgının ossıloskopta goruntuleyecek bununda arduınoyla ve preteousta sadece bun larda yardımcı olsanız cok sevınırım acıl lazım okulun son sınıf bıtırme ıcın