Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menggunakan sensor APDS untuk mengukur tingkat intensitas cahaya atau bisa juga untuk pengukur jarak, alat ini dipantau secara online dengan menggunakan Blynk sehingga jarak bisa jauh. untuk lebih jelasnya berikut adalah program dan daftar komponennya.
a. Wemos Mini
b. Sensor APDS9930
c. Led
d. Program Arduino IDE
#define BLYNK_PRINT Serial
#define DUMP_REGS
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <Wire.h>
#include <APDS9930.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
// Global Variables
APDS9930 apds = APDS9930();
float ambient_light = 0; // can also be an unsigned long
uint16_t ch0 = 0;
uint16_t ch1 = 1;
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "hgfjhfEJDGjghgjhgjfuouiosreawhvjhvmnbkjhkjhk";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "myhotspotku";
char pass[] = "123456789";
SimpleTimer timer;
void sendSensor()
{
Blynk.virtualWrite(V5, ambient_light);
}
void setup()
{
pinMode(D8,OUTPUT);
pinMode(D7,OUTPUT);
pinMode(D6,OUTPUT);
pinMode(D5,OUTPUT);
Serial.begin(9600);
Serial.println();
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, sendSensor);
// Initialize APDS-9930 (configure I2C and initial values)
if ( apds.init() )
{
Serial.println(F("APDS-9930 initialization complete"));
}
else
{
Serial.println(F("Something went wrong during APDS-9930 init!"));
}
// Start running the APDS-9930 light sensor (no interrupts)
if ( apds.enableLightSensor(false) )
{
Serial.println(F("Light sensor is now running"));
}
else
{
Serial.println(F("Something went wrong during light sensor init!"));
}
// Wait for initialization and calibration to finish
delay(500);
}
void loop()
{
// Read the light levels (ambient, red, green, blue)
if ( !apds.readAmbientLightLux(ambient_light) ||
!apds.readCh0Light(ch0) ||
!apds.readCh1Light(ch1) ) {
Serial.println(F("Error reading light values"));
}
else
{
Serial.print(F("Intensitas: "));
Serial.println(ambient_light);
if((ambient_light > 0)&&(ambient_light < 30)){
digitalWrite(D8,HIGH);
digitalWrite(D7,LOW);
digitalWrite(D6,LOW);
digitalWrite(D5,LOW);
}
if((ambient_light > 30)&&(ambient_light < 60)){
digitalWrite(D8,LOW);
digitalWrite(D7,HIGH);
digitalWrite(D6,LOW);
digitalWrite(D5,LOW);
}
if((ambient_light > 60)&&(ambient_light < 100)){
digitalWrite(D8,LOW);
digitalWrite(D7,LOW);
digitalWrite(D6,HIGH);
digitalWrite(D5,LOW);
}
if(ambient_light > 100){
digitalWrite(D8,LOW);
digitalWrite(D7,LOW);
digitalWrite(D6,LOW);
digitalWrite(D5,HIGH);
}
}
Blynk.run();
timer.run();
delay(200);
}
e. VIDEO HASILNYA