最近,网上也是出现了一种神奇的盒子——无聊的盒子,我将用esp32和python来编译出来。
代码如下:
from machine import Pin
import time
#左反右正+限位开关
motor_1 = Pin(14, Pin.OUT)
motor_2 = Pin(27, Pin.OUT)
KXW1 = Pin(12, Pin.IN,Pin.PULL_UP)
KXW2 = Pin(13, Pin.IN,Pin.PULL_UP)
while True:#死循环
KXW1_state = KXW1.value()
KXW2_state = KXW2.value()
# 如果开关打开,电机正转
if KXW2_state == 0:
motor_1.value(1)
motor_2.value(0)
# 如果开关关闭,反转电机
else:
motor_1.value(0)
motor_2.value(1)
if KXW1_state == 1:
motor_1.value(0)
motor_2.value(0)
我自己也升级了它,让它有了性格。
from machine import Pin, PWM, Timer
import time
import _thread
import machine
import random
pin0 = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_UP)
LED = machine.Pin(2,machine.Pin.OUT)
dj0 = PWM(Pin(27))
dj1 = PWM(Pin(14))
def waitdi(a,b):
k=Pin(a, Pin.IN, Pin.PULL_UP)
aa=~b
while aa!=b:
bb=k.value()
if bb!=aa:
time.sleep_ms(10)
bb=k.value()
if bb!=aa:
aa=bb
time.sleep_ms(10)
def djyz(zx,zs):#电机运转函数(电机转向: “zz” “fz” “st”,电机转速0-1023)
if zx=="zz":
dj0.duty(zs)
dj1.duty(0)
if zx=="fz":
dj1.duty(zs)
dj0.duty(0)
if zx=="st":
dj1.duty(1023)
dj0.duty(1023)
n=0
while True:
waitdi(16,1)
djyz("st",800)
print("waitdi...")
waitdi(16,0)
djyz("zz",1000)
print("14on")
waitdi(16,1)
djyz("fz",1000)
print("14off")
waitdi(18,1)
print("32on")
djyz("st",800)
n+=1
print(n)
if n == 5:
state = random.randint(1,2) #当拨动达到5次时,随机在两个情绪中选择,1为sad,2为angry
if state == 1:
print("sad")
time.sleep(2)
djyz("zz",900)
time.sleep(1)
djyz("fz",900)
time.sleep(2)
djyz("zz",900)
time.sleep(0.5)
djyz("fz",900)
djyz("zz",900)
waitdi(16,1)
djyz("fz",1000)
waitdi(18,1)
djyz("st",800)
if state == 2:
for i in range(5):
print("angry")
djyz("zz",1000)
waitdi(16,1)
djyz("fz",1000)
waitdi(18,1)
djyz("zz",1000)
time.sleep(0.25)
n=0