IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> openmv扫码控制步进电机,模拟一种无接触式电梯 -> 正文阅读

[嵌入式]openmv扫码控制步进电机,模拟一种无接触式电梯

目录

前言

一、材料

二、接线?

三、二维码制作

?四、openmv代码



前言

学校开了门openmv的课,最后要做个东西算最后成绩。一开始准备做个基于openmv的手势识别电梯的,模型啥的都做好了最后导出时发现Edge里面没openmv了,没办法就做了一个二维码控制的了


一、材料

1.openmv(我的是openmv4要做手势识别要openmv4plus)

2.两相四线步进电机

3.THB6128步进电机驱动

步进电机驱动说明

4.电源


二、接线

?

?1.A+-、B+-连接步进电机四根线(一般红蓝为一组),VG、VM连接电源(我用了USB-TTL接了一块充电宝)

?2.驱动板连接openmv,DIR+-分别接P2P3,CP+-分别接P7P8


三、二维码制作

制作二维码

我这里是制作完二维码后图方便将四个二维码放在了一个app里

对应APK文件

APP源码

?四、openmv代码

话不多说直接上代码

# 电机驱动板输出PWM例程
#
# 此示例显示如何控制OpenMV Cam上的电机扩展板。
# 通过使用PYB模块控制电机扩展板,可以通过PWM控制速度并设置数字I/O引脚状态。
# 电机扩展板需要6个I/O引脚用于两个电机。

import pyb,sensor, image
import time
from pyb import UART

uart = UART(3, 4800)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA) # can be QVGA on M7...
sensor.skip_frames(30)
sensor.set_auto_gain(False) # must turn this off to prevent image washout...

# 这些引脚控制我们的方向,而下面的其他PWN引脚控制速度。
# 每个电机的方向由H桥设置,其中A0/1是一个H桥驱动器的两侧。 B0/1是另一个H桥。
pinADir0 = pyb.Pin('P3', pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)
pinADir1 = pyb.Pin('P2', pyb.Pin.OUT_PP, pyb.Pin.PULL_NONE)


# 对于向前或向后操作,Dir0/1必须彼此不相等。如果它们相等则那就是刹车操作。
# 如果它们不相等,则电机将以另一个方式旋转,这取决于它的连接和dir 0的值。
pinADir0.value(0)
pinADir1.value(1)

# 对于向前或向后操作,Dir0/1必须彼此不相等。如果它们相等则那就是刹车操作。
# 如果它们不相等,则电机将以另一个方式旋转,这取决于它的连接和dir 0的值。


# 创建一个以1KHz运行的定时器对象,它将为我们的OpenMV Cam上的PWM输出供电。
# 只需要创建一次。
tim = pyb.Timer(4, freq=1000)

# 使用timer对象在OpenMV Cam上创建两个PWM输出。这些定时器控制电机的速度。
# 您将在循环中重复设置这些定时器的PWM百分比。
chA = tim.channel(1, pyb.Timer.PWM, pin=pyb.Pin("P7"))
chB = tim.channel(2, pyb.Timer.PWM, pin=pyb.Pin("P8"))
num=0
floor=0
while (True):
    img = sensor.snapshot()
    img.lens_corr(1.8)
    for code in img.find_qrcodes():
        output_str="%s" % code.payload()
        num=output_str
       #output_str为二维码内容
        print(num)

    if(num=="1"):
        uart.write("1")
        #for i in range(50):
            #pyb.delay(50)
            #chA.pulse_width_percent(i)
            #chB.pulse_width_percent(49-i)
            #print(i)
        #print("--------------------------")

        #for i in range(50):
            #pyb.delay(50)
            #chA.pulse_width_percent(49-i)
            #chB.pulse_width_percent(i)


        if(floor==0):
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)
        if(floor==2):
            pinADir0.value(1)
            pinADir1.value(0)
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

        if(floor==3):
            pinADir0.value(1)
            pinADir1.value(0)
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

        if(floor==4):
            pinADir0.value(1)
            pinADir1.value(0)
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)
        floor=1
        pinADir0.value(0)
        pinADir1.value(1)
        num=0

    if(num=="2"):
        uart.write("2")
        if(floor==4):
            pinADir0.value(1)
            pinADir1.value(0)
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

        if(floor==3):
            pinADir0.value(1)
            pinADir1.value(0)
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

        if(floor==1):
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)
        if(floor==0 ) :
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)


            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)
        num=0
        floor=2
        pinADir0.value(0)
        pinADir1.value(1)

    if(num=="3"):
        uart.write("3")
        if (floor==0):
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------1")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------2")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------3")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)


        if (floor==1):
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------1")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------2")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

        if (floor==2):
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------1")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

        if (floor==4):
            pinADir0.value(1)
            pinADir1.value(0)
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------1")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

        num=0
        floor=3
        pinADir0.value(0)
        pinADir1.value(1)
    if(num=="4"):
        uart.write("4")
        if (floor==0):
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------1")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------2")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------3")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------4")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

        if (floor==1):
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------1")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------2")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------3")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

        if (floor==2):
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------1")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------1")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

        if (floor==3):
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(i)
                chB.pulse_width_percent(49-i)
                print(i)
            print("--------------------------1")
            for i in range(50):
                pyb.delay(50)
                chA.pulse_width_percent(49-i)
                chB.pulse_width_percent(i)

        num=0
        floor=4
    #for i in range(100):
        #pyb.delay(100)
        #chA.pulse_width_percent(99-i)
        #chB.pulse_width_percent(i)

?哈哈,代码有点low,欢迎大家多多来交流交流

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-11 00:00:59  更:2021-09-11 00:01:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:22:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码