【STM32智能车】运行状态

news2024/10/6 10:32:06

【STM32智能车】运行状态

    • 小车状态完整代码

智能车不应该只能前进后退吧,本篇来做其他的小车运行状态。


在这里插入图片描述
想想,一辆车有那些状态呢?前进,后退,左转,右转,停止。之前定义了直行。

def go(speed):    #直行状态                
	ch1.pulse_width_percent(speed)   
	ch2.pulse_width_percent(speed)
	A0(1)            
	A1(0)    #此状态测试A电机正转
	B0(0)
	B1(1)    #此状态B电机正转
  
def back(speed):  #倒车
	ch1.pulse_width_percent(speed)
	ch2.pulse_width_percent(speed)
	A0(0)            
	A1(1)    
	B0(1)
	B1(0)   

可以看到直行和倒退其实就是将电机信号互换
在这里插入图片描述

电机状态表。

A电机引脚停止正转反转
A0010
A1001
B电机引脚停止正转反转
B0001
B1010

备注:电机上有一个“+“号,红线在“+”号上。如果加号上是黑线则把我写的状态翻转一下。

这回我们可以试试定义小车的其他状态,左转,右转

def right(speed):      #右转
	ch1.pulse_width_percent(0)      #A电机不动
	ch2.pulse_width_percent(speed)
	B0(0)
	B1(1)

def left(speed):     #左转
	ch1.pulse_width_percent(speed)
	ch2.pulse_width_percent(0)      #B电机不动
	A0(1)
	A1(0)

一张图就能解释,不多说了。
在这里插入图片描述

小车状态完整代码

包含,前后,左右,停止。

#main.py -- put your code here!

from pyb import Pin, Timer,delay
from time import sleep_us,ticks_us,sleep
cs = Pin('C8',Pin.OUT_PP)    #C8设置为输出引脚输出高电平
cs(1)
ch1 =None
ch2 =None     #初始化
A0= Pin('B12',Pin.OUT_PP)    #右侧马达
A1 = Pin('B13',Pin.OUT_PP)
B0 = Pin('B14',Pin.OUT_PP)    #左侧马达
B1 = Pin('B15',Pin.OUT_PP)

#A电机(右)
p1 = Pin('B8') 
tim1 = Timer(10, freq=120)                  
ch1 = tim1.channel(1, Timer.PWM, pin=p1)
#B电机(左)
p2 = Pin('B9') 
tim2 = Timer(4, freq=120)                  
ch2 = tim2.channel(4, Timer.PWM, pin=p2)

#小车状态
#小车右侧电机接到A处,且电机红线在A0;
#小车左侧电机接到B处,且电机红线在B1
def go(speed):    #直行状态                
	ch1.pulse_width_percent(speed)   
	ch2.pulse_width_percent(speed)
	A0(1)            
	A1(0)    #此状态测试A电机正转
	B0(0)
	B1(1)    #此状态B电机正转
  
def back(speed):  #倒车
	ch1.pulse_width_percent(speed)
	ch2.pulse_width_percent(speed)
	A0(0)            
	A1(1)    
	B0(1)
	B1(0)   

def ztstop(): #停止
	ch1.pulse_width_percent(0)
	ch2.pulse_width_percent(0)
	
def right(speed):      #右转
	ch1.pulse_width_percent(0)      #A电机不动
	ch2.pulse_width_percent(speed)
	B0(0)
	B1(1)

def left(speed):     #左转
	ch1.pulse_width_percent(speed)
	ch2.pulse_width_percent(0)      #B电机不动
	A0(1)
	A1(0)
	
while True:         #调用
	go(50)		#括号里参数为数字0~100 PWM占空比

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/718249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab|改进的粒子群算法优化支持向量机(回归拟合)

作者在前面的文章中介绍了粒子群算法的原理及其2种改进算法,本文将基于这三种优化方法,应用于支持向量机进行预测,并对比改进算法与标准粒子群算法的预测性能,结果显示改进后的方法能够得到更佳的预测效果。 00 文章目录 1 支持…

Jenkins持续集成,在Linux中安装最新版Jenkins(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 去年从6月28日发布…

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(7 月 3 日论文合集)

文章目录 一、分割|语义相关(4篇)1.1 SPAE: Semantic Pyramid AutoEncoder for Multimodal Generation with Frozen LLMs1.2 Achieving RGB-D level Segmentation Performance from a Single ToF Camera1.3 Topological Data Analysis Guided Segment Anything Model Prompt Op…

C++笔记之各种sleep方法总结

C笔记之sleep总结 —— 2023年4月9日 小问 上海 code review 文章目录 C笔记之sleep总结1.std::this\_thread::sleep\_for()附:std::this\_thread::sleep\_for(std::chrono::duration) 2.std::this\_thread::sleep\_until()附:std::this\_thread::sleep\…

c# 与单片机之间 float与byte的相互转化

该章作为 串口调试助手及结构体的收发的补充,主要用于自定义协议中的负数,浮点数等的收发(我们以前用的浮点数等,是直接使用的字符串的收发,从字符串中进行解析的,这里主要使用十六进制,对其收发原理及使用操作进行剖析)。 虚拟串口调试助手 一般来说,电脑的外部设备…

杂记 | 使用keycloak实现SSO单点登录(新手向,概念、原理、逻辑、详细步骤、难点解释)

文章目录 01 单点登录的概念02 keycloak的中的相关概念2.1 概念之间的关系2.2 案例说明 03 如何使用keycloak实现单点登录3.1 步骤与效果说明3.2 环境说明 04 操作步骤4.1 在服务器上创建并启动keycloak服务4.2 创建一个领域4.3 创建一个客户端4.4 获取客户端适配器配置4.5 创建…

C. Logo Turtle (DP,思维)

传送门 题意: 给一个含有T、F的字符串,T表示转向,F表示前进1格。现在可以把其中的T改为F,或F改为T,改变n次(可重复改变某一位置的字母),问相对于起点最远能走多远。 思路&#xff…

quilt data 安装 数据包 框架

安装 Quilt 有两个用户可见的组件: 一个 Python 客户端一个 Web 目录 Python 客户端 需要 Python 3.7 或更高版本。 $ pip install quilt3[pyarrow]Mental Model Quilt 数据包的思维模型 Quilt 将数据集表示为数据包。一个数据包是一个不可变的相关文件集合&a…

Redis的主从复制、哨兵、cluster集群

Redis 主从复制 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务…

JAVA关于多线程的学习

1.创建线程的方法(这里不考虑继承Thread类) 通过实现Runnable接口的方式实现 public class MyRunnable implements Runnable{Overridepublic void run() {for (int i 0; i < 5; i) {System.out.println(Thread.currentThread().getName()"执行了....");}} }pub…

基于.Net Core微服务-第1章:说明及技术栈

微服务是一种架构模式&#xff0c;提倡将单一应用程序划分为一组小的服务&#xff0c;服务相互协调、互相配合&#xff0c;为用户提供最终价值。

vulnhub-ripper(易)

打靶练习Ripper&#xff0c;这是一个中低的靶场 0x00 部署0x01 信息收集&#xff1a;端口扫描、服务发现0x02路径扫描0x03 总结 0x00 部署 靶机&#xff1a;下载地址 宿主机&#xff1a;kali2021版本 0x01 信息收集&#xff1a;端口扫描、服务发现 sudo arp-scan -l #探测存…

【每日随笔】摩托车驾驶 ④ ( 德州增驾摩托车 D 本记录 | 考场位置 “ 德州市公安局交警支队直属四大队车辆管理所 “ )

文章目录 一、进入考场二、科目一三、科目二1、推车 ( 找准车辆停放位置 )2、上车前检查 ( 开始考试前准备 )3、科目二考试开始4、科目二路线要求5、坡起6、绕桩7、单边桥 四、科目三教学1、推车 ( 找准车辆停放位置 )2、上车前检查 ( 开始考试前准备 )3、科目三考试开始4、科目…

NSS [SWPUCTF 2021 新生赛]Do_you_know_http

NSS [SWPUCTF 2021 新生赛]Do_you_know_http 先看题目&#xff0c;应该是伪造XFF&#xff0c;UA等东西。 postman一把梭。

Bootloader Design of PIC18 series MCU

注意&#xff1a;下列描述是在PIC单片机上启用Bootloader的一个相关知识的近似完备集。所有需要了解的&#xff0c;bootloader与用户态程序交互的理论知识都已给出。 1.概述 嵌入式产品化后&#xff0c;需要考虑现场升级&#xff0c;单片机如果需要添加现场升级功能&#xff…

linux+win——嵌套虚拟机性能测试

参考博文&#xff1a;CSDN-Violent-Ayang&#xff08;作者&#xff09;-UNIX BENCH详细安装及使用步骤 unix bench wget http://175.6.32.4:88/soft/test/unixbench/unixbench-5.1.2.tar.gz tar -xzvf unixbench-5.1.2.tar.gz cd unixbench-5.1.2 vim Makefile # 将 Makefile 中…

虹科方案 | Redis Enterprise:适用于任何企业的矢量数据库解决方案

用户希望他们遇到的每个应用程序和网站都具有搜索功能。然而&#xff0c;超过80%的业务数据是非结构化的&#xff0c;以文本、图像、音频、视频或其他格式存储。因此&#xff0c;我们需要一种跨非结构化数据的搜索方式。 什么是矢量数据库&#xff08;vector database&#xff…

【自动化测试教程】 —— pytest 框架详解 ~

pytest框架 特点: 容易上手, 入门简单, 文档丰富, 文档中有很多参考案例支持简单的单元测试和复杂的功能测试支持参数化执行测试用例过程中, 支持跳过操作支持重复失败的case支持运行Nose, unittest编写测试用例pytest支持很多第三方插件方便和持续集成工具集成 1. pytest断…

如何搭建独享的IP代理池?

随着互联网技术的日趋成熟&#xff0c;爬虫已经成为一种常见的数据获取方法。在采集业务中&#xff0c;建立本地IP代理池是非常重要的。今天将与您探讨IP代理池的选择以及如何搭建独享的IP代理池。 独享IP代理池是指由客户单独使用的IP池&#xff0c;优点是客户可以享受池中所…

关于opencv中cv2.imread函数读取的图像shape问题

图像坐标系是&#xff08;w,h&#xff09;,w为x轴&#xff0c;h为y轴,(x,y) 但opencv读出来的数组却正好相反&#xff0c;是&#xff08;h,w,3&#xff09;,(y,x,3) 所以这里会有一个转换 image cv2.imread(1.jpg) print(image.shape[0:2]) ##输出&#xff08;365,500&#x…