/* http://www.bristolwatch.com/arduino/arduino_tsl230r.htm TSL230R Light to Frequency Converter and Arduino Lewis Loflin lewis@bvu.net This code comes with no warrenty */ /* Program 1 Make sure these libraries are present. This uses an I2C LCD display. */ #include #include #include LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 #define S0 11 #define S1 12 #define S2 5 #define S3 6 #define pulsePin 4 unsigned long pulseCount; unsigned int val; void setup() { lcd.init(); // initialize the lcd lcd.backlight(); // Serial.begin(9600); pinMode(S0, OUTPUT); // to S0 pinMode(S1, OUTPUT); // to S1 pinMode(pulsePin, INPUT); // freq input pinMode(S2, OUTPUT); // to S2 pinMode(S3, OUTPUT); // to S3 /* set sensitivity S1 S0 sensitivity L L power down L H 1X H L 10X H H 100X Higher sensitivity creates higher frequency out. */ digitalWrite(S1, 1); digitalWrite(S0, 1); /* Frequency divide S3 S2 (divide-by) L L 1 L H 2 H L 10 H H 100 */ digitalWrite(S3, 1); digitalWrite(S2, 1); } // end setup void loop() { pulseCount = pulseIn(pulsePin, HIGH); val = pulseCount * 2; // get the period // play with 900000 for better accuracy val = 900000 / val; lcd.print("Freq = "); lcd.print(val); lcd.println(" Hz "); delay(500); // lcd.clear(); lcd.home(); } // end loop