from machine import Pin, ADC , I2C
from ssd1306 import SSD1306_I2C
import time
from time import sleep
#OLED config
WIDTH =128
HEIGHT= 64
i2c=I2C(0,scl=Pin(1),sda=Pin(0),freq=200000)
oled = SSD1306_I2C(WIDTH,HEIGHT,i2c)
volt = 3.30
lux = 50.00
ldrValue = ADC(27)
redLED = Pin(16, Pin.OUT)
greenLED = Pin (15, Pin. OUT)
MAX_ADC_READING = 65535;
ADC_REF_VOLTAGE = 3.3;
REF_RESISTANCE = 50;
LUX_CALC_SCALAR = 12518931;
LUX_CALC_EXPONENT = -1.405;
while True:
rawData = ldrValue.read_u16()
print(f"Raw data: {rawData}")
resistorVoltage = rawData / MAX_ADC_READING * ADC_REF_VOLTAGE;
print(f"Resistor voltage: {resistorVoltage}")
ldrVoltage = ADC_REF_VOLTAGE - resistorVoltage;
print(f"LDR voltage: {ldrVoltage}")
ldrVoltagepercent = ldrVoltage*100 / ADC_REF_VOLTAGE
print(f"ldrVoltage Percent:%.2f" %ldrVoltagepercent)
oled.fill(0)
oled.text(f"Raw data: {rawData}", 0,0)
oled.text(f"Resistor voltage: {resistorVoltage}",0,15)
oled.text(f"LDR voltage: {ldrVoltage}" ,0,30)
oled.text(f"ldrVoltage Percent:%.2f" %ldrVoltagepercent, 0,45)
if ldrVoltagepercent > 30 :
redLED.value(0)
greenLED.value(1)
oled.text("GREEN LED ON",0,60)
else:
redLED.value(1)
greenLED.value(0)
oled.text("RED LED ON",0,60)
oled.show()
time.sleep(2)Loading
ssd1306
ssd1306