Ви не увійшли.
Сторінки 1
не нажемается правая кнопка мижи при нажатии кнопки
нажатие кнопки находится в void move_mouse()
вот код
#include <Keyboard.h>
#include <Mouse.h>
unsigned long last;
boolean butt_flag1 = 0;
boolean butt1;
boolean butt_flag2 = 0;
boolean butt2;
int VRx = A0;
int VRy = A1;
int VRx2 = A2;
int VRy2 = A3;
int SW = 12;
int SW2 = 11;
int xPosition = 0;
int yPosition = 0;
int SW_state = 0;
int mapX = 0;
int mapY = 0;
int xPosition2= 0;
int yPosition2 = 0;
int SW_state2 = 0;
int mapX2 = 0;
int mapY2 = 0;
int pin_f = 10;
int pin_1 = 9;
int pin_2 = 8;
int pin_3 = 7;
int pin_4 = 6;
int pin_e = 5;
int pin_q = 4;
void setup() {
Keyboard.begin();
Mouse.begin();
Serial.begin(9600);
pinMode(VRx, INPUT);
pinMode(VRy, INPUT);
pinMode(VRx2, INPUT);
pinMode(VRy2, INPUT);
pinMode(pin_f, INPUT_PULLUP);
pinMode(SW, INPUT_PULLUP);
pinMode(SW2, INPUT_PULLUP);
pinMode(pin_1, INPUT_PULLUP);
pinMode(pin_2, INPUT_PULLUP);
pinMode(pin_3, INPUT_PULLUP);
pinMode(pin_4, INPUT_PULLUP);
pinMode(pin_e, INPUT_PULLUP);
pinMode(pin_q, INPUT_PULLUP);
}
void mouse_move(){
butt1 = digitalRead(12);
butt2 = digitalRead(11);
xPosition = analogRead(VRx);
yPosition = analogRead(VRy);
SW_state = !digitalRead(SW);
mapX = map(xPosition, 0, 1023, -512, 512);
mapY = map(yPosition, 0, 1023, -512, 512);
/*
Serial.print("X: ");
Serial.print(mapX);
Serial.print(" | Y: ");
Serial.print(mapY);
Serial.print(" | Button: ");
Serial.println(SW_state);
delay(100);
*/
if(mapY < 0){
//Serial.println("X+");
Mouse.move(0, -1, 0);
}
if(mapY > 38){
//Serial.println("X-");
Mouse.move(0, 1, 0);
}
if(mapX > 0){
//Serial.println("Y+");
Mouse.move(-1, 0, 0);
}
if(mapX < -10){
//Serial.println("Y-");
Mouse.move(1,0, 0);
}
if(butt1 == 1 && butt_flag1 == 0){
butt_flag1 = 1;
Mouse.press(MOUSE_LEFT);
}
if(butt1 == 0 && butt_flag1 == 1){
butt_flag1 = 0;
Mouse.release();
}
if(butt2 == 1 && butt_flag2 == 0){
butt_flag2 = 1;
Mouse.press(MOUSE_RIGHT);
}
if(butt2 == 0 && butt_flag2 == 1){
butt_flag2 = 0;
Mouse.release();
}
}
void keyboard_press(){
xPosition2 = analogRead(VRx2);
yPosition2 = analogRead(VRy2);
SW_state2 = !digitalRead(SW2);
mapX2= map(xPosition, 0, 1023, -512, 512);
mapY2 = map(yPosition, 0, 1023, -512, 512);
if(!digitalRead(pin_f) == 1){
if (millis()- last > 100){
last = millis();
Keyboard.press('f');
}
}
if(!digitalRead(pin_2) == 1){
if (millis()- last > 100){
last = millis();
Keyboard.press('1');
}
}
if(!digitalRead(pin_1) == 1){
if (millis()- last > 100){
last = millis();
Keyboard.press('2');
}
}
if(!digitalRead(pin_3) == 1){
if (millis()- last > 100){
last = millis();
Keyboard.press('3');
}
}
if(!digitalRead(pin_4) == 1){
if (millis()- last > 100){
last = millis();
Keyboard.press('4');
}
}
if(!digitalRead(pin_q) == 1){
if (millis()- last > 100){
last = millis();
Keyboard.press('q');
}
}
if(!digitalRead(pin_e) == 1){
if (millis()- last > 100){
last = millis();
Keyboard.press('e');
}
}
else{
Keyboard.releaseAll();
}
}
void loop() {
keyboard_press();
mouse_move();
/*
Serial.println(!digitalRead(pin_f));
Serial.println(!digitalRead(pin_1));
Serial.println(!digitalRead(pin_2));
Serial.println(!digitalRead(pin_3));
Serial.println(!digitalRead(pin_4));
delay(100);
*/
}
Неактивний
почитал, если изпользовать инпут пулап то идет инертиривание, на как мне его почить скажите пожалуйста
Какое инвертирование? Ты что читал? Журнал "Мурзилка"? Покажи схему (хоть на листочке от руки нарисуй) как ты кнопки подключаешь. Надеюсь не так как в этой теме?
Неактивний
как то так
Блин, что за люди, неужели тяжело нормально нарисовать, чтобы ничего не сливалось !?
Ладно, если ты действительно читал за PULLUP, какой уровень у тебя на пине при не нажатой кнопке?
Неактивний
И тишина ...
Испугался что-ли? Так здесь не кусаются. Или не знаешь что ответить? Ок, пойдем наглядным путем. Вот твой код без лишнего "мусора", только кнопки. Запусти и попробуй разобраться что у тебя не так.
boolean butt_flag1 = 0;
boolean butt1;
boolean butt_flag2 = 0;
boolean butt2;
void setup() {
Serial.begin(9600);
pinMode(11,INPUT_PULLUP);
pinMode(12,INPUT_PULLUP);
}
void mouse_move(){
butt1 = digitalRead(12);
butt2 = digitalRead(11);
if(butt1 == 1 && butt_flag1 == 0){
butt_flag1 = 1;
Serial.println("MOUSE_LEFT_PRESS");
//Mouse.press(MOUSE_LEFT);
}
if(butt1 == 0 && butt_flag1 == 1){
butt_flag1 = 0;
Serial.println("MOUSE_LEFT_NO PRESS");
//Mouse.release();
}
if(butt2 == 1 && butt_flag2 == 0){
butt_flag2 = 1;
Serial.println("MOUSE_RIGHT_PRESS");
//Mouse.press(MOUSE_RIGHT);
}
if(butt2 == 0 && butt_flag2 == 1){
butt_flag2 = 0;
Serial.println("MOUSE_RIGHT_NO PRESS");
//Mouse.release();
}
}
void loop() {
mouse_move();
}
Неактивний
И тишина ...
Испугался что-ли? Так здесь не кусаются. Или не знаешь что ответить? Ок, пойдем наглядным путем. Вот твой код без лишнего "мусора", только кнопки. Запусти и попробуй разобраться что у тебя не так.boolean butt_flag1 = 0; boolean butt1; boolean butt_flag2 = 0; boolean butt2; void setup() { Serial.begin(9600); pinMode(11,INPUT_PULLUP); pinMode(12,INPUT_PULLUP); } void mouse_move(){ butt1 = digitalRead(12); butt2 = digitalRead(11); if(butt1 == 1 && butt_flag1 == 0){ butt_flag1 = 1; Serial.println("MOUSE_LEFT_PRESS"); //Mouse.press(MOUSE_LEFT); } if(butt1 == 0 && butt_flag1 == 1){ butt_flag1 = 0; Serial.println("MOUSE_LEFT_NO PRESS"); //Mouse.release(); } if(butt2 == 1 && butt_flag2 == 0){ butt_flag2 = 1; Serial.println("MOUSE_RIGHT_PRESS"); //Mouse.press(MOUSE_RIGHT); } if(butt2 == 0 && butt_flag2 == 1){ butt_flag2 = 0; Serial.println("MOUSE_RIGHT_NO PRESS"); //Mouse.release(); } } void loop() { mouse_move(); }
нет, нас вчера бомбили, вот и не мог выйти на связь
Неактивний
И тишина ...
Испугался что-ли? Так здесь не кусаются. Или не знаешь что ответить? Ок, пойдем наглядным путем. Вот твой код без лишнего "мусора", только кнопки. Запусти и попробуй разобраться что у тебя не так.boolean butt_flag1 = 0; boolean butt1; boolean butt_flag2 = 0; boolean butt2; void setup() { Serial.begin(9600); pinMode(11,INPUT_PULLUP); pinMode(12,INPUT_PULLUP); } void mouse_move(){ butt1 = digitalRead(12); butt2 = digitalRead(11); if(butt1 == 1 && butt_flag1 == 0){ butt_flag1 = 1; Serial.println("MOUSE_LEFT_PRESS"); //Mouse.press(MOUSE_LEFT); } if(butt1 == 0 && butt_flag1 == 1){ butt_flag1 = 0; Serial.println("MOUSE_LEFT_NO PRESS"); //Mouse.release(); } if(butt2 == 1 && butt_flag2 == 0){ butt_flag2 = 1; Serial.println("MOUSE_RIGHT_PRESS"); //Mouse.press(MOUSE_RIGHT); } if(butt2 == 0 && butt_flag2 == 1){ butt_flag2 = 0; Serial.println("MOUSE_RIGHT_NO PRESS"); //Mouse.release(); } } void loop() { mouse_move(); }
ничего не понимаю, все нормально в коде
Неактивний
да, посмотрел
Ну судя по всему смотрел не туда куда надо. Хотя на это
почему при нажатии столько раз нажимает на кнопки
тоже надо обратить внимание. Только проблема у тебя в другом. Если бы ты внимательно смотрел на сообщения, то заметил бы что у тебя сразу при старте идут сообщения что левая и правая кнопка нажата хотя их никто не трогал. А когда ты нажимаешь любую из них, то идет сообщение что кнопка отжата.
Что касается большого количества нажатий - по умолчанию вокви симулирует реальную кнопку с ее дребезгом. Почитай как с этим бороться (только в реальности, а не в симуляторе, там это отключается в настройках).
Ну и вернемся к нашим баранам PULLUP. Объясни что ты делаешь в этой
if(!digitalRead(pin_f) == 1)
и подобных строках?
Неактивний
Cheburek пише:да, посмотрел
Ну судя по всему смотрел не туда куда надо. Хотя на это
почему при нажатии столько раз нажимает на кнопки
тоже надо обратить внимание. Только проблема у тебя в другом. Если бы ты внимательно смотрел на сообщения, то заметил бы что у тебя сразу при старте идут сообщения что левая и правая кнопка нажата хотя их никто не трогал. А когда ты нажимаешь любую из них, то идет сообщение что кнопка отжата.
Что касается большого количества нажатий - по умолчанию вокви симулирует реальную кнопку с ее дребезгом. Почитай как с этим бороться (только в реальности, а не в симуляторе, там это отключается в настройках).
Ну и вернемся к нашим баранам PULLUP. Объясни что ты делаешь в этойif(!digitalRead(pin_f) == 1)
и подобных строках?
Я просто в _____е, зачем, он инвертировал цифровое чтение пина f? хаха это нобелевка полюбому, можно больше не использовать diхаха. Бляяя теперь ясно почему развитие стало в сторону инвертирования.
Думаю стоит напомнить
digitalRead()
Описание
Считывает уровень сигнала HIGH или LOW с указанного цифрового вывода.
Синтаксис
?
digitalRead(pin)
Параметры
pin: номер цифрового вывода, с которого необходимо считать значение (int)
Возвращаемые значения
HIGH или LOW
Пример
Программа устанавливает на выводе 13 тот же уровень сигнала, что и на выводе 7.
?
int ledPin = 13; // светодиод подсоединен к цифровому выводу 13
int inPin = 7; // кнопка подсоединена к цифровому выводу 7
int val = 0; // переменная для хранения считанного значения
void setup()
{
pinMode(ledPin, OUTPUT); // конфигурируем цифровой вывод 13 как выход
pinMode(inPin, INPUT); // конфигурируем цифровой вывод 13 как вход
}
void loop()
{
val = digitalRead(inPin); // считываем значение со входа
digitalWrite(ledPin, val); // выводим на светодиод уровень сигнала на кнопке
}
и по применению (!)
! (логическое отрицание)
True, если операнд false, и наоборот, например:
?
if (!x) {
// ...
}
условие верно, если x - false (x равно 0).
Важно различать логический оператор "И" - && и битовый оператор "И" - &. Тоже самое относится к логическому оператору "ИЛИ" - || и битовому оператору "ИЛИ" - |.
У тебя отрецание чтения что за бред.
Сторінки 1