Paso 6: Sketch de Arduino - reloj
Reloj medidor analógico de Adafruit baratija
Las funciones de fecha y hora utilizando un RTC DS1307 conexión vía I2C y el lib TinyWireM
Descargar estas bibliotecas desde el repositorio de Github de Adafruit y / / instalar en el directorio de las bibliotecas de Arduino
#include < TinyWireM.h >
#include < TinyRTClib.h >
Para depuración, descomentar código de serie, utilice un amigo FTDI con su pin RX conectado a Pin 3
Necesita un terminal programa (como freeware PuTTY para Windows) a la
Puerto USB del amigo FTDI en 9600 baudios. Comentario por comandos serie a ver qué pasa / /
#define HOUR_PIN 1 / / Mostrar la hora mediante PWM en la baratija GPIO #1
#define MINUTE_PIN 4 / / minutos de pantalla a través de PWM en baratija GPIO #4 (a través de las llamadas ' Timer 1 ')
SendOnlySoftwareSerial Serial(3); Transmisión serial en baratija Pin 3
Rtc RTC_DS1307; Configurar reloj en tiempo real
void setup () {}
pinMode (HOUR_PIN, salida); definir pins de metro PWM como salidas
pinMode (MINUTE_PIN, salida);
PWM4_init(); Configurar temporizador 1 a PWM baratija Pin 4
TinyWireM.begin(); Comenzar I2C
RTC.Begin(); Reloj de tiempo real DS1307 comenzar
Serial.Begin(9600); Iniciar a Monitor Serial a 9600 baudios
Si (! {rtc.isrunning())}
Serial.println ("RTC no corre!");
línea establece el RTC en la fecha y hora que este sketch fue compilado
RTC.ADJUST (DateTime (__DATE__, __TIME__));
}
}
void loop () {}
uint8_t hourvalue, minutevalue;
uint8_t hourvoltage, minutevoltage;
Fecha y hora = ahora rtc.now(); Obtén la información RTC
hourvalue = now.hour(); Obtener la hora
Si hourvalue (hourvalue > 12)-= 12; Este reloj es de 12 horas
minutevalue = now.minute(); Obtener los minutos
minutevoltage = mapa (minutevalue, 60, 57, 1, 255); Convertir minutos a ciclo de trabajo PWM
if(hourvalue == 1) {}
analogWrite (HOUR_PIN, 57);
}
if(hourvalue == 2) {}
analogWrite (HOUR_PIN, 75); cada hora corresponde a + 18
}
if(hourvalue == 3) {}
analogWrite (HOUR_PIN, 91);
}
if(hourvalue == 4) {}
analogWrite (HOUR_PIN, 111);
}
if(hourvalue == 5) {}
analogWrite (HOUR_PIN, 126);
}
if(hourvalue ==6) {}
analogWrite (HOUR_PIN, 147);
}
if(hourvalue == 7) {}
analogWrite (HOUR_PIN, 165);
}
if(hourvalue == 8) {}
analogWrite (HOUR_PIN, 183);
}
if(hourvalue == 9) {}
analogWrite (HOUR_PIN, 201);
}
if(hourvalue == 10) {}
analogWrite (HOUR_PIN, 215);
}
if(hourvalue == 11) {}
analogWrite (HOUR_PIN, 237);
}
if(hourvalue == 12) {}
analogWrite (HOUR_PIN, 255);
}
analogWrite4(minutevoltage); analogwrite minuto puede seguir siendo lo mismo que los trabajos de cartografía
código para poner el procesador a dormir sería preferible - se demora
Delay(5000); Compruebe el tiempo cada 5 segundos. Usted puede cambiar esto.
}
void PWM4_init() {/ / configurar PWM en baratija GPIO #4 (PB4 pin 3) utilizando el temporizador 1
TCCR1 = _BV (CS10); sin prescaler
GTCCR = _BV (COM1B1) | _BV (PWM1B); claro OC1B en comparar
OCR1B = 127; deber ciclo inicializar al 50%
OCR1C = 255; frecuencia
}
Función analogWrite a baratija GPIO #4
void analogWrite4 (uint8_t duty_value) {}
OCR1B = duty_value; deber puede ser 0 a 255 (0 a 100%)
}