Paso 8: El código
CÓDIGO
/*
Código de motor, luces y sirena con LED.
Lleva un motor, las luces y la sirena con la entrada de LED luz
circuito:
* un pequeño motor
* pequeño Altavoz
* seis LED
* un fotodiodo
Creado 17/04/12
por Dalton Bolger y Dulcie cabeza
*/
Tenga en cuenta las duraciones: 4 = cuarto nota, 8 = corchea, etc..:
int noteDurations = 16;
int IR = A0;
motor int = 7;
blueLed int = A5;
int rojo = A4;
crea el estado de las luces y intializes el tiempo
int ledState = bajo;
previousMillis largo = 0;
tiempo entre destellos de las luces
largo intervalo de tiempo = 100;
void setup() {}
pinMode (IR, entrada);
pinMode (motor, salida);
pinMode (blueLed, salida);
pinMode (rojo, salida);
Serial.Begin(9600);
}
método para crear las luces sin tener que utilizar un retraso
void runLights() {}
unsigned currentMillis largo = millis();
Si (currentMillis - previousMillis > intervalo) {}
previousMillis = currentMillis;
digitalWrite (A4, ledState);
Si (ledState == LOW)
ledState = alto;
otra cosa
ledState = bajo;
digitalWrite (A5, ledState);
}
}
las sirenas en marcha mientras las luces que destellan continuamente
void lightsAndSirens() {}
melodía de int = 550;
mientras que (melodía < 1200) {}
runLights();
para calcular la duración de la nota, tomar un segundo
dividido por el tipo de nota.
por ejemplo, trimestre Nota = 1000 / 4, corchea = 1000/8, etc..
int noteDuration = 1000/noteDurations;
tono (8, melodía, noteDuration);
Melody melody = 7;
para distinguir las notas, establecer un tiempo mínimo entre ellos.
duración + 30% de la nota parece que funciona bien:
int pauseBetweenNotes = noteDuration *. 5;
Delay(pauseBetweenNotes);
detener la reproducción de tono:
noTone(8);
}
Melody = 1200;
mientras (melodía > 550) {}
runLights();
int noteDuration = 1000/noteDurations;
tono (8, melodía, noteDuration);
Melody = la melodía - 7;
int pauseBetweenNotes = noteDuration *. 5;
Delay(pauseBetweenNotes);
noTone(8);
}
}
Si aparece la luz adecuada, correr el motor, las sirenas y luces
void loop() {}
int velocidad = analogRead (IR) * 1.5;
Serial.println(SPEEDS);
Si (velocidades de > 40 & & velocidades < 500) {}
digitalWrite (motores, velocidades);
lightsAndSirens();
} else {}
analogWrite (rojo, baja);
analogWrite (blueLed, LOW);
analogWrite (motor, baja);
}
Delay(5);
}
Nuestra prueba de funcionamiento del código: http://www.youtube.com/watch?v=-BTyNu-XDLA&feature=youtu.be