Paso 5: Codificación de todo y que se haga llamar!
Cada uno tiene sus diferentes estilos de codificación, pero voy a dar un breve fragmento de cómo programé para mi letrero.
Aquí es cómo declaró un montón de variables. Me gusta las variables, así que hacer un montón. Más o menos, una variable que contenga lo que es cada pin y luego una variable correspondiente para definir lo que es el valor de ese pin. Por lo tanto, yo básicamente inicializar las clavijas en la función de configuración. Para pernos de 2-5 hago un digitalWrite rápido para activar las resistencias pulldown para guardarlo de la flotación. También puede Agregar un parámetro al comando PinMode para hacer lo mismo.
En la función de bucle, sólo mantener un ojo para alguna actividad en las líneas de IR, y si veo alguno, determinar qué botón es empujado y luego ejecute algún código más. He añadido una rutina de OutputLight que tiene una coordenada y un tiempo para mostrar en el ms. jugando con este código, usted puede hacer fácilmente las luces de hacer lo que queráis!
Edward.Norris
Los pines de entrada del mando a distancia
const int remoteBit0 = 2;
const int remoteBit1 = 3;
const int remoteBit2 = 4;
const int remoteBit3 = 5;
Valor de los pines
int remotePin0Value;
int remotePin1Value;
int remotePin2Value;
int remotePin3Value;
pernos de x bits:
const int xBit0 = 6;
const int xBit1 = 7;
const int xBit2 = 8;
valores para x
int xBit0Val;
int xBit1Val;
int xBit2Val;
pernos y coronas de:
const int yBit0 = 9;
const int yBit1 = 10;
const int yBit2 = 11;
valor de y
int yBit0Val;
int yBit1Val;
int yBit2Val;
El perno para indicar que el sistema debe proporcionar salida.
const int activateLightPin = 13;
Esto es para controlar el E3 activar la luz para activar las fichas
int inUseState = bajo;
void setup() {}
Configurar los pines para recibir la entrada del mando a distancia
pinMode (remoteBit0, entrada);
pinMode (remoteBit1, entrada);
pinMode (remoteBit2, entrada);
pinMode (remoteBit3, entrada);
digitalWrite (remoteBit0, bajo);
digitalWrite (remoteBit1, bajo);
digitalWrite (remoteBit2, bajo);
digitalWrite (remoteBit3, bajo);
Salida de valores para determinar x e y factores
pinMode (xBit0, salida);
pinMode (xBit1, salida);
pinMode (xBit2, salida);
pinMode (yBit0, salida);
pinMode (yBit1, salida);
pinMode (yBit2, salida);
pinMode (activateLightPin, salida);
inUseState == baja; Configuración inicial para obtener datos
digitalWrite (xBit0, bajo);
digitalWrite (xBit1, bajo);
digitalWrite (xBit2, bajo);
digitalWrite (yBit0, bajo);
digitalWrite (yBit1, bajo);
digitalWrite (yBit2, bajo);
digitalWrite (activateLightPin, bajo); Apague todos los
}
void loop() {}
Pura PRECAUCIÓN
Si (inUseState == LOW)
{
Obtener los valores de la distancia
int remotePin0Value = digitalRead(remoteBit0);
int remotePin1Value = digitalRead(remoteBit1);
int remotePin2Value = digitalRead(remoteBit2);
int remotePin3Value = digitalRead(remoteBit3);
Compruebe si se hace clic en uno
Si (remotePin0Value == alta ||
remotePin1Value == alta ||
remotePin2Value == alta ||
remotePin3Value == HIGH)
{
inUseState = alto;
Disparar la secuencia remota
Si (remotePin0Value == HIGH) //Button A
{
OutputLight(0,0,1000);
}
Si (remotePin1Value == HIGH) //Button B
{
OutputLight(1,1,1000);
}
}
Si (remotePin2Value == HIGH) //Button C
{
OutputLight(2,2,1000);
}
Si (remotePin3Value == HIGH) //Button D
{
OutputLight(3,3,1000);
}
Gire a todas luces fuera
digitalWrite (xBit0, bajo);
digitalWrite (xBit1, bajo);
digitalWrite (xBit2, bajo);
digitalWrite (yBit0, bajo);
digitalWrite (yBit1, bajo);
digitalWrite (yBit2, bajo);
digitalWrite (activateLightPin, bajo);
inUseState = bajo;
}
}
void OutputLight (int X, int Y, msLightDelay largo sin signo)
{
xBit0Val = bajo;
xBit1Val = bajo;
xBit2Val = bajo;
yBit0Val = bajo;
yBit1Val = bajo;
yBit2Val = bajo;
Si (1 & & (X & B001))
{
xBit0Val = alto;
}
Si (1 & & (X & B010))
{
xBit1Val = alto;
}
Si (1 & & (X y B100))
{
xBit2Val = alto;
}
Si (1 & & (Y & B001))
{
yBit0Val = alto;
}
Si (1 & & (y B010))
{
yBit1Val = alto;
}
Si (1 & & (y B100))
{
yBit2Val = alto;
}
digitalWrite (xBit0, xBit0Val);
digitalWrite (xBit1, xBit1Val);
digitalWrite (xBit2, xBit2Val);
digitalWrite (yBit0, yBit0Val);
digitalWrite (yBit1, yBit1Val);
digitalWrite (yBit2, yBit2Val);
digitalWrite (activateLightPin, HIGH);
Si (msLightDelay > 0)
{
msLightDisplayStartTime = millis();
mientras que (millis() < msLightDisplayStartTime + msLightDelay)
{
}
}
digitalWrite (activateLightPin, bajo);
}