code.py
 1  # SPDX-FileCopyrightText: 2018 Kattni Rembor for Adafruit Industries
 2  #
 3  # SPDX-License-Identifier: MIT
 4  
 5  import math
 6  import time
 7  
 8  import adafruit_character_lcd
 9  import board
10  import digitalio
11  import neopixel
12  from analogio import AnalogIn
13  
14  lcd_rs = digitalio.DigitalInOut(board.D5)
15  lcd_en = digitalio.DigitalInOut(board.D6)
16  lcd_d7 = digitalio.DigitalInOut(board.D12)
17  lcd_d6 = digitalio.DigitalInOut(board.D11)
18  lcd_d5 = digitalio.DigitalInOut(board.D10)
19  lcd_d4 = digitalio.DigitalInOut(board.D9)
20  lcd_columns = 16
21  lcd_rows = 2
22  
23  lcd = adafruit_character_lcd.Character_LCD(
24      lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows
25  )
26  
27  potR = AnalogIn(board.A0)  # pot pin for R val
28  potG = AnalogIn(board.A1)  # pot pin for G val
29  potB = AnalogIn(board.A2)  # pot pin for B val
30  pixpin = board.D13  # neopixel pin
31  numpix = 8
32  
33  strip = neopixel.NeoPixel(pixpin, numpix, brightness=0.1)
34  
35  
36  def val(pin):
37      # divides voltage (65535) to get a value between 0 and 255
38      return pin.value / 257
39  
40  
41  while True:
42      strip.fill((int(val(potR)), int(val(potG)), int(val(potB))))
43      # int converts float val to an integer
44  
45      lcd.set_cursor(3, 0)
46      # text at the top of the screen
47      lcd.message('R + G + B =')
48      lcd.set_cursor(2, 1)
49      # str converts float val to a string, trunc removes decimal values
50      lcd.message(str(math.trunc(val(potR))))
51      lcd.set_cursor(6, 1)
52      lcd.message(str(math.trunc(val(potG))))
53      lcd.set_cursor(10, 1)
54      lcd.message(str(math.trunc(val(potB))))
55      time.sleep(0.5)
56      # refreshes screen to send updated values from pots
57      lcd.clear()