Arduino技巧之PS2摇杆实验
- 格式:doc
- 大小:12.50 KB
- 文档页数:2
基于Arduino的无人机飞行摇杆控制器设计黄文恺【期刊名称】《电子世界》【年(卷),期】2013(000)019【摘要】Flight Joystick control UAVs more realistic,traditional remote control incomparable advantages,and has more number of channels.This article uses the Arduino development board designed a UAV lfight stick control er,which does not require a computer,low cost,easy to carry,is the ideal platform for UAV control.%飞行摇杆控制无人机更具有真实感,有传统遥控器无法比拟的优点,且拥有较多的通道数。
本文使用Arduino开发板设计了一套无人机飞行摇杆控制器,该控制器不需要电脑,成本低廉,携带方便,是理想的无人机控制平台。
【总页数】2页(P130-130,131)【作者】黄文恺【作者单位】广州大学实验中心【正文语种】中文【相关文献】1.基于干扰观测器的无人机着陆飞行逆控制器设计 [J], 陈龙胜;姜长生2.基于在线神经网络的无人机着陆飞行自适应逆控制器设计 [J], 陈龙胜;姜长生3.基于期望动态的无人机悬停飞行PD控制器设计 [J], 郭金虎;谭功全;李艾棠4.基于ARM11+CPLD的小型无人机飞行控制器设计 [J], 郑积仕;蒋新华;陈兴武5.基于H2最优控制的小型无人机飞行姿态控制器设计 [J], 冀晓萌;董朝轶;李健;闫放因版权原因,仅展示原文概要,查看原文内容请购买。
Arduino 入门到精通例程21PS2摇杆实验PS2摇杆一般可以用来控制小车等等,其构造主要就是两个10K的电位器,还有一个按键开关。
五个端口分别为VCC,X,Button,Y,GND。
接线示意图:程序代码#include <LiquidCrystal.h> //调用arduino 自带的LiquidCrystal 库LiquidCrystal lcd(12, 11, 10, 9, 8, 7);//设置接口int xpotPin = 0; //设置模拟口0为X 的信号输入端口int ypotPin = 1; //设置模拟口1为Y的信号输入端口int xval=0; //设置变量int yval=0;void setup(){pinMode(xpotPin,INPUT);//pinMode(ypotPin,INPUT);//lcd.begin(16, 2); //初始化LCDdelay(1000); //延时1000ms}void loop (){xval = analogRead(xpotPin); //xval变量为从0信号口读取到的数值yval = analogRead(ypotPin); //yval变量为从1信号口读取到的数值lcd.clear(); //清屏lcd.setCursor(0, 0) ; //设置光标位置为第一行第一个位置lcd.print("X="); //使屏幕显示文字X=lcd.print(xval);lcd.setCursor(7, 0) ; //设置光标位置为第一行第八个位置lcd.print("Y="); //使屏幕显示文字Y=lcd.print(yval);delay(100); //延时0.1秒,这里也就是刷新速度。
}实验结果:推动摇杆时,电位器阻值发生变化,相应的电压也会发生变化,液晶屏上的数字就是每一个轴的电压数字输出。
一、选择题第一题使用以下哪块积木可以点亮P10蓝色LED 小灯?(十四届蓝桥杯国赛 Arduino 试题)A.B.C.D.以上积木均可第二题PS2摇杆Y 值为1023,X 值为521时,摇杆处在哪个位置?()A.上B.下C.左D.右第三题以下情况,串口中打印的数值越来越小的是()。
A.温度越来越高B.旋转变阻器从左限位旋转到右限位C.声音越来越大D.光照强度越来越大第四题如图所示,旋转变阻器旋转到垂直向上的位置,四位数码管最可能显示的数字是()。
A.300B.400C.500D.600第五题运行以下程序,串口打印的数字是()。
A.34B.55C.89D.144二、编程题第一题硬件准备:声音传感器(A3)、单色LED-蓝色(P10)编程实现:声控灯。
具体要求:1)程序启动,单色LED呈熄灭状态;2)当声音传感器的模拟数值大于100时,单色LED-蓝色点亮;3)当声音传感器的模拟数值不大于100时,单色LED-蓝色熄灭;4)重复上面的2),3)过程。
第二题硬件准备:四位红色数码管TM1650(地址0x27)编程实现:15s计时器。
具体要求:1)程序启动后,TM1650清屏;2)TM1650开始计时,如下图所示;3)TM1650第三位从0开始,每隔100ms加1,到10时重新置0,同时第二位加1;注:四位数码管TM1650从左往右依次为数码管的第一位、第二位、第三位、第四位。
4)TM1650第二位到10时重新置0,同时第一位点亮并显示1,计数到15s时,即第一位为1,第二位为5,第三位为0,第四位为0,程序停止。
第三题硬件准备:按键S1(P22)、按键S6(P19)、8路LED灯(P31-P38)编程实现:跑马灯。
具体要求:1)程序启动后,8路LED呈熄灭状态;2)按下S1,8路LED每个小灯随机点亮或熄灭;3)之后每颗LED小灯独立点亮或熄灭,小灯之间的亮灭互不影响且没有规律,重复此过程;4)按下S6,8路LED熄灭,程序停止,再按S1或S6,小灯无任何反应。
PSX/PS2手柄与单片机间的通信蔡茂港(2009.11整理)摘要:数字摇杆手柄使用SPI串行通信与上位机进行通讯(在通讯过程中的角色为:下位机),而A VR单片机集成了SPI串行总线。
这可以很方便地使用单片机的硬件资源实现单片机与数据摇杆手柄之间的通讯,而非使用软件模拟来实现单片机读取数字摇杆手柄。
这不仅提高了程序运行的效率、运行的稳定,并且也使得程序更简短。
关键字:PSX PS2 数字摇杆手柄SPI串行通讯A VR单片机引言对于手动机器人首选的人机界面之一就是数字摇杆手柄,作为游戏专用的手柄,它具备了舒适度高、灵敏度高等等许多的特质,因此颇受青睐。
本文主要阐述数字摇杆手柄所采用的通讯协议、SPI串行接口,并实现单片机与数字摇杆手柄之间的通讯。
注:PSX/PS2游戏手柄引脚定义第一部分:PSX/PS2通讯协议一、各引脚定义:(引脚号/定义/用途)①PS手柄针脚输出(面对插头)-------------------------------------------------PIN 1-> | o o o | o o o | o o o |\_____________________________/DATA信号流向从手柄到主机。
此信号是一个8 bit的串行数据,同步传送于时钟下降沿(输入输出信号在时钟信号由高到低时变化,所有信号的读取在时钟前沿到电平变化之前完成。
)COMMAND信号流向从主机到手柄。
此信号和DATA相对,同样是一个8 bit的串行数据,同步传送于时钟下降沿。
VCC电源电压从5V到3V原装的索尼手柄都可以工作。
主机主板上装有表面安装的750mA 保险丝,用于防止外设过载(750mA是包括左右手柄和记忆卡)。
ATTATT 用于提供手柄触发信号。
信号在通信期间处于低电平。
又有人将此针脚叫做Select, DTR 和Command。
CLOCK信号流向从主机到手柄。
用于保持数据同步。
ARDUINO入门及其简单实验(7例) (2)1. Arduino硬件开发平台简介 (2)1.1 Arduino的主要特色 (3)1.2 Arduino的硬件接口功能描述 (3)1.3 Arduino的技术性能参数 (4)1.4 电路原理图 (4)2. Arduino软件开发平台简介 (5)2.1 菜单栏 (6)2.2 工具栏 (6)2.3 Arduino 语言简介 (7)3. Arduino开发实例中所用部分器件 (9)1. LED简介 (9)2. 光敏电阻简介 (10)3. 直流电机简介 (10)4. 电位器简介 (10)4. Arduino平台应用开发实例 (11)4.1【实作项目一】利用LED作光敏电阻采样实验 (11)4.2【实作项目二】利用PWM信号控制LED亮度 (13)4.3【实作项目三】单键控制一只LED的亮灭 (15)4.4【实作项目四】利用PWM控制直流电机转速 (17)4.5【实作项目五】利用电位器手控LED亮度 (20)4.6【实作项目六】控制LED明暗交替 (22)4.7【实作项目七】利用光敏电阻控制LED的亮灭 (24)ARDUINO入门及其简单实验(7例)1. Arduino硬件开发平台简介Arduino硬件是一块带有USB的I/O接口板(其中包括13条数字I/O引脚,6通道模拟输出,6通道模拟输入),并且具有类似于Java、C语言的集成开发环境。
Arduino既可以扩展一些外接的电子元器件,例如开关、传感器、LED、直流马达、步进马达或其他输入、输出装置;Arduino也可以独立运行,成为一个可以跟交互软件沟通的接口装置,例如:Flash、Processing、Max/MSP、VVVV或其他互动软件。
Arduino开发环境IDE全部开放源代码,可以供大家免费下载、利用,还可以开发出更多激发人们制作欲望的互动作品。
如图1和图2所示,分别为Arduino硬件平台的实物图和电路布局图。
• 86•为了对加工物料是否合格进行分拣,解决人类工作强度大、准确度低、效率差等现实问题。
我们立足于太原理工大学现代科技学院“好教授创客工厂”这个平台,提出了基于Arduino UNO 平台用于分拣机械臂系统的新概念。
该系统由Arduino UNO 主控板、PIXY 图像传感器、MG90S 舵机、IIC1602液晶屏模块、PS2遥感模块、温湿度传感器、红外感应模块、传送带组成。
主要实现对于传送带上的物料是否满足厂家加工要求,进行精确分拣,且将不合格的产品移送到指定区域。
这样大大提高了人类的工作效率、减少了工作强度。
引言:创新是撬动发展的第一杠杆。
当前,新兴科技和产业革命加速兴起,创新发展面临难得历史机遇。
越来越多高校把提高当代大学生的思维能力、创新能力、动手能力投入了高资金、高支持、高平台。
我们以这个时代为契机,运用好学校给予具有创新能力、创新思维、创新意识当代大学生的高支持、高平台、高水平的支持。
我们立足于太原理工大学现代科技学院“好教授创客工厂”这个平台,学习了关于Arduino UNO 平台的相关知识。
在面对人类对加工物料分拣速度慢、准确低、难度大的问题,提出了基于Arduino UNO 平台用于分拣机械臂系统的新概念。
更加促进了解决人类工作强度大、准确度低、效率差等现实问题。
1 ArduinoUNO平台用于分拣机械臂系统组成的工作原理1.1 Arduino Uno 核心开发板Arduino Uno 开发板是机械臂工作的核心相当于人的大脑,可以自由选择从VIN ,5V ,3.3V ,USB 引脚供电,VIN 有电时将忽略从USB 或者其他引脚接入的电源。
其上包括14 路数字输入输出IO 引脚,6个模拟输入IO ,16MHZ 陶瓷谐振器,USB 接口,电源接口,ICSP 接头,复位按钮等,ATmega328内置的UART 可以通过数字口0 (RX)和1 (TX) 与外部实现串口通信Arduino UNO 上的AT-mega328已经预置了bootloader 程序,因此可以通过Arduino 软件直接下载程序到UNO 中。
14.智能⼩车-PS2控制智能⼩车实验⼗四:树莓派平台-------PS2控制智能⼩车综合实验⼀.PS2⼿柄介绍PS2 由⼿柄与接收器两部分组成,⼿柄主要负责发送按键信息。
接通电源并打开⼿柄开关时,⼿柄与接收器⾃动配对连接,在未配对成功的状态下,接收器绿灯闪烁,⼿柄上的灯也会闪烁,配对成功后,接收器上绿灯常亮,⼿柄上灯也常亮,这时可以按“MODE”键,选择⼿柄发送模式,本次实验我们使⽤的也是红灯模式。
红灯模式:遥杆输出模拟值;绿灯模式:遥杆对应上⾯四个按键,只有四个极限⽅向对应。
接收器和主机(单⽚机)相连,实现主机与⼿柄之间的通讯。
T图 1.1 接收器DI/DAT:信号流向,从⼿柄到主机,此信号是⼀个8bit 的串⾏数据,同步传送于时钟的下降沿。
信号的读取在时钟由⾼到低的变化过程中完成。
DO/CMD:信号流向,从主机到⼿柄,此信号和DI 相对,信号是⼀个8bit 的串⾏数据,同步传送于时钟的下降沿。
NC:空端⼝;GND:电源地;VDD:接收器⼯作电源,电源范围3~5V;CS/SEL:⽤于提供⼿柄触发信号。
在通讯期间,处于低电平;CLK:时钟信号,由主机发出,⽤于保持数据同步;NC:空端⼝;ACK:从⼿柄到主机的应答信号。
此信号在每个8bits 数据发送的最后⼀个周期变低并且CS ⼀直保持低电平,如果CS 信号不变低,约60 微秒PS 主机会试另⼀个外设。
在编程时未使⽤ACK 端⼝。
当主机想读⼿柄数据时,将会拉低CS 线电平,并发出⼀个命令“0x01”;⼿柄会回复它的ID“0x41=模拟绿灯,0x73=模拟红灯”;在⼿柄发送ID 的同时,主机将传送0x42,请求数据;随后⼿柄发送出0x5A,告诉主机“数据来了”。
表 2:数据意义对照表当有按键按下,对应位为“0”,其他位为“1”,例如当键“SELECT”被按下时,Data[3]=11111110B,红灯模式时:左右摇杆发送模拟值,0x00~0xFF 之间,且摇杆按下的键值值L3、R3 有效;绿灯模式时:左右摇杆模拟值为⽆效,推到极限时,对应发送UP、RIGHT、DOWN、LEFT、△、○、╳、□,按键L3、R3⽆效。
数字输出Arduino教程一:11 Comments ?Arduino教程,。
除了管脚的数字Arduino7到管脚2I/O个可用的6I/O被分成两个部分,其中每个部分都包含有管脚,即管脚到管脚8和管脚13I/O1K上接了一个13来对位的数字跑马灯,6上。
ATmega其他各个管脚都直接连接到的电阻之外,我们可以利用一个Arduino数字的输出功能进行验证,以下是相应的原理图:电阻被称为限流电阻,I/O电路中在每个管脚上加的那个1K使用限流电阻可由于发光二极管在电路中没有等效电阻值,以使元件上通过的电流不至于过大,能够起到保护的作用。
该工程对应的代码为:int BASE = 2;int NUM = 6;int index = 0;void setup(){++) BASE; = i (int for i + BASE < i NUM;{pinMode(i, OUTPUT);}}void loop(){for (int i = BASE; i < BASE + NUM; i ++) {digitalWrite(i, LOW);}digitalWrite(BASE + index, HIGH);index = (index + 1) % NUM;delay(100);}2管脚I/O数字Arduino下载并运行该工程,连接在上的发光二极管会依次点亮7到管脚0.1秒,然后再熄灭:1 / 28这个实验可以用来验证数字I/O输出的正确性。
Arduino上一共有十二个数字I/O管脚,我们可以用同样的办法验证其他六个管脚的正确性,而这只需要对上述工程的第一行做相应的修改就可以了:int BASE = 8;01SEPArduino教程二: 数字输入3 Comments ?Arduino, 教程在数字电路中开关(switch)是一种基本的输入形式,它的作用是保持电路的连接或者断开。
Arduino从数字I/O管脚上只能读出高电平(5V)或者低电平(0V),因此我们首先面临到的一个问题就是如何将开关的开/断状态转变成Arduino 能够读取的高/低电平。
ARDUINO入门及其简单实验(7例) (1)1. Arduino硬件开发平台简介 (1)1.1 Arduino的主要特色 (2)1.2 Arduino的硬件接口功能描述 (3)1.3 Arduino的技术性能参数 (3)1.4 电路原理图 (4)2. Arduino软件开发平台简介 (5)2.1 菜单栏 (5)2.2 工具栏 (6)2.3 Arduino 语言简介 (6)3. Arduino开发实例中所用部分器件 (8)1. LED简介 (8)2. 光敏电阻简介 (9)3. 直流电机简介 (9)4. 电位器简介 (10)4. Arduino平台应用开发实例 (10)4.1【实作项目一】利用LED作光敏电阻采样实验 (10)4.2【实作项目二】利用PWM信号控制LED亮度 (12)4.3【实作项目三】单键控制一只LED的亮灭 (15)4.4【实作项目四】利用PWM控制直流电机转速 (17)4.5【实作项目五】利用电位器手控LED亮度 (19)4.6【实作项目六】控制LED明暗交替 (21)4.7【实作项目七】利用光敏电阻控制LED的亮灭 (23)ARDUINO入门及其简单实验(7例)1. Arduino硬件开发平台简介Arduino硬件是一块带有USB的I/O接口板(其中包括13条数字I/O引脚,6通道模拟输出,6通道模拟输入),并且具有类似于Java、C语言的集成开发环境。
Arduino 既可以扩展一些外接的电子元器件,例如开关、传感器、LED、直流马达、步进马达或其他输入、输出装置;Arduino也可以独立运行,成为一个可以跟交互软件沟通的接口装置,例如:Flash、Processing、Max/MSP、VVVV或其他互动软件。
Arduino 开发环境IDE全部开放源代码,可以供大家免费下载、利用,还可以开发出更多激发人们制作欲望的互动作品。
如图1和图2所示,分别为Arduino硬件平台的实物图和电路布局图。
Arduino技巧之PS2摇杆实验
作者:
来源:《电脑报》2019年第08期
PS2摇杆一般可以用来控制小车等,其构造主要就是两个10K的电位器,还有一个按键开关。
五个端口分别为VCC、X、Button、Y、GND(,接线示意:
程序代码:
#include <LiquidCrystal.h>; ;//调用arduino自带的LiquidCrystal库
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);//设置接口
int xpotPin = 0;; //設置模拟口0为X的信号输入端口
int ypotPin = 1;; //设置模拟口1为Y的信号输入端口
int xval=0;; ; //设置变量
int yval=0;
void setup()
{
pinMode(xpotPin,INPUT);//
pinMode(ypotPin,INPUT);//
lcd.begin(16, 2);; //初始化LCD
delay(1000); //延时1000ms
}
void loop ()
{
xval = analogRead(xpotPin);; ;//xval变量为从0信号口读取到的数值
yval = analogRead(ypotPin);; ;//yval变量为从1信号口读取到的数值 lcd.clear(); //清屏
lcd.setCursor(0, 0) ; //设置光标位置为第一行第一个位置
lcd.print("X=");; ; ; //使屏幕显示文字X=
lcd.print(xval);
lcd.setCursor(7, 0) ; //设置光标位置为第一行第八个位置
lcd.print("Y=");; ; ; //使屏幕显示文字Y=
lcd.print(yval);
delay(100);; ; ; ; ; ; //延时0.1秒,这里也就是刷新速度。
}。