RaspberryPi: Varios botones en uno de los pines Digital (2 / 2 paso)

Paso 2: El programa

Escribí esto en un nuevo modelo de frambuesa 2. Si está utilizando el modelo antiguo algunos recalibración será necesario. Los números de las declaraciones del caso tendrá que ser mayor. Comentario a la sentencia switch todo y sustituirlo temporalmente por

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

Esto hará más fácil encontrar los nuevos números si necesita volver a calibrar por cualquier razón.

Y debe funcionar si agregar o quitar botones.

Si intentas más de un botón en un momento se registrará sólo el botón numerado más alto.

Este programa contiene una nueva versión mejorada de la función RCtime() que utilicé en este instructivo:

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

Descargar el programa y compilarlo con el comando:

gcc -o interruptores Switches.c - lwiringPi

Y ejecutar el programa con el comando:

sudo. / interruptores

Artículos Relacionados

Utilizando uno de los pines analógico para leer 4 botones - Arduino

Utilizando uno de los pines analógico para leer 4 botones - Arduino

La idea es leer el resistanse differense entre ellos mediante resistencias.Los botones están conectados de manera tal que cada botón añade las resistencias de los botones de delante de él a un cuento por entregas hacia fuera puesto.Utilicé 4 220 ohm
Cómo: varios botones en el Pin analógico 1 - Tutorial de Arduino

Cómo: varios botones en el Pin analógico 1 - Tutorial de Arduino

La placa de Arduino uno tiene 12 pines de I/O digitales disponible y 6 pines de entrada analógicas, a veces, en proyectos complejos o 'grandes', corremos de pines digitales. En este tutorial usted aprenderá cómo utilizar varios botones en un pin anal
Acceso a 5 botones por medio de 1 pin Arduino - nuevo

Acceso a 5 botones por medio de 1 pin Arduino - nuevo

hice el Instructible original que se basa en más de un año (lo puedes ver aquí para ver algunas de la teoría del todo cómo funciona:). Para hacer el cuento largo, me mudé a otro país a pocas semanas después de y no han jugado con cualquier electrónic
LinkIT uso un móvil WIFI hotspot controlar todos los pines digitales

LinkIT uso un móvil WIFI hotspot controlar todos los pines digitales

Su muy divertido controlar nada con wireless. Con Mediatek linkit uno su hacen muy fácil de controlar los accesorios eléctricos y electrónicos, utilizando el WIFI. Con WIFI solo punto caliente en tu móvil usando el navegador para controlar todos los
Cómo hacer uno de esos hoyos en uno de los juegos.

Cómo hacer uno de esos hoyos en uno de los juegos.

Siempre he querido tener uno de estos juegos, pero siempre son tan terriblemente caros. Así que hoy voy a enseñar a todos que lee este cómo hacer uno. Este es mi primer instructivo, por lo que podría aspirar;)Paso 1: materiales Se necesita:Un 11x3in
LinkIT uno-IR Control remoto Digital ON/OFF

LinkIT uno-IR Control remoto Digital ON/OFF

Su mundo remoto ahora. Ahora un días los seres humanos ser muy perezoso para traje y encender la luz, ventilador, Tv, etc. También hacemos el hombre perezoso con la misma idea de usar un enlace uno. Use un control remoto para encender y apagar los ap
Varios botones con un solo perno

Varios botones con un solo perno

Hola a todos!Muchos de nosotros pasar a final el analog PIN en nuestro tablero, para evitar esto usted puede crear un circuito que dependiendo de la tensión varía Arduino decidir que botón se presionó.Paso 1: El circuitoEn primer lugar tenemos que:-A
Kit de supervivencia de uno de los soldados SF

Kit de supervivencia de uno de los soldados SF

este kit de supervivencia es el producto de muchos años en países del tercer mundo como un soldado y un contratista. He llevado y utilizar más de una vez, este kit en centro y Sudamérica, África y Afganistán. Encaja perfectamente en una pequeña bolsa
Cómo reorganizar los Pins de Pinterest

Cómo reorganizar los Pins de Pinterest

en este video te voy a mostrar cómo cambiar clavijas en un tablero de Pinterest.  Es clase de un dolor pero se puede hacer si tu uno de esos super organizado tipos de personas.  Creo que Pinterest es una gran manera de organizar las cosas que te gust
LinkIt uno: En los comandos por Bluetooth SPP

LinkIt uno: En los comandos por Bluetooth SPP

En este instructable, yo voy hablar sobre cómo utilizar Bluetooth SPP de LinkIt uno para funcionar como una interfaz en la Junta de desarrollo.En Resumen, usted puede probar estos comandos a través de Bluetooth a un LinkIt y puede obtener respuestaAT
Tutorial de Overkill y dos para uno de los logros de Halo 3

Tutorial de Overkill y dos para uno de los logros de Halo 3

este es un tutorial para los logros de halo 3 de xbox 360 Overkill y dos para uno.Encontré estos dos son los más difíciles en el juego pero si usted trata con estos métodos debe hacerlo fácilmente!
Uno de los mejores juegos de Casinos en línea

Uno de los mejores juegos de Casinos en línea

Aprender los trucos y para encontrar uno de la mejor plataforma de juegos de azar de casino en línea para ganar premios de dinero. Hemos hecho seguros que tienes acceso a los casinos ranuras superiores que aceptan jugadores de Estados Unidos, y que c
Cobertura de la red tres: Uno de los mejores en el Reino Unido

Cobertura de la red tres: Uno de los mejores en el Reino Unido

en la última década, la tecnología de comunicación inalámbrica ha avanzado enormemente.  Mientras que estábamos bastante contentos con la tecnología de 2G hace menos de una década, ahora tenemos 3G.  ¿Y esto qué tiene que ofrecer?¿Qué es 3G?3G es una
Uno mismo-ajuste placa Digital contador basado en ICStation ATMEGA2560

Uno mismo-ajuste placa Digital contador basado en ICStation ATMEGA2560

ICStation Equipo de presentarles este Self Digital contador de placa con ICStation ATMEGA2560. El contador digital placa funciona bajo DC5V. Este sistema hace uso del sensor infrarrojo correlación para recopilar información de los tiempos que el obje