Я хочу сделать кнопки 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