2021年1月24日 星期日

類比實作Part6 – UV sensor

 

類比實作Part6 – UV sensor

 

UV sensor模組

參考 https://electronics.stackexchange.com/questions/345984/how-could-i-amplify-the-output-from-this-uv-photodiode-sensor

 

電路圖

 

UV Index

參考 https://wiki.dfrobot.com/UV_sensor_SKU__SEN0162

 

程式列表

Blockly

 

 

 

 

 

 


Python

from machine import ADC

from machine import LED

from machine import KEY

import utime

 

sensorValue = None

sensorVoltage = None

UV_Index = None

adc_1 = None

ledRgb = None

key_0 = None

 

 

ledRgb = LED(LED.RGB)

adc_1 = ADC(1)

key_0 = KEY(0)

while True:

  sensorValue = adc_1.read()

  sensorVoltage = (sensorValue * 3300) / 1024

  if sensorVoltage < 50:

    UV_Index = 0

    ledRgb.rgb_write(1,0,0,0)

    ledRgb.rgb_write(2,0,0,0)

    ledRgb.rgb_write(3,0,0,0)

  elif sensorVoltage < 227:

    UV_Index = 1

    ledRgb.rgb_write(1,0,153,0)

    ledRgb.rgb_write(2,0,153,0)

    ledRgb.rgb_write(3,0,0,0)

  elif sensorVoltage < 318:

    UV_Index = 2

    ledRgb.rgb_write(1,0,153,0)

    ledRgb.rgb_write(2,0,0,0)

    ledRgb.rgb_write(3,0,0,0)

  elif sensorVoltage < 408:

    UV_Index = 3

    ledRgb.rgb_write(1,255,255,102)

    ledRgb.rgb_write(2,255,255,102)

    ledRgb.rgb_write(3,255,255,102)

  elif sensorVoltage < 503:

    UV_Index = 4

    ledRgb.rgb_write(1,255,255,102)

    ledRgb.rgb_write(2,255,255,102)

    ledRgb.rgb_write(3,0,0,0)

  elif sensorVoltage < 606:

    UV_Index = 5

    ledRgb.rgb_write(1,255,255,102)

    ledRgb.rgb_write(2,0,0,0)

    ledRgb.rgb_write(3,0,0,0)

  elif sensorVoltage < 696:

    UV_Index = 6

    ledRgb.rgb_write(1,255,102,0)

    ledRgb.rgb_write(2,255,102,0)

    ledRgb.rgb_write(3,0,0,0)

  elif sensorVoltage < 795:

    UV_Index = 7

    ledRgb.rgb_write(1,255,102,0)

    ledRgb.rgb_write(2,0,0,0)

    ledRgb.rgb_write(3,0,0,0)

  elif sensorVoltage < 881:

    UV_Index = 8

    ledRgb.rgb_write(1,255,0,0)

    ledRgb.rgb_write(2,255,0,0)

    ledRgb.rgb_write(3,255,0,0)

  elif sensorVoltage < 976:

    UV_Index = 9

    ledRgb.rgb_write(1,255,0,0)

    ledRgb.rgb_write(2,255,0,0)

    ledRgb.rgb_write(3,0,0,0)

  elif sensorVoltage < 1079:

    UV_Index = 10

    ledRgb.rgb_write(1,255,0,0)

    ledRgb.rgb_write(2,0,0,0)

    ledRgb.rgb_write(3,0,0,0)

  else:

    UV_Index = 11

    ledRgb.rgb_write(1,204,51,204)

    ledRgb.rgb_write(2,204,51,204)

    ledRgb.rgb_write(3,204,51,204)

  print(''.join([str(x) for x in ['sensor reading = ', sensorValue, ', sensor voltage = ', sensorVoltage, 'mV', ', UV index = ', UV_Index]]))

  if (key_0.value()) == 0:

    break

 

  utime.sleep_ms( 500 )

adc_1.deinit()

ledRgb.off()

key_0.deinit()