RaspberryPi : Plusieurs boutons sur une broche numérique (2 / 2 étapes)

Étape 2: Le programme

J’ai écrit cela sur un nouveau modèle framboise 2. Si vous utilisez un ancien modèle de quelques ré-étalonnage sera nécessaire. Les nombres dans les instructions case devra être plus élevé. Commentez l’instruction switch entier et remplacer temporairement par

printf ("%ld\n", ButtonReading) ;

Cela rendra plus facile de trouver les nouveaux numéros si vous avez besoin d’étalonnage pour une raison quelconque.

Et cela devrait fonctionner si vous ajoutez ou soustrayez les boutons.

Si vous essayez d’appuyer sur la touche plus d’un à la fois seulement la touche numérotée supérieure enregistrera.

Ce programme contienne une nouvelle version améliorée de la fonction de RCtime() que j’ai utilisée dans ce instructable :

 /*********************************************************************** * Filename: Switches.c * This program demonstrates a way to simulate an analog read by measuring * the time it takes to charge a capacitor through a resistance. It uses * resistors in series and buttons between them. ***********************************************************************/ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <wiringPi.h> int ButtonPin = 0; // Resistors in series and capacitor connected to pin zero. /*********************************************************************** * RCtime() - Function, uses a digital pin to measure resistance by first * discharging capacitor then measuring the time it takes to charge the * capacitor through the resistance. When the voltage rises to Vcc/2 the * pin will go high. ***********************************************************************/ long RCtime(int RCpin) { pinMode(RCpin, OUTPUT); // Set pin to output, digitalWrite(RCpin, LOW); // and pull to low. delay(4); // Allow time to let capacitor discharge. long time = micros(); pinMode(RCpin, INPUT); // Now set the pin to an input, pullUpDnControl(RCpin, PUD_OFF); // turn off internal pull down resistor, while (digitalRead(RCpin) == LOW); // and wait for it to go high. long PinVal = micros() - time; return PinVal; } /************************************************************************** * loop() - function runs in a continuous loop until program is stopped. **************************************************************************/ void loop(void) { long ButtonReading = RCtime(ButtonPin); // Read Buttons into ButtonReading. switch(ButtonReading) { case 6200 ... 8000: { printf("%ld - No button pressed.\n", ButtonReading); break; } case 5500 ... 6199: { printf("%ld - button one pressed.\n", ButtonReading); break; } case 4500 ... 5499: { printf("%ld - button two pressed.\n", ButtonReading); break; } case 3000 ... 4499: { printf("%ld - button three pressed.\n", ButtonReading); break; } case 2000 ... 2999: { printf("%ld - button four pressed.\n", ButtonReading); break; } case 1000 ... 1999: { printf("%ld - button five pressed.\n", ButtonReading); break; } } delay(100); } /*********************************************************************** * setup() - function is run by main() one time when the program starts. ***********************************************************************/ void setup(void) { wiringPiSetup(); // Required. RCtime(ButtonPin); // Throw out first reading. } /*********************************************************************** * main() - required ***********************************************************************/ int main(void) { setup(); while(1) { loop(); } } 

Télécharger le programme et compilez-le avec la commande :

gcc -o commutateurs Switches.c - lwiringPi

Et exécutez le programme avec la commande :

sudo. / commutateurs

Articles Liés

Comment : plusieurs boutons sur 1 broche analogique - Tutorial Arduino

Comment : plusieurs boutons sur 1 broche analogique - Tutorial Arduino

Il Arduino uno a 12 broches d'e/s numériques d'availabe et 6 broches d'entrée analogiques, parfois, sur des projets complexes ou « grands », nous avons épuisé les broches numériques. Dans ce tutoriel, vous apprendrez comment utiliser plusieurs bouton
Linkit une utilisation Mobile WIFI hotspot contrôler toutes les broches numériques

Linkit une utilisation Mobile WIFI hotspot contrôler toutes les broches numériques

Son très amusant à contrôler quoi que ce soit avec la radio. Avec linkit Mediatek un son font très facile de contrôler tous les accessoires électriques et électroniques à l'aide de WIFI. Avec le WIFI seul point chaud dans votre téléphone portable en
Contrôle d’ouverture objectif M42 sur des reflex numériques modernes

Contrôle d’ouverture objectif M42 sur des reflex numériques modernes

monture M42 le « pas de vis universel » a été utilisé sur les appareils photo de Pentax, Praktica et d'autres depuis des décennies... donc beaucoup de grands verres anciens sont disponibles à des prix modiques. Beaucoup de gens achètent des adaptateu
Conception de la logique séquentielle pour une horloge numérique d’apprentissage

Conception de la logique séquentielle pour une horloge numérique d’apprentissage

Cette instructable est pour deux raisons 1) à comprendre et apprendre que les fondements de la logique séquentielle 2) utilisent ces connaissances pour créer une horloge numérique.Pendules à lecture digitale ont été construits par des amateurs d'élec
Compléter une horloge numérique avec détecteur de présence (RTC - alarme - PIR - Point de rosée température - humidité -)

Compléter une horloge numérique avec détecteur de présence (RTC - alarme - PIR - Point de rosée température - humidité -)

SalutJ'ai déjà fait quelques projets de pendules à lecture digitale avec Arduino, y compris les écrans LED et LCD, mais celui-ci est plus spécial car j'ai introduit une nouvelle fonctionnalité avec un capteur de mouvement (PIR).Voir la vidéoPrincipal
Comment faire une horloge numérique Arduino

Comment faire une horloge numérique Arduino

Pendules à lecture digitale comptent parmi la grande invention dans le domaine de la science.Avez-vous déjà demandé « Comment faire vos propres pendules à lecture digitale, tout comme dans les films! »???Eh bien, que j'ai également passé, mon enfance
Ajouter une signature numérique en MS Word

Ajouter une signature numérique en MS Word

cette présentation vous montrera comment ajouter une signature numérique dans votre document en format Word. Après que l'ajout de contenu digital signature ne peut pas être modifier plus à moins que vous la supprimiez. Vous pouvez modifier la signatu
À l’aide de lentilles sur caméras numériques de Kiev-10/Kiev-15

À l’aide de lentilles sur caméras numériques de Kiev-10/Kiev-15

le Kiev-10 et Kiev-15 sont des caméras très étranges et insolites réalisé et distribué seulement en URSS. La forme étrange du corps est clairement dérivée de la prestigieuse Ziess Contarex, mais ces Kievs ont été parmi les premiers appareils photo à
Nintendo Game Boy à confectionner une horloge numérique

Nintendo Game Boy à confectionner une horloge numérique

Dans ce instructable je vais vous montrer comment j'ai fait mon propre horloge numérique sur le thème des jeux vidéo rétro d'un ancien cassé Nintendo Game Boy.Chose nécessaire ; Un vieux cassé Nintendo Game Boy ne vous dérange pas de coupe vers le ha
Jouet Mod: Convertir un TR-550 Star trek Tricorder en une montre numérique avec cadre photo

Jouet Mod: Convertir un TR-550 Star trek Tricorder en une montre numérique avec cadre photo

je vais utiliser mon jouet TR 550 Star Trek TNG Tricorder comme un cas pour mon moniteur de l'environnement Arduino Mini, mais il ne cadrait pas. Alors, j'ai trouvé un cadre de porte-clés photo numérique j'ai acheté chez Radio Shack sur la clairance
Espace de sauvegarde : Synchroniser plusieurs iPods sur une iTunes bibliothèque

Espace de sauvegarde : Synchroniser plusieurs iPods sur une iTunes bibliothèque

musique peut occuper une grande quantité d'espace sur un ordinateur, en particulier sur un ordinateur avec plusieurs utilisateurs. Plusieurs utilisateurs, chacun avec leurs bibliothèques de musique peut faire des ravages sur un ordinateur.Par exemple
Caméra de trou de broche numérique

Caméra de trou de broche numérique

J'ai toujours voulu faire une caméra trou de goupille réel mais je n'ai aucune idée de comment traiter le film et je n'ai pas une pièce sombre. Pour résoudre le problème, je me suis tourné mon Nikon dans un trou d'épingle. Maintenant, je peux visuali
Pagaie de steak à l’aide d’une commande numérique par ordinateur X-sculpter

Pagaie de steak à l’aide d’une commande numérique par ordinateur X-sculpter

J'avais besoin d'un moyen d'appliquer une pression uniforme au steak alors qu'elle cuit sur une poêle à frire. J'ai conçu ce « Steak Paddle » pour m'aider avec cela. J'ai inclus quelques « doigts » pour aussi me permettre d'obtenir inbetween les rain
Plusieurs boutons avec une seule broche

Plusieurs boutons avec une seule broche

Bonjour à tous !Beaucoup d'entre nous se produisent à la fin de l'analogique PIN sur notre Conseil d'administration, pour éviter cela vous pouvez créer un circuit qui, selon la tension varie Arduino décider quel bouton a été enfoncé.Etape 1: Le circu