久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
Arduino ps2手柄庫PS2X_lib下載
[打印本頁]
作者:
topshooters
時間:
2018-4-18 10:30
標題:
Arduino ps2手柄庫PS2X_lib下載
可以使用ps2和兼容ps2手柄來控制程式,但要使用4個信號引腳
0.jpg
(26.88 KB, 下載次數: 173)
下載附件
2018-4-18 16:30 上傳
Arduino源程序如下:
#include "PS2X_lib.h"
#include <math.h>
#include <stdio.h>
#include <stdint.h>
//#include <avr/io.h>
#if defined(__SAM3X8E__)
#include <sam/pio.h> // For the Due
#else
#include <avr/io.h> // For anything else before the Due
#endif
#if ARDUINO > 22
#include "Arduino.h"
#else
#include "WProgram.h"
#include "pins_arduino.h"
#endif
static byte enter_config[]={0x01,0x43,0x00,0x01,0x00};
static byte set_mode[]={0x01,0x44,0x00,0x01,0x03,0x00,0x00,0x00,0x00};
static byte set_bytes_large[]={0x01,0x4F,0x00,0xFF,0xFF,0x03,0x00,0x00,0x00};
static byte exit_config[]={0x01,0x43,0x00,0x00,0x5A,0x5A,0x5A,0x5A,0x5A};
static byte enable_rumble[]={0x01,0x4D,0x00,0x00,0x01};
static byte type_read[]={0x01,0x45,0x00,0x5A,0x5A,0x5A,0x5A,0x5A,0x5A};
/****************************************************************************************/
boolean PS2X::NewButtonState() {
return ((last_buttons ^ buttons) > 0);
}
/****************************************************************************************/
boolean PS2X::NewButtonState(unsigned int button) {
return (((last_buttons ^ buttons) & button) > 0);
}
/****************************************************************************************/
boolean PS2X::ButtonPressed(unsigned int button) {
return(NewButtonState(button) & Button(button));
}
/****************************************************************************************/
boolean PS2X::ButtonReleased(unsigned int button) {
return((NewButtonState(button)) & ((~last_buttons & button) > 0));
}
/****************************************************************************************/
boolean PS2X::Button(uint16_t button) {
return ((~buttons & button) > 0);
}
/****************************************************************************************/
unsigned int PS2X::ButtonDataByte() {
return (~buttons);
}
/****************************************************************************************/
byte PS2X::Analog(byte button) {
return PS2data[button];
}
/****************************************************************************************/
unsigned char PS2X::_gamepad_shiftinout (char byte) {
unsigned char tmp = 0;
for(unsigned char i=0;i<8;i++) {
if(CHK(byte,i)) CMD_SET();
else CMD_CLR();
CLK_CLR();
delayMicroseconds(CTRL_CLK);
//if(DAT_CHK()) SET(tmp,i);
if(DAT_CHK()) bitSet(tmp,i);
CLK_SET();
#if CTRL_CLK_HIGH
delayMicroseconds(CTRL_CLK_HIGH);
#endif
}
CMD_SET();
delayMicroseconds(CTRL_BYTE_DELAY);
return tmp;
}
/****************************************************************************************/
void PS2X::read_gamepad() {
read_gamepad(false, 0x00);
}
/****************************************************************************************/
boolean PS2X::read_gamepad(boolean motor1, byte motor2) {
double temp = millis() - last_read;
if (temp > 1500) //waited to long
reconfig_gamepad();
if(temp < read_delay) //waited too short
delay(read_delay - temp);
if(motor2 != 0x00)
motor2 = map(motor2,0,255,0x40,0xFF); //noting below 40 will make it spin
char dword[9] = {0x01,0x42,0,motor1,motor2,0,0,0,0};
byte dword2[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
// Try a few times to get valid data...
for (byte RetryCnt = 0; RetryCnt < 5; RetryCnt++) {
CMD_SET();
CLK_SET();
ATT_CLR(); // low enable joystick
delayMicroseconds(CTRL_BYTE_DELAY);
//Send the command to send button and joystick data;
for (int i = 0; i<9; i++) {
PS2data[i] = _gamepad_shiftinout(dword[i]);
}
if(PS2data[1] == 0x79) { //if controller is in full data return mode, get the rest of data
for (int i = 0; i<12; i++) {
PS2data[i+9] = _gamepad_shiftinout(dword2[i]);
}
}
ATT_SET(); // HI disable joystick
// Check to see if we received valid data or not.
// We should be in analog mode for our data to be valid (analog == 0x7_)
if ((PS2data[1] & 0xf0) == 0x70)
break;
// If we got to here, we are not in analog mode, try to recover...
reconfig_gamepad(); // try to get back into Analog mode.
delay(read_delay);
}
// If we get here and still not in analog mode (=0x7_), try increasing the read_delay...
if ((PS2data[1] & 0xf0) != 0x70) {
if (read_delay < 10)
read_delay++; // see if this helps out...
}
#ifdef PS2X_COM_DEBUG
Serial.println("OUT:IN");
for(int i=0; i<9; i++){
Serial.print(dword[i], HEX);
Serial.print(":");
Serial.print(PS2data[i], HEX);
Serial.print(" ");
}
for (int i = 0; i<12; i++) {
Serial.print(dword2[i], HEX);
Serial.print(":");
Serial.print(PS2data[i+9], HEX);
Serial.print(" ");
}
Serial.println("");
#endif
last_buttons = buttons; //store the previous buttons states
#if defined(__AVR__)
buttons = *(uint16_t*)(PS2data+3); //store as one value for multiple functions
#else
buttons = (uint16_t)(PS2data[4] << 8) + PS2data[3]; //store as one value for multiple functions
#endif
last_read = millis();
return ((PS2data[1] & 0xf0) == 0x70); // 1 = OK = analog mode - 0 = NOK
}
…………
…………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
PS2X_lib.zip
(11.19 KB, 下載次數: 250)
2018-4-18 10:29 上傳
點擊文件名下載附件
Arduino lib
下載積分: 黑幣 -5
作者:
luxin0222
時間:
2018-5-15 15:00
正好需要
作者:
湯洪偉
時間:
2018-9-23 16:42
lz,程序燒進去后串口監視器顯示的是亂碼的東西,能請教一下是怎么回事嗎
作者:
忘我境界
時間:
2018-10-9 17:47
我正在研究
作者:
cyszll
時間:
2018-12-14 06:40
您好!請問如果將其編譯成.o文件后,調用出錯,該如何解決?
作者:
xcs18228262660
時間:
2019-12-17 17:07
怎么添加庫文件呢
作者:
duang1107
時間:
2021-12-16 22:19
xcs18228262660 發表于 2019-12-17 17:07
怎么添加庫文件呢
項目欄里的加載庫,點開有一個添加庫,可以直接導入zip文件
作者:
sdfjklkj
時間:
2023-5-29 02:24
您好!請問如果將其編譯成.o文件后,調用出錯,該如何解決?
作者:
sdfjklkj
時間:
2023-5-29 02:24
您好!請問如果將其編譯成.o文件后,調用出錯,該如何解決?
作者:
LEEEEEXXXJ
時間:
2024-3-28 22:03
您好,這個第五行//#include <avr/io.h>是什么呀,我的arduino一直顯示不存在這個頭文件
作者:
wscxz
時間:
2025-3-14 01:41
下載PS2X軟件
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
四虎网站在线观看
|
亚洲成人精品一区
|
免费在线观看毛片
|
中文字幕一区二区三区四区不卡
|
国产精品免费大片
|
国产ts人妖系列高潮
|
国产区在线看
|
国产精品中文字幕在线观看
|
欧美在线视频二区
|
欧美5区
|
精品久久久久久久久久久久久久
|
亚洲精品在线观看网站
|
国产一级黄色网
|
天天综合成人网
|
国产成人麻豆免费观看
|
国产精品亚洲一区二区三区在线观看
|
欧美精品一区二区三区四区五区
|
成人在线观看免费视频
|
国产中文字幕在线观看
|
国产视频第一页
|
久久国产综合
|
成人深夜福利
|
高清黄色
|
国产精品久久久久久吹潮
|
av中文字幕在线观看
|
中文字幕视频在线观看
|
国产视频一区二区
|
不卡一区
|
国产高清久久久
|
精品久久久久久亚洲精品
|
国产精品九九九
|
久久精品亚洲成在人线av网址
|
全免费a级毛片免费看视频免费下
|
欧美无乱码久久久免费午夜一区
|
免费观看一级黄色录像
|
亚洲免费一
|
国产精品一二三区
|
国产 欧美 日韩 一区
|
中文字幕久久精品
|
免费看的黄网站
|
日韩在线中文字幕
|