from machine import Pin, ADC, Timer, SoftI2C
from ssd1306 import SSD1306_I2C
from neopixel import NeoPixel
import time
#定义OLED对象
i2c = SoftI2C(sda=Pin(14),scl=Pin(12))
oled = SSD1306_I2C(128, 64, i2c, addr = 0x3c)
#定义光线传感器对象
light = ADC(Pin(4))
light.width(ADC.WIDTH_12BIT)
light.atten(ADC.ATTN_11DB)
#定义红绿蓝三种颜色
RED = (255 ,174, 201)
GREEN = (194, 255, 179)
BLUE = (153, 217, 234)
NONE = (0, 0, 0)
#定义灯环对象
pin = Pin(23, Pin.OUT)
np = NeoPixel(pin, 16)
def ADC_TEST(tim):
def show1(color):
i = 1
while i <= 15:
np[i] = color
np.write()
time.sleep_ms(100)
i += 2
def show2(color):
i = 0
while i <= 15:
np[i] = color
np.write()
time.sleep_ms(100)
i += 2
def show3(color):
i = 0
while i <= 15:
np[i] = color
np.write()
time.sleep_ms(100)
i += 1
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:
show1(RED)
if 1365<value<=2730:
show2(GREEN)
if 2730<value<=4095:
show3(BLUE)
oled.show()
tim = Timer(1)
tim.init(period=300,mode=Timer.PERIODIC,callback=ADC_TEST)