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.
