Paso 2: Programación de la baratija
Para programar el Abalorio, seguí a la guía de ayuda de Adafruit en https://learn.adafruit.com/introducing-trinket
La lengua es igual a Arduino, pero la configuración para el programador es diferente.
Escribí el código de seguimiento de tiempo, conecte la alimentación de 19:00 -11:59 AM y los fines de semana y desconectar la alimentación del mediodía -6:59 PM. Existe una complicación del tiempo de la baratija, así que básicamente tienes que doble y llegar tan cerca como sea posible. Cada vez que cristal usado puede variar simplemente diciendo 1000 millis = un segundo puede no ser preciso. El número que trabajaron para mi baratija era 30235 millis = un minuto. Supongo que el tipo de procesador se ejecuta a la mitad de lo que es diseñado para que 1 minuto = 30000 milisegundos en lugar de 60000 plus 235 extra para tener en cuenta el error que he encontrado.
Ver mi código abajo y atado:
Actualmente programado para ser enchufado el sábado en 10:00.
Para cambiar esto modificar día y/o hora int dia = 7; 1 = el domingo... 7 = hora de sábado int = 10; requiere plug in al mediodía / / / int relayPinoff = 1; el número del pin LED, INA int relayPin = 0; el número de relés del perno de la, //OUTA INB a la parte inferior izquierda, out al minuto de derecho int = 0; int potencia = 1; 0 = de 1=on(NC) relé se iniciará en modo de NC, encendido previousMillis largo sin signo = 0; las variables de seguimiento es mucho porque el tiempo, medido en milisegundos, / / se convertirá rápidamente en un número más grande que puede almacenarse en un intervalo largo int. = 30235; intervalo de un minuto. Millis no muy exacta
void setup() {/ / configurar los pines digitales como salidas: pinMode (relayPinoff, salida); pinMode (relayPin, salida); digitalWrite (relayPinoff, LOW); digitalWrite (relayPin, HIGH); //switch el relé NC (calentador) delay(25); tiempo de relé //for de 7ms digitalWrite (relayPin, LOW);} void loop() {//rollover en 4,294,967,295ms = 4,294,967s = 71582.78 m = 1193.046 h = 49,7 días //even si después de sobrevolar actual - anterior a calcular la diferencia correcta / / 7302-4,294,967,255 = 7342ms //1hr=60min=3600s=3600000ms , 1 m = 60s = 60000ms / / comprobar si es el momento de cambiar el relé; es decir, si el tiempo / es entre el mediodía o 1900 hrs el relé o potencia al calentador debe estar apagado. Si la diferencia entre la hora actual y la última vez actualizada / / el minuto es más grande que el intervalo, es decir, ha sido un minuto / / entonces actualizar el contador de minutos y el contador de hora si es necesario. unsigned currentMillis largo = millis(); Si (currentMillis - previousMillis > intervalo) {//this sección ejecuta cada minuto if (minutos == 59) {minuto = 0; si (horas == 23) {hora = 0; //midnight si (día < 7) {día = día + 1;} más {día = 1;}} más {hora = hora + 1;}} más {minutos = minutos + 1;} previousMillis = currentMillis;
Si (día > = 2 & & día < = 6) {//weekdays si (hora > = 12 & & hora < 19 & & energía == 1) {//power apagado durante el pico horas mediodía-19:00 digitalWrite (relayPinoff, HIGH); //switch el relé a NO (calentador) //digitalWrite (LEDPin, LOW); //mark que calentador es de delay(25); //for tiempo relé de 7ms digitalWrite (relayPinoff, LOW); //latching relé no requiere ninguna energía después de la conexión eléctrica = 0;} else if (hora > = 19 || hora < 12 & & energía == 0) {digitalWrite (relayPin ALTO); cambiar el relé a NC (calentador) //digitalWrite (LEDPin, alto); marca que el calentador es de delay(25); para tiempo de relé de 7ms digitalWrite (relayPin, bajo); potencia = 1; {}} else if (dia == 1 || día == 7 & y poder == 0) {//unnecessary elseif, pero demuestra punto digitalWrite(relayPin, HIGH); //switch el relé NC (calentador) //digitalWrite (LEDPin, alto); //mark ese calentador está en delay(25); //for tiempo relé de 7ms digitalWrite (relayPin, bajo); energía = 1;}} }