Paso 3: Ganarle al reloj!
Lo llamamos "Vencer el reloj" en lugar de "Difundir la bomba", pero realmente, utiliza el mismo que Arduino Uno junto con las 4 líneas por 20 caracteres, LCD y estamos utilizando botones (para parar el reloj) en lugar de ofrecer los cables a ser cortado para parar el reloj.
Arduino Uno es de aproximadamente $20, la pantalla LCD es de menos de $10, tiro en unos pocos botones por menos de $5 y LEDs y las resistencias de otros $5. El contenedor era libre y volver a un botiquín de primeros auxilios. Así que para aproximadamente $40, tiene un objetivo único multi juego. Digo multi del propósito, porque este mismo producto podría usarse fácilmente para volver a crear una versión de Simon como fue sugerido por un montón de gente.
Aquí está nuestro código:
/*
* Reloj de cuenta regresiva FDR
* 2/27 fijo LED por lo que sería más brillante añadiendo pinMode (led1, salida);
* Añadido todas las luces LCD
* Añadido LCD claro, sin retroiluminación y demora a fin de código.
* Escrito por Marc Tessier y Chip Thomas
*/
#include < Time.h >
#include < Wire.h >
#include < DS1307RTC.h > / / una biblioteca básica de DS1307 que devuelve la hora como un time_t
#include < LiquidCrystal_I2C.h >
Lcd(0x3f,20,4) de LiquidCrystal_I2C; configurar la dirección de LCD a 0x27 para una 20 caracteres y 4 línea de la pantalla
int i = 0;
int led1 = 12;
int led2 = 11;
led3 int = 10;
led4 int = 8;
led5 int = 7;
led6 int = 6;
const int buttonPin = 2;
int buttonState = 0;
void setup() {}
pinMode (led1, salida);
pinMode (led2, salida);
pinMode (led3, salida);
pinMode (led4, salida);
pinMode (led5, salida);
pinMode (led6, salida);
pinMode (buttonPin, entrada);
Serial.Begin(9600);
LCD.init();
LCD.Backlight();
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print ("FDR reloj de cuenta regresiva!");
Delay(1000);
setSyncProvider(RTC.get); la función para obtener la hora del RTC
if(timeStatus()! = ajuste del horario)
Serial.println ("no se puede sincronizar con el RTC");
otra cosa
Serial.println ("RTC ha establecido la hora del sistema");
}
void loop()
{
mientras (i < 5)
{
digitalClockDisplay();
Delay(1000);
i = i + 1;
}
LCD.Clear();
LCD.Backlight();
lcd.setCursor(0,0);
LCD.Print ("cuenta regresiva iniciados!");
Delay(1000);
para (int i = 150; i > 10; i = i-1)
{
buttonState = digitalRead(buttonPin);
lcd.setCursor(8,2);
printDigits(i-1);
if(i < 100)
lcd.setCursor(2,2);
LCD.Print(' ');
tono (9, 4500, 80);
digitalWrite (LED 1, HIGH);
retardo (i / 2);
digitalWrite (LED 1, bajo);
retardo (i / 2);
Si (buttonState == LOW)
{
LCD.Clear();
LCD.Print ("¡ buen trabajo!");
rotura;
}
}
lcd.setCursor(0,1);
LCD.Print(0);
para (int i = 0; i < 30; i ++)
{
digitalWrite (LED 1, HIGH);
tono (9,5000, 50);
Delay(50);
digitalWrite (LED 1, bajo);
Delay(25);
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print("sorry");
Delay(25);
digitalWrite (led2, HIGH);
Delay(25);
digitalWrite (led2, LOW);
Delay(25);
lcd.setCursor(5,1);
LCD.Print("sorry");
Delay(25);
digitalWrite (LED 3, alto);
Delay(25);
digitalWrite (LED 3, bajo);
Delay(25);
lcd.setCursor(10,2);
LCD.Print("sorry");
Delay(25);
digitalWrite (led4, HIGH);
Delay(25);
digitalWrite (led4, LOW);
Delay(25);
lcd.setCursor(15,3);
LCD.Print("sorry");
Delay(25);
digitalWrite (led5, HIGH);
Delay(25);
digitalWrite (led5, LOW);
Delay(25);
lcd.setCursor(15,0);
LCD.Print("sorry");
Delay(25);
digitalWrite (led6, HIGH);
Delay(25);
digitalWrite (led6, LOW);
Delay(25);
lcd.setCursor(0,3);
LCD.Print("sorry");
}
LCD.Clear();
lcd.noBacklight();
Delay(10000);
lcd.setCursor(0,0);
LCD.Print("boom");
Delay(2000);
}
void digitalClockDisplay() {}
reloj digital el tiempo
lcd.setCursor(1,1);
LCD.Print(month());
LCD.Print("/");
LCD.Print(Day());
LCD.Print("/");
LCD.Print(Year());
LCD.Print("");
LCD.Print(hour());
LCD.Print(":");
printDigits(minute());
LCD.Print(":");
printDigits(second());
}
void printDigits (int dígitos) {}
función de utilidad para la visualización del reloj digital: impresiones anteriores a colon y lleva 0
if(digits < 10)
LCD.Print('0');
LCD.Print(digits);
}