Ви не увійшли.
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).
Важно различать логический оператор "И" - && и битовый оператор "И" - &. Тоже самое относится к логическому оператору "ИЛИ" - || и битовому оператору "ИЛИ" - |.
У тебя отрецание чтения что за бред.
да, посмотрел
Ну судя по всему смотрел не туда куда надо. Хотя на это
почему при нажатии столько раз нажимает на кнопки
тоже надо обратить внимание. Только проблема у тебя в другом. Если бы ты внимательно смотрел на сообщения, то заметил бы что у тебя сразу при старте идут сообщения что левая и правая кнопка нажата хотя их никто не трогал. А когда ты нажимаешь любую из них, то идет сообщение что кнопка отжата.
Что касается большого количества нажатий - по умолчанию вокви симулирует реальную кнопку с ее дребезгом. Почитай как с этим бороться (только в реальности, а не в симуляторе, там это отключается в настройках).
Ну и вернемся к нашим баранам PULLUP. Объясни что ты делаешь в этой
if(!digitalRead(pin_f) == 1)
и подобных строках?
да, посмотрел подключил, понять не могу почему при нажатии столько раз нажимает на кнопки
Ты с 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(); }
нет, нас вчера бомбили, вот и не мог выйти на связь
https://wokwi.com/projects/334278822082904660 как то так
и как по такой ерунде можно что то понять, да ещё и чайнику.
более фиговой схемы трудно представить.
И тишина ...
Испугался что-ли? Так здесь не кусаются. Или не знаешь что ответить? Ок, пойдем наглядным путем. Вот твой код без лишнего "мусора", только кнопки. Запусти и попробуй разобраться что у тебя не так.
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();
}
без ! 1 а так при инверции 0
Чего?! А ну-ка поподробней, нормальными словами
без ! 1 а так при инверции 0
как то так
Блин, что за люди, неужели тяжело нормально нарисовать, чтобы ничего не сливалось !?
Ладно, если ты действительно читал за PULLUP, какой уровень у тебя на пине при не нажатой кнопке?
https://wokwi.com/projects/334278822082904660 как то так
почитал, если изпользовать инпут пулап то идет инертиривание, на как мне его почить скажите пожалуйста
Какое инвертирование? Ты что читал? Журнал "Мурзилка"? Покажи схему (хоть на листочке от руки нарисуй) как ты кнопки подключаешь. Надеюсь не так как в этой теме?
почитал, если изпользовать инпут пулап то идет инертиривание, на как мне его почить скажите пожалуйста
Почитай что такое INPUT_PULLUP и как с ним работать