Как я могу обнаружить одновременное нажатие кнопки - PullRequest
0 голосов
/ 01 мая 2019

Я хочу сделать кнопки 1 и 2 беззвучными при одновременном нажатии обеих кнопок.Это работает ... но только иногда.Иногда он будет печатать только «нажатие сима», а иногда - «нажатие кнопки-1» и «нажатие сима»

Я хочу сделать так, чтобы одновременно нажимались клавиши btn 1 и btn 2они не печатают «нажатие кнопки-1» или «нажатие кнопки-2», но они печатают «нажатие кнопки sim»

Как я мог это сделать?

Я пытался исследовать одновременнонажимает кнопку, но я сам не могу найти что-либо для проводкиPi

Включает

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <wiringPi.h>

#define sd 200
#define pin1 8
#define pin2 7

int a, b, c = 1;

Кнопка 1 Кнопка Нажмите

void *btn1() {
    while(1) {
        if(!digitalRead(pin1) && digitalRead(pin2) && a) {
            a = 0;
            printf("Button-1 pressed\n");
            delay(sd);
        }
        if(digitalRead(pin1) && !a) {
            a = 1;
        }
    }
}

Кнопка 2 Нажмите кнопку

void *btn2() {
    while(1) {
        if(!digitalRead(pin2) && digitalRead(pin1) && b) {
            b = 0;
            printf("Button-2 pressed\n");
            delay(sd);
        }
        if(digitalRead(pin2) && !b) {
            b = 1;
        }
    }
}

Одновременное нажатие кнопки

void *simbtn() {
    while(1) {
        if(!digitalRead(pin1) && !digitalRead(pin2) && c) {
            c = 0;
            printf("Sim pressed\n");
            delay(sd);
        }
        if(digitalRead(pin1) && digitalRead(pin2) && !c) {
            c = 1;
        }
    }
}

Создание потока

int main(void) {
    wiringPiSetupGpio();

    pthread_t tid[2];
    pthread_create(&tid[0], NULL, btn1, NULL);
    pthread_create(&tid[1], NULL, btn2, NULL);
    pthread_create(&tid[2], NULL, simbtn, NULL);

    while(1) {}

    return 0;
}

Ожидаемый результат при одновременном нажатии btn 1 и 2:

Sim pressed

Фактический результат принажимаются оба (6 раз, чтобы дать хороший пример):

Button-1 pressed
Sim pressed
Button-1 pressed
sim pressed
button-2 pressed
sim pressed
Button-1 pressed
Sim pressed
Button-2 pressed
sim pressed
button-2 pressed
sim pressed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...