使用Arduino mega 2560读取PS2无线手柄信号并控制小车运动

本文介绍如何使用Arduino mega 2560读取PS2无线手柄信号,结合硬件连接和编程,实现小车的运动控制。详细讲述了硬件构成、连接方式,以及程序设计,强调了硬件接线和程序对应的重要性,并提供了实际测试的经验和注意事项。
摘要由CSDN通过智能技术生成

使用Arduino mega 2560读取PS2无线手柄信号并控制小车运动

1 前言

最近开始学习单片机和树莓派小车的编程相关内容,本例较为简单,旨在通过Arduino mega 2560 读取PS2无线手柄的左摇杆信号并驱动小车运动。

2 硬件连接

硬件连接是编程的基础,也正是在本例的探索过程中,我发现网上很多例子借用了他人的图片、程序,且接线的图片和程序存在不能对应的问题,浪费了我很多时间。所以本例虽然简单,但绝对原创,确保了图片和程序的对应性问题。

2.1 硬件构成简介

本例使用的小车底盘为双减速电机(供电12V减速比为30)后驱,前轮转向为DS3119舵机驱动;本例使用购买的L298N电机驱动板直接驱动两个后轮减速电机运动;本例使用的单片机为Arduino mega 2560,前轮转向舵机采用L298N驱动板上的5V输出供电,信号线直接与Arduino相连;无线手柄为购买的仿制PS2手柄,但好在接口基本相同且有标明;小车供电采用3个18650电池组成的电池组供电,额定电压11.1V。本例涉及硬件如下表:

器件名称 主要参数 备注
后轮驱动电机 减速电机,12V额定电压,30减速比 带编码器,但本例未用到
前轮转向舵机 DS3119数字舵机 与主流995等舵机控制相同
驱动板 L298N四路驱动板 四路刚好驱动两个电机的正反转
单片机 Arduino mega 2560 手头刚好有,其实用UNO也可以
无线手柄 仿制PS2无线手柄 手柄无线接收器有明确的信号口标识
主电源 3x18650电池组,额定电压11.1V 带双路圆口输出,一公一母,公头可直接插入arduino,母头需自己再配一个公头转接L298N电机驱动板上
副电源 5V(本例使用电压源) 本打算驱动舵机使用arduino或驱动板的5V电源,但发现会严重影响Arduino与无线手柄之间的通讯,遂使用单独5V电源驱动舵机
排线若干 排线以一头公一头母的为主,大约用到10根左右

本例涉及的所有硬件(5V电压源除外)如下图所示:

所有硬件合影

2.2 硬件连线

所用端口、硬件连线如下图所示:

硬件连线图

3 程序编制

本例所用全部程序如下:

#include <PS2X_lib.h>  //for v1.6

#include <Servo.h>    //这是控制舵机必须包含的头文件

PS2X ps2x; // create PS2 Controller Class
Servo myservo;        //创建一个舵机控制对象
//right now, the library does NOT support hot pluggable controllers, meaning 
//you must always either restart your Arduino after you conect the controller, 
//or call config_gamepad(pins) again after connecting the controller.
int Left_motor_back=6;       //左电机后退(IN1)
int Left_motor_go=7;         //左电机前进(IN2)
 
int Right_motor_go=5;        // 右电机前进(IN3)
int Right_motor_back=4;      // 右电机后退(IN4)
 
int Velocity=0;              //前进或后退的速度大小
int Direction=90;            //转向舵机的角度,舵机初始都是在90度,对应前轮在中位,本例小车底盘大概左转极限对应舵机70度ÿ
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值