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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 制作可以用航模遥控器遥控的ESP32小车 -> 正文阅读

[嵌入式]制作可以用航模遥控器遥控的ESP32小车

?这一次来说一下如何控制小车,不过首先要说我遇到的问题,其实我写到一半基本能跑了,然后疏忽大意,让IO口碰了8.4V电源,全套包括接收机在内,和鞭炮一样炸了,五十多块钱直接飘了,这一次可以说是损失惨重,主要所有主要模块都是自制的,很费时间,可以说是非常难过了。

?

?

使用的电机控制模块和电机是这样的

?

?

控制方法很简单

?设计上,IO32,IO33是A通道控制,IO25,IO26是B通道控制,前后信号IO15,转向信号IO16

#define CA2 32
#define CA1 33
#define CB1 25
#define CB2 26
#define DEATH_AREA 20
#define MIDDLE 1600
#define SIGNALPIN 15
#define SIGNALPIN2 16
#define MIN 1000
#define MAX 2255
#define PWMBASE_GO 1000
#define ARRANGE 40
#include "soc/rtc_wdt.h" 
void setup(){
  rtc_wdt_protect_off(); 
  rtc_wdt_enable(); 
   rtc_wdt_feed(); 
  rtc_wdt_set_time(RTC_WDT_STAGE0, 7000); 
  Serial.begin(115200);
  Serial.println("hello");
   pinMode(CA1,OUTPUT);
  pinMode(CA2,OUTPUT);
  pinMode(CB1,OUTPUT);
  pinMode(CB2,OUTPUT);
  digitalWrite(CA1,LOW);
  digitalWrite(CA2,LOW);
  digitalWrite(CB1,LOW);
  digitalWrite(CB2,LOW);
}

int goandback;
int rotatepulse;
void loop(){
   goandback = pulseIn(SIGNALPIN, HIGH) ;
   rotatepulse = pulseIn(SIGNALPIN2, HIGH) ;
  Serial.print("GoBack,Rotate"); 
  Serial.print(goandback);
  Serial.print(" , ");
   Serial.println(rotatepulse);
  rtc_wdt_feed(); 
  if(abs(goandback-MIDDLE)<DEATH_AREA)
  {
    carStandby();
  }
  else if(goandback>MIN&&goandback<MIDDLE-DEATH_AREA)//go
  {
   carBack(goandback);
  }
  else if(goandback>MIDDLE-DEATH_AREA&&goandback<MAX)//back
  {
    carRun(goandback);
  }
  else
  {
     carStandby();
  }
  
}
void carStandby()
{
  digitalWrite(CA1,LOW);
  digitalWrite(CA2,LOW);
  digitalWrite(CB1,LOW);
  digitalWrite(CB2,LOW);
}
void carBack()
{
  digitalWrite(CA1,HIGH);
  digitalWrite(CA2,LOW);
  digitalWrite(CB1,HIGH);
  digitalWrite(CB2,LOW);
}

void carBack(int i)
{
   digitalWrite(CA2,LOW);
  digitalWrite(CA1,HIGH);
  delay((MIDDLE-i)/ARRANGE);
  carStandby();
  
  digitalWrite(CB2,LOW);
  digitalWrite(CB1,HIGH);
  delay((MIDDLE-i)/ARRANGE);
  carStandby();
}
void carRun(int i)
{
  digitalWrite(CA1,LOW);
  digitalWrite(CA2,HIGH);
  delay((i-MIDDLE)/ARRANGE);
  carStandby();
  
  digitalWrite(CB1,LOW);
  digitalWrite(CB2,HIGH);
  delay((i-MIDDLE)/ARRANGE);
  carStandby();
  
  
}

void carRun()
{
  digitalWrite(CA1,LOW);
  digitalWrite(CA2,HIGH);
  digitalWrite(CB1,LOW);
  digitalWrite(CB2,HIGH);
}

void carstop()
{
  digitalWrite(CA1,HIGH);
  digitalWrite(CA2,HIGH);
  digitalWrite(CB1,HIGH);
  digitalWrite(CB2,HIGH);
}

主要做的事情其实非常的简单,就是:

1.处理输入的前后信号,处理输入的转向信号,使用PulseIn来获取到高电平时间

2.通过PWM信号到电机驱动芯片,分配能量到两个车轮的电机上

然而在还没弄好之前,炸了,但是唯一值得庆幸的是我还好有这个——USB隔离器,不然感觉电脑也有点危险,USB的5V是有保护但是信号线基本没有高压保护

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:58:47  更:2022-04-18 18:00:50 
 
开发: 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 4:29:02-

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