Paso 15: Botón de interruptor
A veces usted estará interesado en el momento exacto un botón es presionado o liberado, por lo que puede desencadenar un evento en su bosquejo. En este caso usted necesitará almacenar currentState del botón y compararlo con el último estado registrado. Si el currentState es alta y la lastState es baja, usted sabe que sólo se ha pulsado el botón. Echa un vistazo en el código siguiente:Usé algo nuevo en mi if declaración:
Si (currentState == alto & & lastState == LOW)Esto se lee como "si currentState es alta y lastState es baja", & & nos permite comprobar la verdad de muchas cosas en el mismo if instrucción. También puede utilizar || ("o") para poner a prueba es una cosa o la otra es cierto. Leer más aquí.
Usted notará también que la siguiente línea aparece dos veces en el código anterior:
Delay(1);
Este retraso fue puesto allí para dar la hora botón para colocar a voltaje constante antes de empezar a medir una vez más, que esto se llama botón contra rebotes; evita que nos cuenta una sola vez dos prensas debido al botón de la charla. Utilizar un retraso de botón contra rebotes es fino para este sencillo ejemplo, pero si se mide un montón de botones de los retrasos se suman y que el código se ejecuta muy lento. Esto podría terminar dando su hardware a una sensación de retraso. Voy a encarar algunas mejores técnicas para hacer contra rebotes más adelante en esta clase.
Este código también introduce un nuevo tipo de datos: booleanos. Valores booleanos se utilizan para almacenar 1 bit pedazos de información, cosas como verdadero/falso, activado/desactivado, 1/0, de alta y baja. En mi código lo utilizado para almacenar el actual y último estado del botón (alto o bajo).
Aquí es cómo podríamos utilizar esto para cambiar un LED en y off cada vez que se pulsa el botón:
En el código anterior configurar una variable llamada "ledState" para almacenar el estado actual del LED, entonces cada vez que se presionó el botón, digitalWrite se utiliza para establecer el LED al estado opuesto y había guarda un nuevo ledState.
Yendo aún más lejos, puede utilizar el código del botón alternar con el código de fader del ejemplo RGB LED para las siguientes:
He añadido una función auxiliar adicional en el código anterior para ayudar a elegir el próximo color a desvanecerse a:
int getNextColor (int color) {}
Si (color == rojo) volver verde;
Si (color == verde) volver azul;
Si (color == azul) volver rojo;
}
Declaré la función con un int a Arduino que debe esperar a que la función devuelve un número (en este caso, el número del pin Arduino que ha conectado a uno de los pines de los LED RGB. El si declaraciones mira un poco diferentes que lo que hemos visto antes, podría haber escrito la función como esta:
.. .y que podría funcionar de la misma manera exacta. Si sólo necesita ejecutar una línea en un if instrucción, puede usar la notación abreviada:
Si (algo) HacerAlgo;
sin llaves ni saltos de línea.
Continuar con la parte 2 de esta serie aquí, o aprende a conectar MIDI a entradas y salidas de Arduino.