Cwik Clock v1.0 - un reloj binario de Arduino (9 / 15 paso)

Paso 9: Prototipos la pantalla ajuste de la hora y segundos

Ahora que tenemos el programa básico para el funcionamiento de un reloj binario, el know-how de los potenciómetros y son expertos en el uso de amperímetros, es tiempo de poner todos juntos! Puede parecer como el nido de la rata de cables y componentes, pero usted no debería tener problemas si sigues paso a paso.

En el siguiente video, utilizar el botón de reinicio en la ONU para iniciar nuestro programa desde el principio (tiempo 00:00). Se pueden ver a los segundos contando en el medidor análogo que por desgracia tiene un valor máximo de 50, no 60 (pero podemos abrirlo y cambiar el fondo si lo desea). Independientemente de lo que el medidor indica, "garrapatas" 60 veces por minuto. Después de un minuto completo, vemos el tiempo cambiar a 00:01, y restablece el medidor analógico. Más tarde cambiar al modo de ajuste de tiempo (esto es cuando se enciende el LED naranja en la parte superior central), en que punto se puede ver los segundos restablece a 0. Configurar la hora 16:59, y el momento que activar el modo de ajuste de tiempo off (el LED naranja en la parte superior central se apaga), los segundos en el medidor analógico empiezan a contar otra vez. Espere un minuto, momento en el que el tiempo cambia a las 17:00.

El código Final
/*
Cwik Clock v1.0 - la exhibición de prototipos
Autor: Dennis Cwik
Fecha: 23 de julio de 2012

Este programa es el controlador para un reloj binario, LEDs
conectado a los pines digitales 0 a 10, 12 y 13. 2 potenciómetros
conectado al control A0 y A1 las horas y minutos respectivamente,
y sólo cuando A2 es alta. Cuando A2 es alta, un LED en
PIN A5 se encenderá para Dile al usuario que están en tiempo establecer modo.
Finalmente, pin 11 se usa con PWM para mostrar a los segundos en un análogo
amperímetro.

Este ejemplo de código es de dominio público.
*/

Esto puede modificarse para que propósitos de depuración hacer un minuto ir más rápido.
int ONE_SECOND = 1000; medido en milisegundos
int DELAY_BETWEEN_LOOP_CALLS = 200; medido en milisegundos

No topar con esto, es a partir de la documentación de arduino
unsigned MAX_UNSIGNED_LONG largo = 4294967295; = (2 ^ 32) - 1

int HOUR_INPUT_PIN = A0;
int MIN_INPUT_PIN = A1;
int CLOCK_MODE_SWITCH_PIN = A2;
int CLOCK_MODE_LED_PIN = A5;

1 º columna de LEDs
int PIN_MIN1 = 0;
int PIN_MIN2 = 1;
int PIN_MIN4 = 2;
int PIN_MIN8 = 3;

2 º columna de LEDs
int PIN_MIN10 = 4;
int PIN_MIN20 = 5;
int PIN_MIN40 = 6;

3 º columna de LEDs
int PIN_HOUR1 = 7;
int PIN_HOUR2 = 8;
int PIN_HOUR4 = 9;
int PIN_HOUR8 = 10;

PWM en el medidor analógico para mostrar a segundos.
int SEC_OUTPUT_PIN = 11;

4 º columna de LEDs
int PIN_HOUR10 = 12;
int PIN_HOUR20 = 13;

la última vez que los segundos en el tiempo se incrementa
m_lastTick largo sin firmar;

solía decirnos si establecemos el tiempo o no
Boolean m_inTimeSetMode = false;

el tiempo de
m_second de bytes;
m_minute de bytes;
m_hour de bytes;

/**
* Rutina de configuración obligatorio para Arduino, se ejecuta una vez al principio.
*/
void setup()
{
una de las entradas analógicas utilizando como salida
pinMode (CLOCK_MODE_LED_PIN, salida);

inicializar los pernos utilizados para hacer salir tiempo
pinMode (PIN_MIN1, salida);
pinMode (PIN_MIN2, salida);
pinMode (PIN_MIN4, salida);
pinMode (PIN_MIN8, salida);
pinMode (PIN_MIN10, salida);
pinMode (PIN_MIN20, salida);
pinMode (PIN_MIN40, salida);

pinMode (PIN_HOUR1, salida);
pinMode (PIN_HOUR2, salida);
pinMode (PIN_HOUR4, salida);
pinMode (PIN_HOUR8, salida);
pinMode (PIN_HOUR10, salida);
pinMode (PIN_HOUR20, salida);

inicializar variables de reloj
m_lastTick = 0;
setTime (0, 0, 0);
}

/**
* Se llama método obligatorio para Arduino, continuamente después setup().
*/
void loop()
{
checkMode();

ver si estamos el tiempo de fraguado, o dejando el flujo de tiempo normalmente
Si (m_inTimeSetMode)
{
getTimeFromPots();
}
otra cosa
{
Tick();
}

Ahora que el tiempo ha sido actualizado, Mostrar la hora
displaySeconds();
displayMinutes();
displayHours();

arbitraria demora así que no estamos procesando a 100% del tiempo,
un acto de ahorro de energía
Delay(DELAY_BETWEEN_LOOP_CALLS);
}

/**
* Un método auxiliar para establecer m_hour, m_minute y m_second.
*/
void setTime (newHour bytes, newMinute bytes, newSecond bytes)
{
m_second = newSecond;
m_minute = newMinute;
m_hour = newHour;
}

/**
* Este método realiza un seguimiento del flujo lógico del tiempo. Si dispone de tiempo suficiente
* pasado desde la última vez que fue llamado, m_second, m_minute y m_hour
* se actualizará apropiado. Esto toma en cuenta que millis() rollos
* en aproximadamente cada 50 días.
*/
void tick()
{
sin firmar largo ahora = millis();
msElapsed largo sin firmar;

primero tenemos que saber cuánto tiempo ha pasado desde la última vez
llamada tick()
Si (ahora < m_lastTick)
{
jadeo, tampoco hemos logramos viajar en el tiempo o millis() envuelto alrededor!
msElapsed = (MAX_UNSIGNED_LONG - m_lastTick) +;
}
otra cosa
{
msElapsed =-m_lastTick;
}

por cada segundo que pasa (ojala solo 1, a menos que nuestro código es realmente perezoso),
Agregar un segundo al tiempo y aumentar los minutos y horas si fuera necesario
para (int i = 0; i < msElapsed / ONE_SECOND; ++ i)
{
m_lastTick = m_lastTick + ONE_SECOND;

++ m_second;
Si (m_second == 60)
{
m_second = 0;
++ m_minute;
Si (m_minute == 60)
{
m_minute = 0;
++ m_hour;
Si (m_hour == 24)
{
m_hour = 0;
}
}
}
}
}

/**
* Este método utiliza PWM para mostrar el m_second en un metro análogo conectado
a la SEC_OUTPUT_PIN.
*/
void displaySeconds()
{
analogWrite (SEC_OUTPUT_PIN, mapa (m_second, 59, 0, 0, 255));
}

/**
* Este método lee el m_minute, convierte a binario y muestra
* que en los LEDs correspondientes (los que PIN_MIN *).
*/
void displayMinutes()
{
bytes los = m_minute % 10;
digitalWrite (PIN_MIN1 y B1);
digitalWrite (PIN_MIN2 y B10);
digitalWrite (PIN_MIN4 y B100);
digitalWrite (PIN_MIN8 y B1000);

División es tipo de cara, pero asumiremos que la compilación esto optimiza para nosotros :)
decenas de bytes = m_minute / 10;
digitalWrite (PIN_MIN10, tens & B1);
digitalWrite (PIN_MIN20, tens & B10);
digitalWrite (PIN_MIN40, decenas y B100);
}

/**
* Este método lee el m_hour, convierte a binario y muestra
* que en los LEDs correspondientes (los que PIN_HOUR *).
*/
void displayHours()
{
bytes los = m_hour % 10;
digitalWrite (PIN_HOUR1 y B1);
digitalWrite (PIN_HOUR2 y B10);
digitalWrite (PIN_HOUR4 y B100);
digitalWrite (PIN_HOUR8 y B1000);

decenas de bytes = m_hour / 10;
digitalWrite (PIN_HOUR10, tens & B1);
digitalWrite (PIN_HOUR20, tens & B10);
}

/**
* Este método lee los valores de los 2 potenciómetros, convierte a
* mimnutes y horas y conjuntos de m_minute y m_hour a los valores asociados.
*/
void getTimeFromPots()
{
leer los potenciómetros
int hourSensor = analogRead(HOUR_INPUT_PIN);
int minuteSensor = analogRead(MIN_INPUT_PIN);

las lecturas del sensor (de 0 a 1023) al apropiado de la escala
escala (0 a 23 horas, de 0 a 59 minutos)
setTime (mapa (hourSensor, 0, 1023, 0, 23), mapa (minuteSensor, 0, 1023, 0, 59), 0);

ajustamos el último tick ahora, porque cuando establece m_inTimeSetMode en false,
cuántos segundos podrían han pasado desde la última de ellas, y el tiempo saltaría adelante
m_lastTick = millis();
}

/**
* Este método comprueba CLOCK_MODE_SWITCH_PIN para ver si es alta. Si es así,
* significa que ahora estamos en modo de ajuste de reloj (m_inTimeSetMode está establecida en true), y
* enciende la CLOCK_MODE_LED_PIN.
*/
void checkMode()
{
m_inTimeSetMode = (analogRead(CLOCK_MODE_SWITCH_PIN) > 512);
digitalWrite (CLOCK_MODE_LED_PIN, m_inTimeSetMode);
}

Artículos Relacionados

Reloj binario de Arduino

Reloj binario de Arduino

Finalmente he dicho, el reloj binario la gente alrededor de mí oído me habló para tan de largo. Estaba tratando de hacer esto durante las últimas vacaciones de Navidad, pero le faltaba tiempo, cambié empleos 2 veces en los últimos 6 meses... por lo q
Reloj binario de Arduino usando LED Matrix

Reloj binario de Arduino usando LED Matrix

Este sitio tiene muchos puestos finas que describe la construcción de los relojes binarios. Soy tremendamente inestable, sin embargo y tienen dificultad para cualquier soldadura. Por lo tanto quería hacer mío de una matriz de 8 x 8 LED MAX7219-contro
Mi reloj binario de Arduino

Mi reloj binario de Arduino

Hola desde ItaliaAunque muchos relojes binarios creados, mi proyecto se inspiró principalmente a esto:http:// muy inteligente y divertido.He intentado mejorar el diseño y para añadir algo personal.Creo que es un buen resultado al final.El proyecto no
Reloj binario de Arduino (horas, minutos y segundos)

Reloj binario de Arduino (horas, minutos y segundos)

Hola a todos; Estaba buscando este proyecto durante mucho tiempo.  Finalmente yo se que con mucho esfuerzo.  Para este proyecto necesitarás:1 - Arduino Uno ($30 de Radio Shack)2 - RTC DS1307 (como $2 por EBay)3 - 2 registros de desplazamiento 74HC595
Arduino Powered reloj binario

Arduino Powered reloj binario

este instructable le ayudará a construir un reloj binario de Arduino.  La idea orignial de este instructable fue diseñado por Daniel Andrade.  Mi instructable utiliza componentes de montaje superficial, pero puede ser fácilmente adaptado para a travé
Reloj binario de pulsera

Reloj binario de pulsera

Creo que su a menudo fresco para lucir con un Gadgets retro. Planeaba hacer una muñeca reloj con pantalla LCD, pero luego cambié de opinión y había hecho este reloj binario en una placa de prototipo. Incluso hice un micro controlador con Atmega328p-p
NerdClock: Un RGB reloj binario [Software de Arduino]

NerdClock: Un RGB reloj binario [Software de Arduino]

IntroducciónRelojes binarios son una manera genial para mostrar el tiempo de una manera misteriosa. Y a los que no saben leer ese tipo de reloj es una manera simple, pero eficaz para incrementar su nerdiness nivel nubes. ¿Que podría ser algo que gust
Reloj binario de Leds 4

Reloj binario de Leds 4

4 reloj binario de LEDs, Mostrar la hora en modo binario, con intermitente LED primera muestra la horas y minutos, para entender como funciona le deben saber leer binario aquí Enlace para aprender:http://www.wikihow.com/Read-a-Binary-ClockGracias por
Conecte el reloj binario 4

Conecte el reloj binario 4

Bienvenidos damas y caballeros!Como empresario, siempre estoy buscando grandes proyectos compartir.  Yo y otros dos compañeros recientemente armaron un proyecto para nuestro maestro del programa de ingeniería en técnicas de emprendimiento, y estamos
Reloj binario en 7 segmentos LED pantalla

Reloj binario en 7 segmentos LED pantalla

Hola a todos,Este proyecto le mostrará un raro reloj binario con pantalla LED de 7 segmentos (ver VIDEO) y controlado por un Arduino.La idea es muy simple, sólo convertir datos binarios de horas, minutos y segundos en los segmentos "A la G" de p
Ping Pong bola color reloj binario

Ping Pong bola color reloj binario

Cambiar una Junta de matriz de Funduino 8 * 8 y 24 horas reloj binario utilizando pelotas de ping pong y todo color de LED a color.Ya he construido un pequeño reloj binario de 12Hr y montado en una computadora, esto funcionó muy bien pero era realmen
El reloj binario de la Plasma de increíble, estilo Steampunk.

El reloj binario de la Plasma de increíble, estilo Steampunk.

Un par de meses hace el Sr. Longwinters enviarme algunas bombillas de plasma (neón) ingenio bobinas E-27 europeo.Señor Junophor me ofreció una paz grande de madera de caoba. Así que tuve la materia prima para un reloj binario steampunked.El reloj est
Más pequeño reloj binario

Más pequeño reloj binario

este es el más pequeño reloj binario que mostrar la hora con sólo 4 leds.El cerebro en este reloj es el PIC16F84A, el tiempo se mostrará cuando se presiona el botón 'show'. Los dígitos de la hora aparecen en BCD de los cuatro LEDs. Decenas de horas a
Reloj binario

Reloj binario

quiero siempre tener reloj binario, así que hice una y funciona muy bien, me encanta este reloj es divertido ver demasiado.El corazón del reloj es microcontroler PIC16F84A y otras partes como el cristal, LEDs.Gracias por ver el video y aquí mis enlac