Paso 5: El esquema y el código
Atar las conexiones comunes a tierra significa que estás implementando lógica negativa. Es decir, que un interruptor activo está indicado por un bajo (GND) en el perno de la señal de que el interruptor.
El ejemplo de código ilustra activando las resistencias pull-up para las patillas SIPinput y PUFFinput por lo que no necesitará añadir resistencias pull-up en su diseño. Simplemente permitir que los interruptores conducir su señal baja para indicar que han sido activados.
Siguiente es el segmento de código que es pertinente a la aplicación de este SIP y conmutador de soplo en mi diseño:
// ----------------------------------------------------------------
SIP y segmento de código de CONTROL de soplo
Mark Theobald - www.DisabledAdventurers.com
Libre de cualquier forma te gusta!
// ----------------------------------------------------------------
// ----------------------------------------------------------------
ASIGNACIONES DE PINES
// ----------------------------------------------------------------
int PUFFinput = 9;
int SIPinput = 10;
// ----------------------------------------------------------------
CONSTANTES de tiempo - para oscilador de 16MHz
// ----------------------------------------------------------------
VeryLongCt largo = 100000; Aproximadamente 2 segundos
MinLongCt largo = 20000; Aproximadamente 0,6 segundo
DebounceCt largo = 4000; Aproximadamente 0.1 segundo
// ----------------------------------------------------------------
// ----------------------------------------------------------------
void setup() {}
pinMode (SIPinput, entrada);
pinMode (PUFFinput, entrada);
digitalWrite (SIPinput, alto); Encender 20k de enderezamiento
digitalWrite (PUFFinput, alto); } //to simplificar la entrada de interruptor
// ----------------------------------------------------------------
// ----------------------------------------------------------------
void loop() {}
int GotCmd;
Contador de tiempo;
Contador = 0; Iniciar cada bucle con el Reset de contador a 0
GotCmd = 0;
mientras (! digitalRead (SIPinput)) {//Negative lógica está siendo utilizada.
Agregar código aquí para controlar el mundo exterior y reaccionar cuando sea necesario
Si (contador ++ > VeryLongCt) {}
GotCmd ++;
Añadir código a RespondToVeryLongSip(); sin esperar a la versión de Sip
mientras (! digitalRead (SIPinput)) //then espera comunicado de la Sip
Agregar código aquí para controlar el mundo exterior y reaccionar cuando sea necesario
} }
if (!. GotCmd) {//There no era un muy largo SIP...
Si (contador > MinLongCt) //but allí era un sorbo largo
Añadir código a RespondToLongSip();
else if (contador > DebounceCt) / / o, hubo un sorbo corto válido
Añadir código a RespondToShortSip(); }
Contador = 0;
GotCmd = 0;
mientras (! digitalRead (PUFFinput)) {}
Agregar código aquí para controlar el mundo exterior y reaccionar cuando sea necesario
Si (contador ++ > VeryLongCt) {}
GotCmd ++;
Añadir código a RespondToVeryLongPuff(); sin tener que esperar para el lanzamiento de hojaldre
mientras (! digitalRead (PUFFinput)) //then esperar para el lanzamiento de hojaldre
Agregar código aquí para controlar el mundo exterior y reaccionar cuando sea necesario
} }
if (!. GotCmd) {}
Si (contador > MinLongCt) //Long PUFF
Añadir código a RespondToLongPuff();
else if (contador > DebounceCt)
Añadir código a RespondToShortPuff(); } } }
// ----------------------------------------------------------------
FINAL DEL SEGMENTO DE CÓDIGO
// ----------------------------------------------------------------
Tenga en cuenta que los segmentos de código para la sección SIP y el hojaldre son idénticos.
Cuando un sorbo o un PUFF se mantiene durante un tiempo largo (2 + segundos), el código asume que algunos deben tomarse medidas inmediatamente sin esperar a que la SIP o PUFF ser lanzado. De lo contrario, el código ejecutará "RespondTo... () "funciones basan en SIP muy cortos (0.1 a 0.6 segundos) y soplos y algo SIP ya (0.6 a 2 segundos) y soplos. Las constantes de tiempo se puede ajustar como el diseñador se siente es necesario.