from machine import Pin, ADC, Timer, SoftI2C
from ssd1306 import SSD1306_I2C
from neopixel import NeoPixel
import time
i2c = SoftI2C(sda = Pin(14), scl = Pin(12))
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)#定义OLED对象
#定义光线传感器对象
light = ADC(Pin(4))
light.width(ADC.WIDTH_12BIT)
light.atten(ADC.ATTN_11DB)
#定义红绿蓝三种颜色
RED = (255,0,0)
GREEN = (0,255,0)
BLUE = (0,0,255)
NONE = (0,0,0)
#定义灯环对象
pin = Pin(23, Pin.OUT)
np = NeoPixel(pin, 16)
def ADC_Test(tim):
def show(color):
i = 0
while i <= 15:
np[i] = color
np.write()
time.sleep_ms(100)
i += 2
oled.fill(0)
value = light.read()
oled.text(str(value),0,40)
oled.text(str('%.2f'%(value/4095*3.3)),0,55)
oled.text('v',40,50)
if 0<value<=1365:
show(RED)
if 1365<value<=2730:
show(GREEN)
if 2730<value<=4095:
show(BLUE)
oled.show()
tim = Timer(1)
tim.init(period=300,mode=Timer.PERIODIC,callback=ADC_Test)