Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Usb I';我试图用PS2鼠标草图将Genius鼠标连接到Arduino,但它不会初始化鼠标_Usb_Arduino_Usbserial_Ps2 - Fatal编程技术网

Usb I';我试图用PS2鼠标草图将Genius鼠标连接到Arduino,但它不会初始化鼠标

Usb I';我试图用PS2鼠标草图将Genius鼠标连接到Arduino,但它不会初始化鼠标,usb,arduino,usbserial,ps2,Usb,Arduino,Usbserial,Ps2,我一直在使用此消息底部的鼠标草图(由其他人编写)尝试从PS/2鼠标中获取运动数据。我已经检查了这个鼠标的规格,上面说它是PS/2兼容的。但是,当我运行它时,它似乎停止在mouse_init的第一行,它说,“mouse.write(0xff);//reset”。这是对ps2.h中函数的调用。ps2.h从2008年开始出现,已经在许多项目中使用,所以我认为它是可以使用的,但我想知道USB鼠标作为PS/2鼠标连接是否有一些特殊的功能,这个库从来没有设计过。有没有人有任何经验可以说明这一点 我已经能够确

我一直在使用此消息底部的鼠标草图(由其他人编写)尝试从PS/2鼠标中获取运动数据。我已经检查了这个鼠标的规格,上面说它是PS/2兼容的。但是,当我运行它时,它似乎停止在mouse_init的第一行,它说,“mouse.write(0xff);//reset”。这是对ps2.h中函数的调用。ps2.h从2008年开始出现,已经在许多项目中使用,所以我认为它是可以使用的,但我想知道USB鼠标作为PS/2鼠标连接是否有一些特殊的功能,这个库从来没有设计过。有没有人有任何经验可以说明这一点

我已经能够确定mouse.write正在改变我的Genius鼠标的状态,但它卡在鼠标应该将时钟状态调低的点上,以便主机可以继续传输数据。在mouse.write启动之前,时钟状态为低,但主机会将其推高到mouse.write中的几行,并停留在那里。老鼠再也不会把它拉低了。如果您对可能出现的问题有任何想法,我们将不胜感激

#include <ps2.h>

/*
 * an arduino sketch to interface with a ps/2 mouse.
 * Also uses serial protocol to talk back to the host
 * and report what it finds.
 */

/*
 * Pin 5 is the mouse data pin, pin 6 is the clock pin
 * Feel free to use whatever pins are convenient.
 */
PS2 mouse(6, 5);

/*
 * initialize the mouse. Reset it, and place it into remote
 * mode, so we can get the encoder data on demand.
 */
void mouse_init()
{
  mouse.write(0xff);  // reset
  mouse.read();  // ack byte
  mouse.read();  // blank */
  mouse.read();  // blank */
  mouse.write(0xf0);  // remote mode
  mouse.read();  // ack
  delayMicroseconds(100);
}

void setup()
{
  Serial.begin(9600);
  mouse_init();
}

/*
 * get a reading from the mouse and report it back to the
 * host via the serial line.
 */
void loop()
{
  char mstat;
  char mx;
  char my;

  /* get a reading from the mouse */
  mouse.write(0xeb);  // give me data!
  mouse.read();      // ignore ack
  mstat = mouse.read();
  mx = mouse.read();
  my = mouse.read();

  /* send the data back up */
  Serial.print(mstat, BIN);
  Serial.print("\tX=");
  Serial.print(mx, DEC);
  Serial.print("\tY=");
  Serial.print(my, DEC);
  Serial.println();
//  delay(20);  /* twiddle */
}
#包括
/*
*与ps/2鼠标接口的arduino草图。
*还使用串行协议与主机进行通信
*并报告发现的情况。
*/
/*
*引脚5是鼠标数据引脚,引脚6是时钟引脚
*请随意使用任何方便的别针。
*/
PS2小鼠(6,5);
/*
*初始化鼠标。重置它,并将其置于远程位置
*模式,因此我们可以按需获取编码器数据。
*/
void mouse_init()
{
鼠标。写入(0xff);//重置
mouse.read();//确认字节
mouse.read();//空白*/
mouse.read();//空白*/
mouse.write(0xf0);//远程模式
mouse.read();//ack
延迟微秒(100);
}
无效设置()
{
Serial.begin(9600);
鼠标_init();
}
/*
*从鼠标获取读数并将其报告给
*主机通过串行线。
*/
void循环()
{
char-mstat;
炭mx;
查米;
/*从鼠标获取读数*/
mouse.write(0xeb);//给我数据!
mouse.read();//忽略确认
mstat=mouse.read();
mx=mouse.read();
my=mouse.read();
/*把数据发回去*/
串行打印(mstat、BIN);
Serial.print(“\tX=”);
串行打印(mx,DEC);
Serial.print(“\tY=”);
连续打印(年月日、十二月);
Serial.println();
//延迟(20);/*旋转*/
}

解决了这个问题。事实证明,我带来的Genius鼠标与PS/2不向后兼容,尽管规范上说是这样。他们一定把传感器芯片换成了在某个时候不具备PS/2功能的芯片。我现在有另一个USB鼠标,它正完美地完成我想要的工作

解决了它。事实证明,我带来的Genius鼠标与PS/2不向后兼容,尽管规范上说是这样。他们一定把传感器芯片换成了在某个时候不具备PS/2功能的芯片。我现在有另一个USB鼠标,它正完美地完成我想要的工作

什么鼠标品牌解决了这个问题?我正面临一个类似的问题,协议随机挂断?对不起,我已经有一段时间没参与那个项目了,所以我记不起来了。我记得,我在一个交易网站上带了十几只老老鼠,希望能找到一只有效的。我知道其中有很多是因为我的项目需要几个传感器。什么鼠标品牌解决了这个问题?我正面临一个类似的问题,协议随机挂断?对不起,我已经有一段时间没参与那个项目了,所以我记不起来了。我记得,我在一个交易网站上带了十几只老老鼠,希望能找到一只有效的。我知道有很多是因为我的项目需要几个传感器。