Paso 6: La codificación.
Puede descargar el bosquejo adjunto. Es realmente muy simple. La primera sección establece todas las variables y constantes que vamos a usar.
const int buttonPin = 0; el número de botones del perno de la
const int ledPin = 13; el número del pin LED para probar
Lo anterior sólo configura los pines utilizados. Entonces usted necesita configurar cada botón y el rango de valores para ese botón:
const int BUTTON1 = 1;
...
const int BUTTON1LOW = 970;
const int BUTTON1HIGH = 1024;
...
En la configuración, simplemente establecer los Estados pin e iniciar el puerto serie (botón que se pulsa se escribirá la salida serial):
pinMode (buttonPin, entrada);
pinMode (ledPin, salida);
Serial.Begin(9600);
Entonces llegamos a la parte interesante. La primera parte del bucle de programa es donde la magia sucede realmente, sino simplemente comprueba que botón fue leído basada en el valor que conseguimos de analogRead():
lectura de int = analogRead(buttonPin);
int tmpButtonState = bajo; la lectura actual del pin de entrada
Si (leer > BUTTON5LOW & & lectura //Read interruptor 5
tmpButtonState = BUTTON5;
} else if (lectura > BUTTON4LOW & & lectura //Read interruptor 4
tmpButtonState = BUTTON4;
} else if
....
} else {}
Se presiona ningún botón;
tmpButtonState = bajo;
}
La siguiente parte solo debounces la pulsación. Básicamente, sin esto, presionar el botón una vez parece que el código como múltiples prensas. Generalmente esto le permitiría usar el botón como un conmutador, pero no estoy haciendo eso.
Estoy planeando sobre el uso de los botones como botones de reset, por lo que necesito detectar cuando se empujan y restablecer una variable específica. Si ((millis()-lastDebounceTime) > debounceDelay) {}
Si (tmpButtonState! = lastButtonState) {}
lastDebounceTime = millis();
}
buttonState = tmpButtonState;
}
lastButtonState = tmpButtonState;
La última parte del programa es sólo una instrucción switch que ejecuta código diferente basado en qué botón se presionó. Para la prueba, todos ellos sólo encienda construido en LED en el pin 13.
{Switch(buttonState)}
caja baja:
digitalWrite (ledPin, LOW);
rotura;
caso de BUTTON1:
digitalWrite (ledPin, HIGH);
rotura;
...
}
Y en esencia es lo fácil que es controlar varios botones. Yo no he implementado esto en mi proyecto todavía, por lo que podría hacer una biblioteca para él en algún momento si necesito.