# https://wokwi.com/makers/cyborne
import dht
import neopixel
from machine import Pin, ADC
from utime import sleep
import random
btn1 = Pin(2, Pin.IN, Pin.PULL_UP)
btn2 = Pin(15, Pin.IN, Pin.PULL_UP)
nl1 = 16
nl2 = 32
leds1 = neopixel.NeoPixel(Pin(18), nl1)
leds2 = neopixel.NeoPixel(Pin(5), nl2)
pot1 = ADC(Pin(14))
pot2 = ADC(Pin(12))
pot3 = ADC(Pin(13))
sense = dht.DHT22(Pin(27))
#convert
def convert(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min
for c in range(1):
print(c, convert(c, 0, 4096, 0, 16))
while True:
for l in range(17):
#temp & hum
sense.measure()
hum = sense.humidity()
temp=sense.temperature()
print(f" Vlaga: {sense.humidity()}%, Temperatura: {sense.temperature()}°C")
h = convert(hum, -80,100,0,10)
t = convert(temp,-100,80,0,10)
#speed
pot = ADC(Pin(4))
pot_value = pot.read()
num_led=convert(pot_value,0,4095,0,(7))
speed = ((num_led)+0.5)/10
if speed < 0.1:
speed = 0.005
#color
b1=(pot1.read())//16
b2=(pot2.read())//16
b3=(pot3.read())//16
# btn reverse
btnState1 = not bool(btn1.value())
btnState2 = not bool(btn2.value())
#main code
if btnState1 == False:
leds1.fill([0,0,0])
for i in range(l):
leds1[i]=([b1,b2,b3])
x = i
if x == 15:
for e in range(16):
leds1[e]=([b1,b2,b3])
leds1.write()
sleep(speed)
leds1.fill([0,0,0])
leds1.write()
sleep(speed)
for e in range(16):
leds1[e]=([b1,b2,b3])
leds1.write()
sleep(speed)
leds1.fill([0,0,0])
else:
leds1.fill([0,0,0])
for i in range(l):
on = i
leds1[-on] = ([b1,b2,b3])
#blink
x = i
if x == 15:
for e in range(16):
leds1[e]=([b1,b2,b3])
leds1.write()
sleep(speed)
leds1.fill([0,0,0])
leds1.write()
sleep(speed)
for e in range(16):
leds1[e]=([b1,b2,b3])
leds1.write()
sleep(speed)
leds1.fill([0,0,0])
#temp & hum led rings
for the in range(nl2):
if the<16:
leds2[the]=([0,0,25*int(h)])
leds2.write()
if the>=16:
leds2[the]=([25*int(t),0,0])
leds2.write()
leds1.write()
sleep(speed)