ps2遥控小车arduino程序初版
/** * PS2 4WD遥控车* * 2022.09.08* MADE BY 艾泽(YWZ) 3D打印创新实验室&3D打印协会(DIY3D打印爱好者协会) HIT(WH)* 运行前请下载PS2X_lib.h库* 需要准备:L298N*2 PS2&转换口,降压模块12-5v arduino系列单片机,电机*4* 此程序仅供学习,使用或转载请备注作者* *
*/
#include <PS2X_lib.h>
PS2X ps2x;#define CLK 2
#define DAT 3
#define CMD 4
#define SEL 5
//设置ps2接收机引脚
#define in1 6
#define in2 7
#define in3 8
#define in4 9
#define in5 10
#define in6 11
#define in7 A3
#define in8 A4
//设置电机引脚void setup()
{// put your setup code here, to run once:Serial.begin(9600);ps2x.config_gamepad(CLK,CMD,SEL,DAT, true, false);delay(300);pinMode(in1,OUTPUT);pinMode(in2,OUTPUT);pinMode(in3,OUTPUT);pinMode(in4,OUTPUT);pinMode(in5,OUTPUT);pinMode(in6,OUTPUT);pinMode(in7,OUTPUT);pinMode(in8,OUTPUT);
}void loop()
{// put your main code here, to run repeatedly:ps2x.read_gamepad(false,0);delay(30);//刷新ps2数据if(ps2x.Button(PSB_PAD_UP)&&(ps2x.Analog(PSS_RY)==127)){RUN1();delay(50);}else if(ps2x.Analog(PSS_RY)>127){RUN();delay(50);}else if(ps2x.Analog(PSS_RY)<127){BACK();delay(50);}else if(ps2x.Button(PSB_PAD_DOWN)&&(ps2x.Analog(PSS_LX)==128)){BACK1();delay(50);}else if(ps2x.Analog(PSS_LX)>128){LEFT();delay(50);} else if(ps2x.Analog(PSS_LX)<128){RIGHT();delay(50);} else if(ps2x.Button(PSB_L1)){STOP();delay(50);}else{DOWN();}
/*
//--------------------------ps2 text-----------------------------
//-------------------use arduino ide 串口监视器----------------------Serial.print("right x:");Serial.print(ps2x.Analog(PSS_RX));delay(50);//右侧xSerial.print("right y:");Serial.println(ps2x.Analog(PSS_RY));delay(500);//右侧ySerial.print("left x:");Serial.print(ps2x.Analog(PSS_LX));delay(50);//左侧xSerial.print("left y:");Serial.println(ps2x.Analog(PSS_LY));delay(500);//左侧Y
//--------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------
*/
}//-----------常规姿态控制----------------------------------------------------------------------------------------------------AIZE(YWZ)----------------void RUN()
{int SPEED=ps2x.Analog(PSS_RY);digitalWrite(in1,HIGH);digitalWrite(in2,LOW); digitalWrite(in3,HIGH);digitalWrite(in4,LOW); analogWrite(in1,SPEED);analogWrite(in3,SPEED);digitalWrite(in5,HIGH);digitalWrite(in6,LOW); digitalWrite(in7,HIGH);digitalWrite(in8,LOW); analogWrite(in5,SPEED);analogWrite(in7,SPEED);
}
//--------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------void BACK()
{int SPEED=ps2x.Analog(PSS_RY)+127;digitalWrite(in1,LOW);digitalWrite(in2,HIGH); digitalWrite(in3,LOW);digitalWrite(in4,HIGH); analogWrite(in2,SPEED);analogWrite(in4,SPEED);digitalWrite(in5,LOW);digitalWrite(in6,HIGH); digitalWrite(in7,LOW);digitalWrite(in8,HIGH); analogWrite(in6,SPEED);analogWrite(in8,SPEED);
}//--------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------void LEFT()
{int SPEED=ps2x.Analog(PSS_LX);digitalWrite(in1,HIGH);digitalWrite(in2,LOW); digitalWrite(in3,LOW);digitalWrite(in4,HIGH); analogWrite(in1,SPEED);analogWrite(in4,SPEED);digitalWrite(in5,HIGH);digitalWrite(in6,LOW); digitalWrite(in7,LOW);digitalWrite(in8,HIGH);analogWrite(in5,SPEED);analogWrite(in8,SPEED);
}
//--------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------void RIGHT()
{int SPEED=ps2x.Analog(PSS_LX)+128;digitalWrite(in1,LOW);digitalWrite(in2,HIGH); digitalWrite(in3,HIGH);digitalWrite(in4,LOW); analogWrite(in2,SPEED);analogWrite(in3,SPEED);digitalWrite(in5,LOW);digitalWrite(in6,HIGH); digitalWrite(in7,HIGH);digitalWrite(in8,LOW); analogWrite(in6,SPEED);analogWrite(in7,SPEED);
}
//--------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------void DOWN()
{digitalWrite(in1,LOW);digitalWrite(in2,LOW); digitalWrite(in3,LOW);digitalWrite(in4,LOW); digitalWrite(in5,LOW);digitalWrite(in6,LOW); digitalWrite(in7,LOW);digitalWrite(in8,LOW); }//--------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------void STOP()
{digitalWrite(in1,HIGH);digitalWrite(in2,HIGH); digitalWrite(in3,HIGH);digitalWrite(in4,HIGH); digitalWrite(in5,HIGH);digitalWrite(in6,HIGH); digitalWrite(in7,HIGH);digitalWrite(in8,HIGH); analogWrite(in1,250);analogWrite(in2,250);analogWrite(in3,250);analogWrite(in4,250);analogWrite(in5,250);analogWrite(in6,250);analogWrite(in7,250);analogWrite(in8,250);
} //---------------------------------------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------void RUN1()
{digitalWrite(in1,HIGH);digitalWrite(in2,LOW); digitalWrite(in3,HIGH);digitalWrite(in4,LOW); digitalWrite(in5,HIGH);digitalWrite(in6,LOW); digitalWrite(in7,HIGH);digitalWrite(in8,LOW); analogWrite(in1,250);analogWrite(in3,250);analogWrite(in5,250);analogWrite(in7,250);}//--------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------
void BACK1()
{digitalWrite(in1,LOW);digitalWrite(in2,HIGH); digitalWrite(in3,LOW);digitalWrite(in4,HIGH); digitalWrite(in5,LOW);digitalWrite(in6,HIGH); digitalWrite(in7,LOW);digitalWrite(in8,HIGH); analogWrite(in2,250);analogWrite(in4,250);analogWrite(in6,250);analogWrite(in8,250);
} //---------------------------------------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------/*舵机版预留
void BACKLEFT()
{digitalWrite(in1,HIGH);digitalWrite(in2,LOW); digitalWrite(in3,LOW);digitalWrite(in4,HIGH); analogWrite(in1,SPEED);analogWrite(in4,SPEED);digitalWrite(in5,HIGH);digitalWrite(in6,LOW); digitalWrite(in7,LOW);digitalWrite(in8,HIGH); analogWrite(in5,SPEED);analogWrite(in8,SPEED);
}
//--------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------void BACKRIGHT()
{digitalWrite(in1,LOW);digitalWrite(in2,HIGH); digitalWrite(in3,HIGH);digitalWrite(in4,LOW); analogWrite(in2,SPEED);analogWrite(in3,SPEED);digitalWrite(in5,LOW);digitalWrite(in6,HIGH); digitalWrite(in7,HIGH);digitalWrite(in8,LOW); analogWrite(in6,SPEED);analogWrite(in7,SPEED);
}
//---------------------------------------------------------------------------------------------------------------------------------------------------------------AIZE(YWZ)----------------*/
ps2遥控小车arduino程序初版相关推荐
- 基于红外遥控的arduino遥控小车
遥控小车是每个人童年的最爱,不仅好奇它的奇妙,更是喜欢它带来的刺激.小编为大家带来几篇博客,来给大家讲讲制作遥控小车的程序. 看大标题可知我们一共有五个方法去制作一款带有遥控功能的小车,小编分开来给大 ...
- 基于手机蓝牙的arduino遥控小车
遥控小车是每个人童年的最爱,不仅好奇它的奇妙,更是喜欢它带来的刺激.小编为大家带来几篇博客,来给大家讲讲制作遥控小车的程序. 看大标题可知我们一共有五个方法去制作一款带有遥控功能的小车,小编分开来给大 ...
- 开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32发送指令、ESP32接收指令,实现小车毫秒级完美控制_公羽兴
发文希望能够帮忙物联网爱好者少走弯路,少被割韭菜.如果觉得此文对您有帮助的话帮忙点个赞,感谢!!! 哔哩哔哩网址:开源免费代码_02_单摇杆远程遥控小车,基于Arduino的ESP-NOW,ESP32 ...
- 基于无线NRF24L01的ardunio遥控小车
遥控小车是每个人童年的最爱,不仅好奇它的奇妙,更是喜欢它带来的刺激.小编为大家带来几篇博客,来给大家讲讲制作遥控小车的程序. 看大标题可知我们一共有五个方法去制作一款带有遥控功能的小车,小编分开来给大 ...
- 基于手柄(有线)的ardunio遥控小车
遥控小车是每个人童年的最爱,不仅好奇它的奇妙,更是喜欢它带来的刺激.小编为大家带来几篇博客,来给大家讲讲制作遥控小车的程序. 看大标题可知我们一共有五个方法去制作一款带有遥控功能的小车,小编分开来给大 ...
- 基于51单片机的遥控小车
基于51单片机的遥控小车(HC-05模块,L298n模块) 保姆级 1.硬件准备 2.部分硬件说明 USB转TTL模块 可以把串口发送的TTL信号转换成USB信号再发送给电脑,电脑就可以接收到单片机发 ...
- 基于Arduino的PS2机械臂遥控小车(L298N)傻瓜教程
基于Arduino的PS2机械臂遥控小车(L298N)傻瓜教程 1.材料 L298N.Arduino板.数据线.舵机(SG90).机械臂.亚克力板.电机.PS2.杜邦线.电池(7.4V).螺丝. 2. ...
- 微信小程序+UDP+wifi8266+l293d扩展板+Arduino uno遥控小车
微信小程序+UDP+wifi8266+l293d扩展板+Arduino uno遥控小车 序言 前面突然看到自己已经落灰的Arduino板子,感觉自己必须做点什么.正好手上有个8266的模块.有个焊接接 ...
- 基于STM32F103的树莓派ROS小车——PS2遥控程序解析
基于STM32F103ZET6的PS2遥控ROS小车程序解析 序言 1. PS手柄介绍 2. 使用说明 2.1 引脚说明 2.2 时序图分析 3. 手柄测试 4. 程序解析 5. 仿真 6. 源码链接 ...
最新文章
- PHP学习记录(字符串函数)
- 关于css3的自定义字体
- Python Django 设置/更改响应头信息
- 在VC中动态加载ODBC的方法
- 浅拷贝 python_python中的浅拷贝和深拷贝
- border做三角形
- Django配置文件常用信息
- qq音乐api android,QQ音乐
- 半导体PN结的工作原理
- android手机设置固定dns,安卓手机修改WiFi DNS设置的方法
- python中cv的差值_python+opencv实现移动侦测(帧差法)
- Shell中uniq命令的用法
- python输出矩阵_python输出矩阵
- c语言编程实现scp功能,scp源码浅析
- 以太网芯片MAC和PHY
- 必须了解的产品经济学:边际效用VS边际成本
- 淘宝网前台应用性能优化实践
- 发现panda(熊猫)对W32.Looked.I处理得不错
- D2x神符之语中英文对照图文豪华版
- Real-ESRGAN
热门文章
- 如何写好一篇论文的摘要?
- [解疑][VS]Visual Studio软件编程时,ID号的格式ID_,IDS_,IDC_,IDI_,IDB_,IDD_之间有什么区别?
- JupyterLab教程:程序员的笔记本神器v2.0
- 设计模式 - 漫谈软件编程背后的系统化思维
- 02 matplotlib - 柱状图、直方图、散点图 、饼图
- 苹果 CEO 为什么选中了何同学?
- c语言分苹果程序,小朋友学C语言(14):分苹果(小学奥数题)
- 可能是你见过最强的猜数字游戏(doge
- SQLserver 报错RegCreateKeyEx() 返回了错误 5,“拒绝访问。” (.Net SqlClient Data Provider)错误号: 22002 严重性: 16 状态: 1
- 做好PMC管理三大工作,轻松搞定生产计划与物料控制