Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

INDANTESITATL
2022-06-18 21:45:49
г0сть пише:
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).

Важно различать логический оператор "И" - && и битовый оператор "И" - &. Тоже самое относится к логическому оператору "ИЛИ" - || и битовому оператору "ИЛИ" - |.

У тебя отрецание чтения что за бред.

г0сть
2022-06-15 18:43:37
Cheburek пише:

да, посмотрел

Ну судя по всему смотрел не туда куда надо. Хотя на это

почему при нажатии столько раз нажимает на кнопки

тоже надо обратить внимание. Только проблема у тебя в другом. Если бы ты внимательно смотрел на сообщения, то заметил бы что у тебя сразу при старте идут сообщения что левая  и правая кнопка нажата хотя их никто не трогал. А когда ты нажимаешь любую из них, то идет сообщение что кнопка отжата.
Что касается большого количества нажатий - по умолчанию вокви симулирует реальную кнопку с ее дребезгом. Почитай как с этим бороться (только в реальности, а не в симуляторе, там это отключается в настройках).
Ну и вернемся к нашим баранам PULLUP. Объясни что ты делаешь в этой

if(!digitalRead(pin_f) == 1)

и подобных строках?

Cheburek
2022-06-15 18:12:18

да, посмотрел подключил, понять не могу почему при нажатии столько раз нажимает на кнопки

г0сть
2022-06-14 20:59:52

Ты с PULLUP разобрался? Код запускал, что тебе пишет в сериал?

Cheburek
2022-06-14 20:44:36
г0сть пише:

И тишина ...
Испугался что-ли? Так здесь не кусаются. Или не знаешь что ответить? Ок, пойдем наглядным путем. Вот твой код без лишнего "мусора", только кнопки. Запусти и попробуй разобраться что у тебя не так.

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();
}

ничего не понимаю, все нормально в коде

Cheburek
2022-06-13 10:46:36
г0сть пише:

И тишина ...
Испугался что-ли? Так здесь не кусаются. Или не знаешь что ответить? Ок, пойдем наглядным путем. Вот твой код без лишнего "мусора", только кнопки. Запусти и попробуй разобраться что у тебя не так.

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();
}

нет, нас вчера бомбили, вот и не мог выйти на связь

vvr
2022-06-12 21:11:46
Cheburek пише:

https://wokwi.com/projects/334278822082904660 как то так

и как по такой ерунде можно что то понять, да ещё и чайнику.
более фиговой схемы трудно представить.

г0сть
2022-06-12 21:03:05

И тишина ...
Испугался что-ли? Так здесь не кусаются. Или не знаешь что ответить? Ок, пойдем наглядным путем. Вот твой код без лишнего "мусора", только кнопки. Запусти и попробуй разобраться что у тебя не так.

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();
}
г0сть
2022-06-12 20:04:48
Cheburek пише:

без ! 1 а так при инверции 0

Чего?! А ну-ка поподробней, нормальными словами

Cheburek
2022-06-12 20:00:40

без ! 1 а так при инверции 0

г0сть
2022-06-12 19:53:29
Cheburek пише:

как то так

Блин, что за люди, неужели тяжело нормально нарисовать, чтобы ничего не сливалось !?
Ладно, если ты действительно читал за PULLUP, какой уровень у тебя на пине при не нажатой кнопке?

Cheburek
2022-06-12 19:40:45

https://wokwi.com/projects/334278822082904660 как то так

г0сть
2022-06-12 19:29:56
Cheburek пише:

почитал, если изпользовать инпут пулап то идет инертиривание, на как мне его почить скажите пожалуйста

Какое инвертирование? Ты что читал? Журнал "Мурзилка"? Покажи схему (хоть на листочке от руки нарисуй) как ты кнопки подключаешь. Надеюсь не так как в этой теме?

Cheburek
2022-06-12 19:25:02

почитал, если изпользовать инпут пулап то идет инертиривание, на как мне его почить скажите пожалуйста

г0сть
2022-06-12 17:31:58

Почитай что такое INPUT_PULLUP и как с ним работать

Підвал форуму