Mouse.move()
描述
移动电脑上的鼠标。在萤幕上,鼠标的移动距离是一个相对值(即上一个位置与目前位置的距离)。在呼叫 Mouse.move()
函式之前,要先呼叫 Mouse.begin() 函式。
注意:当你呼叫 Mouse.move()
函式后,86Duino 会接管你的鼠标,使它做出移动的行为(使用此函式前,请确认实体鼠标运作是没问题的)。 建议你可以在程式中,判断一个外接按钮是否按下,来决定是否送出移动 86Duino 鼠标的命令。
语法
Mouse.move(xVal, yPos, wheel);
参数
xVal
:沿着 X 轴移动的距离 signed char 型别
yVal
:沿着 Y 轴移动的距离 signed char 型别
wheel
:滚轮移动的距离 signed char 型别
回传
无回传值
范例
const int xAxis = A1; // 类比感测器1,读值用来计算沿着 X 轴移动的距离 const int yAxis = A2; // 类比感测器2,读值用来计算沿着 Y 轴移动的距离 int range = 12; // XY方向上的移动范围 int responseDelay = 2; // 鼠标的响应时间(单位:毫秒) int threshold = range/4; // 侦测是否移动的门槛值 int center = range/2; // 范围的中间值 int minima[] = {1023, 1023}; // 储存 x, y 轴上由 analogRead() 所读到的最小值 int maxima[] = {0,0}; // 储存 x, y 轴上由 analogRead() 所读到的最大值 int axis[] = {xAxis, yAxis}; // 在 x, y 轴上所使用的脚位 int mouseReading[2]; // 鼠标的 x, y 座标 void setup() { Mouse.begin(); } void loop() { // 读取 x 和 y 轴的范围 int xReading = readAxis(0); int yReading = readAxis(1); // 移动鼠标 Mouse.move(xReading, yReading, 0); delay(responseDelay); } int readAxis(int axisNumber) { int distance = 0; // 鼠标的移动距离 // 读取类比输入 int reading = analogRead(axis[axisNumber]); // 假如目前的读值超过轴的最大或最小值 // 则重新设定最大最小值 if (reading < minima[axisNumber]) { minima[axisNumber] = reading; } if (reading > maxima[axisNumber]) { maxima[axisNumber] = reading; } // 将读值重新映射 reading = map(reading, minima[axisNumber], maxima[axisNumber], 0, range); // 假如输出读值已经超过移动的门槛值 // 则计算距离中心点的长度: if (abs(reading - center) > threshold) { distance = (reading - center); } // 为了能正确的映射出移动距离,Y 轴的值需要乘上 -1 if (axisNumber == 1) { distance = -distance; } // 回传该轴的移动距离 return distance; }
See also
- Mouse.begin()
- Mouse.click()
- Mouse.end()
- Mouse.press()
- Mouse.release()
- Mouse.isPressed()
The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.