NodeMCU Projects

From Network Security Wiki
Revision as of 21:08, 24 January 2018 by Amanjosan2008 (talk | contribs) (→‎NeoPixel: new version)



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 }}