ESP32(MicroPython) MeARm双超声波传感器交互+RGB灯

本程序通过超声波传感器进行MeArm的人机交互,其中一个超声波传感器用于实现机械臂跟随目标前后移动,另一个用于控制机械臂转动。

更新:昨天出现疑似开发板故障,今天发现是MicroPython固件(本人使用的版本是1.19.1)bug,并且要拔掉所有线重新上电才能恢复,请使用相同版本固件的ESP32-S2用户不要使用本程序,其它开发板以及不同版本固件的用户可以尝试移植。

代码如下

'''
  舵机1-->(17)
  舵机2-->(16)
  舵机3-->(22)
  (Trig)-->(5)
  (Echo)-->(18)
'''

#导入Pin模块
from machine import Pin
import time
from servo import Servo
from machine import Timer
from hcsr04 import HCSR04
from neopixel import NeoPixel
import random

#定义HCSR04控制对象
hcsr04=HCSR04(trigger_pin=5, echo_pin=18)
hcsr04A=HCSR04A(trigger_pin=14, echo_pin=9)
#定义SG90舵机控制对象
servo1 = Servo(Pin(17))
servo2 = Servo(Pin(16))
servo3 = Servo(Pin(22))
#定义RGB控制对象
#控制引脚为13,RGB灯串联5个
pin=13
rgb_num=5
rgb_led=NeoPixel(Pin(pin,Pin.OUT),rgb_num)  

a=90
b=0
c=100
g=0
servo1.write_angle(a)
servo2.write_angle(160)
servo3.write_angle(c)
#定时器0中断函数
def time0_irq(time0):
    global a
    global b
    global c
    global g
    distance=hcsr04.distance_cm()//1
    if distance>15 and c<=180:  #机械臂跟随操作者
        c+=1
        servo3.write_angle(c)
    if distance<15 and c>=25:
        c-=1
        servo3.write_angle(c)
    if distance>30 : #暂停交互
        b=2
        c=100
        servo3.write_angle(c)
    if distance<20 and b==2: #恢复交互
        b=0    
    distanceA=hcsr04A.distance_cm()//1
    if distanceA>30 : #切换转向方向
        if b==0 :
            b=1
        if b==1 :
            b=0
    if distanceA<15 : #机械臂转向
        if b==0 and a>0:
            a-=1
            servo1.write_angle(a)
        if b==1 and a<180:
            a+=1
            servo1.write_angle(a)    
    g+=1
    if g==10 : #每10个周期RGB灯随机变色
        g=0
        for i in range(rgb_num):
            d=random.randint(0,255)
            e=random.randint(0,255)
            f=random.randint(0,255)
            rgb_led[i]=(d, e, f)
            rgb_led.write()     
        
#程序入口
if __name__=="__main__":
    time0=Timer(0)  #创建time0定时器对象
    time0.init(period=30,mode=Timer.PERIODIC,callback=time0_irq)
    while True:
        pass

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路易斯720

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值