NodeMCU Projects: Difference between revisions
Content added Content deleted
m (Protected "NodeMCU Projects" ([Edit=Allow only logged in users] (indefinite) [Move=Allow only logged in users] (indefinite) [Delete=Allow only logged in users] (indefinite))) |
(→NeoPixel: new version) |
||
Line 66: | Line 66: | ||
import neopixel |
import neopixel |
||
import time |
import time |
||
import urandom |
|||
pin = machine.Pin(14, machine.Pin.OUT) |
pin = machine.Pin(14, machine.Pin.OUT) |
||
np = neopixel.NeoPixel(pin, 16) |
np = neopixel.NeoPixel(pin, 16) |
||
⚫ | |||
return urandom.getrandbits(8) |
|||
def cycle(): |
def cycle(): |
||
for i in range(16): |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
x,y,z = rand(),rand(),rand() |
|||
for i in range(16): |
for i in range(16): |
||
np[i] = ( |
np[i] = (x,y,z) |
||
np.write() |
np.write() |
||
time.sleep_ms(25) |
time.sleep_ms(25) |
||
def circle_rainbow(): |
|||
⚫ | |||
for i in range(16): |
for i in range(16): |
||
np[i] = ( |
np[i] = (rand(),rand(),rand()) |
||
np.write() |
np.write() |
||
time.sleep_ms(25) |
time.sleep_ms(25) |
||
⚫ | |||
⚫ | |||
for i in range(0, 4 * 256, 8): |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
np.write() |
np.write() |
||
⚫ | |||
i += 10 |
|||
⚫ | |||
⚫ | |||
for |
for j in range(16): |
||
if (i // 256) % 2 == 0: |
|||
val = i & 0xff |
|||
else: |
|||
val = 255 - (i & 0xff) |
|||
np[j] = (0, val, 0) |
|||
np.write() |
|||
⚫ | |||
n = np.n |
|||
# cycle |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
# fade in/out |
|||
for i in range(0, 4 * 256, 8): |
for i in range(0, 4 * 256, 8): |
||
for j in range( |
for j in range(16): |
||
if (i // 256) % 2 == 0: |
if (i // 256) % 2 == 0: |
||
val = i & 0xff |
val = i & 0xff |
||
⚫ | |||
val = 255 - (i & 0xff) |
|||
np[j] = (0, 0, val) |
|||
np.write() |
|||
⚫ | |||
for i in range(5): |
|||
x,y,z = rand(),rand(),rand() |
|||
for i in range(4 * 16): |
|||
for j in range(16): |
|||
np[j] = (x,y,z) |
|||
if (i // 16) % 2 == 0: |
|||
np[i % 16] = (0, 0, 0) |
|||
else: |
else: |
||
np[16 - 1 - (i % 16)] = (0, 0, 0) |
|||
np |
np.write() |
||
time.sleep_ms(60) |
|||
# clear |
|||
⚫ | |||
⚫ | |||
⚫ | |||
# Under Construction |
|||
⚫ | |||
pass |
|||
def off(): |
def off(): |
||
Line 140: | Line 151: | ||
np.write() |
np.write() |
||
cycle() |
|||
off() |
|||
time.sleep(1) |
|||
circle() |
|||
off() |
|||
time.sleep(1) |
|||
circle_rainbow() |
|||
off() |
|||
time.sleep(1) |
|||
fade() |
|||
off() |
|||
time.sleep(1) |
|||
bounce() |
|||
off() |
off() |
||
</syntaxhighlight> |
</syntaxhighlight> |
Revision as of 21:08, 24 January 2018
Analog Temperature Meter
Requirements:
DS18B20 Temperature sensor Servo Motor Micropython based NodeMCU
Wiring details:
Servo motor = D4 => GPIO 2 DS18B20 = D7 => GPIO 13
import time
import machine
import onewire, ds18x20
# the device is on GPIO13
dat = machine.Pin(13)
# create the onewire object
ds = ds18x20.DS18X20(onewire.OneWire(dat))
# scan for devices on the bus
roms = ds.scan()
print('found devices:', roms)
# servo is connected to GPIO2
servo = machine.PWM(machine.Pin(2), freq=50)
# Function for mapping range
def translate(value, leftMin, leftMax, rightMin, rightMax):
# Figure out how 'wide' each range is
leftSpan = leftMax - leftMin
rightSpan = rightMax - rightMin
# Convert the left range into a 0-1 range (float)
valueScaled = float(value - leftMin) / float(leftSpan)
# Convert the 0-1 range into a value in the right range.
return rightMin + (valueScaled * rightSpan)
# print all temperatures
while True:
ds.convert_temp()
time.sleep_ms(1000)
for rom in roms:
print(ds.read_temp(rom))
temp = ds.read_temp(rom)
srv = translate(temp, 20, 35, 115, 40)
print(int(srv))
if (temp>=20) & (temp<=35):
servo.duty(int(srv))
else:
print("Out of Range")
NeoPixel
import machine
import neopixel
import time
import urandom
pin = machine.Pin(14, machine.Pin.OUT)
np = neopixel.NeoPixel(pin, 16)
def rand():
return urandom.getrandbits(8)
def cycle():
for i in range(16):
np[i] = (128,0,0)
np.write()
time.sleep_ms(25)
for i in range(16):
np[i] = (0,128,0)
np.write()
time.sleep_ms(25)
for i in range(16):
np[i] = (0,0,128)
np.write()
time.sleep_ms(25)
def circle():
for j in range(10):
x,y,z = rand(),rand(),rand()
for i in range(16):
np[i] = (x,y,z)
np.write()
time.sleep_ms(25)
def circle_rainbow():
for j in range(10):
for i in range(16):
np[i] = (rand(),rand(),rand())
np.write()
time.sleep_ms(25)
def fade():
for i in range(0, 4 * 256, 8):
for j in range(16):
if (i // 256) % 2 == 0:
val = i & 0xff
else:
val = 255 - (i & 0xff)
np[j] = (val, 0, 0)
np.write()
for i in range(0, 4 * 256, 8):
for j in range(16):
if (i // 256) % 2 == 0:
val = i & 0xff
else:
val = 255 - (i & 0xff)
np[j] = (0, val, 0)
np.write()
for i in range(0, 4 * 256, 8):
for j in range(16):
if (i // 256) % 2 == 0:
val = i & 0xff
else:
val = 255 - (i & 0xff)
np[j] = (0, 0, val)
np.write()
def bounce():
for i in range(5):
x,y,z = rand(),rand(),rand()
for i in range(4 * 16):
for j in range(16):
np[j] = (x,y,z)
if (i // 16) % 2 == 0:
np[i % 16] = (0, 0, 0)
else:
np[16 - 1 - (i % 16)] = (0, 0, 0)
np.write()
time.sleep_ms(60)
def off():
for i in range(16):
np[i] = (0,0,0)
np.write()
cycle()
off()
time.sleep(1)
circle()
off()
time.sleep(1)
circle_rainbow()
off()
time.sleep(1)
fade()
off()
time.sleep(1)
bounce()
off()
- References
{{#widget:DISQUS
|id=networkm
|uniqid=NodeMCU Projects
|url=https://aman.awiki.org/wiki/NodeMCU_Projects
}}