RaspberryPi: Meerdere knoppen op een Digital Pin (2 / 2 stap)

Stap 2: Het programma


Ik schreef dit op een nieuwe Raspberry model 2. Als u van een ouder model gebruikmaakt zullen sommige re-kalibratie nodig. De getallen in de zaak verklaringen moeten worden hoger. Commentaar uit de hele schakelaarverklaring en tijdelijk vervangen door

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

Dit zal gemakkelijker te vinden van de nieuwe nummers als u wilt het opnieuw kalibreren voor welke reden dan ook.

En het zou moeten werken als u optellen of aftrekken van de knoppen.

Als u probeert meer dan één knop ingedrukt op een moment dat alleen de hoger genummerde knop zal registreren.

Dit programma bevat een nieuwe verbeterde versie van de functie van de RCtime() die ik in dit instructable gebruikt:

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

Het programma downloaden en compileren met het commando:

gcc -o schakelaars Switches.c - lwiringPi

En start het programma met het commando:

sudo. / schakelaars

Gerelateerde Artikelen

Meerdere knoppen met een enkele pin

Meerdere knoppen met een enkele pin

Hallo iedereen!Veel van ons overkomen uiteindelijk de analoge PIN op ons bord, om te voorkomen dat dit kunt u een circuit dat afhankelijk van de spanning varieert van Arduino beslissen welke knop werd ingedrukt.Stap 1: Het circuitAllereerst moeten we
How to: meerdere knoppen op 1 analoge Pin - Arduino tutorial Arduino Tutorial

How to: meerdere knoppen op 1 analoge Pin - Arduino tutorial Arduino Tutorial

De Arduino uno board heeft 12 beschikbare digitale I/O pinnen en 6 analoge input pinnen, soms, op complexe of 'grote' projecten, we lopen uit digitale pinnen. In deze tutorial leert u hoe het gebruik van meerdere knoppen op een analoge pin.Bijvoorbee
Bouwen van een digital pin-hole camera

Bouwen van een digital pin-hole camera

ik altijd al wilde proberen het maken van foto's met een pinhole camera, maar het was een van die dingen die ik nooit helemaal heb rond om. Nu met digitale camera's zijn makkelijk.Je moet een digitale single lens reflex (SLR) camera met een verwissel
Lenzen voor een Digital pin hole camera

Lenzen voor een Digital pin hole camera

dit Instructable is niet om je te leren hoe maak je een pin gat, het is het maken van lenzen voor de pin hole die u al hebt gemaakt.U MOET:Een oude DVD-speler die u voor onderdelen vernietigen kan,Hulpprogramma's voor het openen van de DVD-speler,Kar
5 knoppen toegang via 1 pin van de Arduino - Revisited

5 knoppen toegang via 1 pin van de Arduino - Revisited

ik heb gemaakt van de oorspronkelijke Instructible dat dit is gebaseerd op meer dan een jaar geleden (je ziet het hier en Bekijk enkele van de theorie rond hoe dit werkt:). Om een lang verhaal kort, ik verplaatst naar een ander land een paar weken na
Hoe te lezen veel schakelaars met een MCU-Pin

Hoe te lezen veel schakelaars met een MCU-Pin

hebben u ooit geweest chugging weg op een project(en) en het project houdt groeit en groeit, terwijl u er meer dingen aan toevoegen (wij noemen dat een Feaping-Creaturism)?  Op een recente project, ik was het bouwen van een frequentie meter en een vi
Meerdere analoge ingangen met behulp van een analoge pin

Meerdere analoge ingangen met behulp van een analoge pin

Hallo!In dit instructible zal ik uitleggen hoe te lezen waarden van meer dan een sensor met behulp van slechts één analoge invoer pin.U kan zich afvragen waarom u dit wilt.Wanneer u van een Raad van Nodemcu, gebruikmaakt zoals geïllustreerd in de afb
Atmel opstarten 3: Binky een-poort, PIN, DDR en LED

Atmel opstarten 3: Binky een-poort, PIN, DDR en LED

M. A. Parker c2015Blinky, de knipperende LED, laat zien hoe met de taal C/C++ in Atmel Studio (AS) om te controleren de Atmel MCU poorten voor input en output (dat wil zeggen, IO) en het 'geheim' leven van de Atmel poort, PIN en DDR registers blijkt.
Hoe maak een 9-pins serieel naar Ethernet-kabel

Hoe maak een 9-pins serieel naar Ethernet-kabel

deze instructies zal u tonen hoe maak een 9-pins serieel naar Ethernet-kabel. Seriële kabels worden gebruikt om te controleren en configureren van apparaten met seriële poorten. Bij het ene uiteinde converteren naar Ethernet, kan het signaal verder r
Het gebruik van meerdere bureaubladen op een windows-computer

Het gebruik van meerdere bureaubladen op een windows-computer

U weet dit: U zit in een café met behulp van uw windows laptop. En de coole jongens rond u hun MacBooks met flick rond hun desktops als ze kreeg niets anders te doen. Dit instructable leert u, hoe het gebruik van meerdere bureaubladen op een Windows-
Hack een HC SR04 op een 3-pin sensor

Hack een HC SR04 op een 3-pin sensor

Ik hoop dat jullie allemaal hebben gehoord van dat dure-maar-geweldig parallax ping))) sensor. Ik kan niet een van hen het mijn budget ontploffing in uiterst kleine kleine stukjes puin rondzweven kopen (30$ ik bedoel). Dus wat doe je? letterlijk kapp
How-to: Schil een Bowling pin...

How-to: Schil een Bowling pin...

Dus een vriend van mij een fanatieke bowler is. Hij heeft zelfs een part time baan onderhoud aan een lokale steegje doen... Hij bracht me een dozijn pinnen de andere dag en ik ben niet precies zeker wat te doen met hen, maar ik ben een houten turner
Kan de Pi-top RaspberryPi laptop act zoals een RaspberryPi?

Kan de Pi-top RaspberryPi laptop act zoals een RaspberryPi?

De Pi-top is een RaspberryPi laptop die wordt geleverd als een kit die u zelf bouwen. De kwaliteit is zeer goed en ik was in staat om te voltooien de te bouwen in minder dat uurtje. Ik vond vooral de dia uit paneel dat gemakkelijker binnen te komen,
Hoe maak je een kleding Pin mij

Hoe maak je een kleding Pin mij

In dit instructable, leert u hoe maak je een kleding Pin-mijn die is geweldig voor, grappen. Het "klappen omhoog" met een klein effect. Het zal schrikken de heck van vervelende roomates, of alle andere mensen die u wilt schrikken.Stap 1: Verzame