Paso 3: El código
Realmente necesita gracias a bwrussell por su ayuda con este proyecto. Le preguntas de codificación múltiple y respondió todas ellas muy detalladamente para que pudiera entenderlos. Él sabe mucho más acerca de Arduino y la codificación que hago, y no habría podido hacerlo sin él. Ha sido un recurso fantástico y sólo un muy buen muchacho Instructable-maker.
Aquí está el código que he utilizado...
/ * Este código es para mi controlador Arduino/Bluetooth/Android. Una Android aplicación enviará una específica 'byte' de datos Algoritmo: 4 pines se declaran, pinA - pinD. Son pernos 4-7 en el Arduino. El comando es el byte de datos que el código
a este código, el interruptor... sentencia case recibe el 'byte' y da vuelta pernos encendido o apagado dependiendo de lo que recibe.
recibe. rHigh y rLow se utilizan para los valores mínimo y máximo retardo aleatorio. El programa de instalación establece pinA - pinD como salidas
y pone todo tan apagado. Entonces comienza la transferencia serial, si se recibe un byte, se establece como comando. En el bucle
casos 1-4 simplemente activar o desactivar pinA - pinD. Caso 5 establece todos los pines como al azar. Caso 6 enciende todos los pines. Caso 7 vueltas
todos los pines fuera. Caso 8 comienza un patrón intermitente. */
const int pinA = 4;
const int pinB = 5;
const int pinC = 6;
const int pinD = 7;
comando de byte = 0;
const int rHigh = 555;
const int rLow = 100;
int randomPin;
void pinDo (int pin);
void allOn();
void allOff();
void randomStart();
void flashThrough();
void setup()
{
pinMode (pinA, salida); conjunto los relés pin como salida
pinMode (pinB, salida); //
pinMode (pinC, salida); //
pinMode (pinD, salida); //
allOff(); Asegúrese que los pernos estén apagados iniciar
Serial.Begin(9600);
Si (Serial.available() > 0) / / iniciar transferencia serial
{
comando = Serial.read(); Comando SET para igualar la serie de datos
}
}
void loop()
{
Si (Serial.available() > 0)
{
comando = Serial.read();
interruptor (comando)
{
caso 1: / / relé 1
pinDo (pinA);
rotura;
caso 2: / / relé 2
pinDo (pinB);
rotura;
caso 3: / / relé 3
pinDo (pinC);
rotura;
caso 4: / / relé 4
pinDo (pinD);
rotura;
caso 5: / / la función al azar
randomStart();
rotura;
caso 6: / / enciende todos los pines
allOn();
rotura;
caso 7: / / apagar todos los
allOff();
rotura;
caso 8: / / comenzar patrón intermitente
mientras que (comando! = 6 & & comando! = 7)
{
flashOn();
comando = Serial.read(); Verifique que los datos nuevos en serie
}
}
}
}
void pinDo(int pin)
{
Si (digitalRead(pin) == LOW)
{
digitalWrite (pin, HIGH);
}
otra cosa
{
digitalWrite (pin, LOW);
}
}
void randomStart)
{
mientras que (comando! = 6 & & comando! = 7)
{
randomPin = random (pinA, pinD + 1);
Si (digitalRead(randomPin) == LOW)
{
digitalWrite (randomPin, HIGH);
retardo (random (rLow, rHigh));
}
otra cosa
{
digitalWrite (randomPin, LOW);
retardo (random (rLow, rHigh));
comando = Serial.read(); Busque nuevos datos seriales, si es así, salir el parpadeo aleatorio
/ * Estos 2 si las declaraciones están presentes en el caso 5 º porque quería las clavijas inmediatamente
activar o desactivar dependiendo del comando que recibe mientras que en la parte aleatoria de code.* /
Si (comando == 6)
{
allOn();
}
Si (comando == 7)
{
allOff();
}
}
}
}
flashOn nula)
{
digitalWrite (pinA, HIGH); todo en
Delay(150);
digitalWrite (pinB, HIGH);
Delay(150);
digitalWrite (pinC, HIGH);
Delay(150);
digitalWrite (pinD, HIGH);
Delay(400);
allOff();
allOn();
allOff();
allOn();
allOff();
flashThrough();
flashThrough();
flashBack();
flashBack();
}
allOn nula)
{
digitalWrite (pinA, HIGH);
digitalWrite (pinB, HIGH);
digitalWrite (pinC, HIGH);
digitalWrite (pinD, HIGH);
Delay(300);
}
allOff nula)
{
digitalWrite (pinA, LOW); siguiente fase
digitalWrite (pinB, LOW);
digitalWrite (pinC, LOW);
digitalWrite (pinD, LOW);
Delay(350);
}
void flashThrough)
{
digitalWrite (pinA, HIGH); siguiente fase
Delay(200);
digitalWrite (pinA, LOW);
digitalWrite (pinB, HIGH);
Delay(200);
digitalWrite (pinB, LOW);
digitalWrite (pinC, HIGH);
Delay(200);
digitalWrite (pinC, LOW);
digitalWrite (pinD, HIGH);
Delay(200);
digitalWrite (pinD, LOW);
}
(flashBack vacío)
{
digitalWrite (pinD, HIGH); siguiente fase
Delay(200);
digitalWrite (pinD, LOW);
digitalWrite (pinC, HIGH);
Delay(200);
digitalWrite (pinC, LOW);
digitalWrite (pinB, HIGH);
Delay(200);
digitalWrite (pinB, LOW);
digitalWrite (pinA, HIGH);
Delay(200);
digitalWrite (pinA, LOW);
}