Here you go. This ran fine until I hit the reset button. Then I had to hit it 6 times to get it running again. It only requires the neopixel.py library.
It will print to the console, cpus[0] and cpus[1] temperatures and fade to a new random color in the neopixel every second.
Bruce
Code: Select all
#
# ********** QT Py RP2040 **********
# adafruit-circuitpython-adafruit_qtpy_rp2040-en_US-6.2.0.uf2
# Internal Library
import os
import rtc
import time
import board
import busio
import random
from digitalio import DigitalInOut, Direction, Pull
import microcontroller
from microcontroller import pin
# External Library( /lib/ )
import neopixel
########################################
# Factory Reset: #
# import storage #
# storage.erase_filesystem() #
########################################
print("Program START! QT Py RP2040")
print(" os.name: ", end="")
print(os.uname)
print(" cpus[0].temperature: ", end="")
print(microcontroller.cpus[0].temperature)
print(" cpus[0].frequency: ", end="")
print(microcontroller.cpus[0].frequency)
print(" cpus[1].temperature: ", end="")
print(microcontroller.cpus[1].temperature)
print(" cpus[1].frequency: ", end="")
print(microcontroller.cpus[1].frequency)
print(" cpu.id: ", end="")
print(microcontroller.cpu.uid)
print(" cpu.voltage: ", end="")
print(microcontroller.cpu.voltage)
print("")
time.sleep(2) # Show GREEN LED if we are good
DoW = ("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday")
months = ("Null", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December")
print(microcontroller.cpus[0].temperature, microcontroller.cpus[0].temperature*1.8+32)
print(microcontroller.cpus[1].temperature, microcontroller.cpus[1].temperature*1.8+32)
global OldRed
global OldGreen
global OldBlue
OldRed = 0
OldGreen = 0
OldBlue = 0
x = 0
NUM_PIXELS = 1 # if =1 use onboard NeoPixel
if(NUM_PIXELS == 1): # NEOPIXEL Internal NeoPixel
STRING = board.NEOPIXEL #
ORDER = neopixel.GRB # Neo_1=Green, Neo_2=Red, Neo_3=Blue R&G reversed
BRIGHTNESS = 0.10 #
Neo_1_Max = 150 # Green
Neo_2_Max = 50 # Red
Neo_3_Max = 250 # Blue
else: # RX External NeoPixel(s)
STRING = board.RX #
ORDER = neopixel.RGB # Neo_1=Red, Neo_2=Green, Neo_3=Blue R&G normal
BRIGHTNESS = 0.25 #
Neo_1_Max = 250 # Red
Neo_2_Max = 250 # Green
Neo_3_Max = 250 # Blue
print(STRING, NUM_PIXELS, ORDER)
# pixelString = neopixel.NeoPixel(board.NEOPIXEL, NUM_PIXELS, bpp=3, brightness=BRIGHTNESS, auto_write=True, pixel_order=ORDER)
pixelString = neopixel.NeoPixel(STRING, NUM_PIXELS, bpp=3, brightness=BRIGHTNESS, auto_write=False, pixel_order=ORDER)
RED_led = DigitalInOut(board.TX)
RED_led.direction = Direction.OUTPUT
RED_led.value = False
print(microcontroller.pin.GPIO11)
#################################################
#################################################
def port_info():
board_pins = []
for pin in dir(microcontroller.pin):
if isinstance(getattr(microcontroller.pin, pin), microcontroller.Pin):
pins = []
for alias in dir(board):
if getattr(board, alias) is getattr(microcontroller.pin, pin):
pins.append("board.{}".format(alias))
if len(pins) > 0:
board_pins.append(" ".join(pins))
for pins in sorted(board_pins):
print(pins)
#################################################
def fillStringRandom(NewRed, NewGreen, NewBlue):
# NewRed = random.randint(0, 255)
# NewGreen = random.randint(0, 255)
# NewBlue = random.randint(0, 255)
for x in range(NUM_PIXELS):
pixelString[x] = ((NewRed, NewGreen, NewBlue))
pixelString.show()
RED_led.value = not RED_led.value
#################################################
def fadeRandomColors(NewRed, NewGreen, NewBlue):
global OldRed
global OldGreen
global OldBlue
# print(OldRed, OldGreen, OldBlue)
# print(NewRed, NewGreen, NewBlue)
while True:
delta = 0
if(NewRed != OldRed):
delta = NewRed - OldRed
delta = delta/(abs(delta))
OldRed = OldRed + delta
if(NewGreen != OldGreen):
delta = NewGreen - OldGreen
delta = delta/(abs(delta))
OldGreen = OldGreen + delta
if(NewBlue != OldBlue):
delta = NewBlue - OldBlue
delta = delta/(abs(delta))
OldBlue = OldBlue + delta
pixelString[x] = ((OldRed, OldGreen, OldBlue))
pixelString.show()
time.sleep(0.001)
if(delta == 0):
break
OldRed = NewRed
OldGreen = NewGreen
OldBlue = NewBlue
RED_led.value = not RED_led.value
return(OldRed, OldGreen, OldBlue)
#################################################
#################################################
if True:
port_info()
#################################################
if True:
print("Random colors")
while True:
time.sleep(1)
# Jj = time.monotonic() #######
CPU_Temp = microcontroller.cpus[0].temperature
print(" CPU0 Temperature: {:02.6}*C\t{:02.6}*F".format(CPU_Temp, CPU_Temp*1.8+32))
CPU_Temp = microcontroller.cpus[1].temperature
print(" CPU1 Temperature: {:02.6}*C\t{:02.6}*F".format(CPU_Temp, CPU_Temp*1.8+32))
NewRed = random.randint(0, 255)
NewGreen = random.randint(0, 255)
NewBlue = random.randint(0, 255)
if(NUM_PIXELS == 1):
fadeRandomColors(NewRed, NewGreen, NewBlue)
else:
time.sleep(0.2)
fillStringRandom(NewRed, NewGreen, NewBlue)
# fillStringRandom(NewRed, NewGreen, NewBlue)
print("")
# print(time.monotonic() - Jj) #######
NewRed = random.randint(0, 255)
NewGreen = random.randint(0, 255)
NewBlue = random.randint(0, 255)
if(NUM_PIXELS == 1):
fadeRandomColors(NewRed, NewGreen, NewBlue)
else:
time.sleep(0.2)
fillStringRandom(NewRed, NewGreen, NewBlue)
# While End
#################################################
print("The End")
#################################################