Oficina cubo reloj de arena (3 / 4 paso)

Paso 3: Software

El software está escrito en el proceso y descargado a través de la IDE de Arduino.  El código contiene un bucle que toma 9 horas, 10 bien a poner la pantalla vuelva a su posición original. Pero que estará saliendo la "oficina" después del segundo bucle de cuatro horas y potencia el gadget. Al encender se restablecerá el servo a la posición inicial. Dentro de este bucle principal, que se establece en ejecutar siempre, son dos lazos de cuatro horas y dos lazos de una hora.

Desglose del código: código en cursiva, comentarios en negrita. Aquí hay un enlace al código para que no tenga que cortar y pegar si desea utilizarlo.

https://github.com/robboz4/Hour-Glass/Tree/July-entry

Si usted decide utilizar los códigos por favor incluyen declaraciones con respecto al uso de las bibliotecas de Adafruit.

#include < SoftwareSerial.h >
#include < Servo.h >
#include < Wire.h >

Base incluye declaraciones de depuración para el puerto serie, la biblioteca de Servo y la biblioteca de I2C.

#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"

Estos dos son las bibliotecas para la matriz de LED de Adafruit y mochila. Hay un bloque de texto que describe el uso de estas bibliotecas que se muestra en el código.

#define mañana 0
#define tarde 1
#define MAX_SEQ_NUM 17

Matriz Adafruit_8x8matrix = Adafruit_8x8matrix();

Servo myservo;
int pos = 0;
int intervalo;
const int buttonPin = 2;     el número de pin pulsador
const int ledPin = 13;      el número de los pines del LED
int buttonState = 0;

Definiciones para el uso más adelante en el código.

void setup() {}

Serial.Begin(9600);


Serial.println ("8 x 8 LED matriz prueba mod por robbo");

Matrix.Begin(0X70);  paso en la dirección del I2C

matrix.setBrightness(2);
Matrix.Clear();
myservo.Attach(9,544,2300); Configurar Servo
myservo.Write(POS);

Inicializa el pin LED como salida:
pinMode (ledPin, salida);
inicializar el perno pulsador como entrada:
pinMode (buttonPin, entrada);
digitalWrite(buttonPin,HIGH);
}

Configurar la matriz, el servo, puerto serial y pulsador (para declaraciones de depuración).

typedef struct _led
{
orden Char;
int x;
int y;
} led_t;

Matriz para definir el diseño de LED (un número de pin de 0 no significa LED)
Cada miembro de la matriz tiene un número de secuencia y un número de pin del LED.
El número de secuencia determina el orden en que encienda o apague

const led_t ledArray [8] [7] = {}
/ * elem 0 * / {{6, 0, 0}, {4, 0, 1}, {2, 0, 2}, {1, 0, 3}, {3, 0, 4}, {5, 0, 5}, {7, 0, 6}},
/ * elem 1 * / {{0, 1, 0}, {11, 1, 1}, {9, 1, 2}, {8, 1, 3}, {10, 1, 4}, {12, 1, 5}, {0, 1, 6}},
/ * elem 2 * / {{0, 2, 0}, {0, 2, 1}, {14, 2, 2}, {13, 2, 3}, {15, 2, 4}, {0, 2, 5}, {0, 2, 6}},
/ * elem 3 * / {{0, 3, 0}, {0, 3, 1}, {0, 3, 2}, {16, 3, 3}, {0, 3, 4}, {0, 3, 5}, {0, 3, 6}},
/ * elem 4 * / {{0, 4, 0}, {0, 4, 1}, {0, 4, 2}, {16, 4, 3}, {0, 4, 4}, {0, 4, 5}, {0, 4, 6}},
/ * elem 5 * / {{0, 5, 0}, {0, 5, 1}, {15, 5, 2}, {9, 5, 3}, {14, 5, 4}, {0, 5, 5}, {0, 5, 6}},
/ * elem 6 * / {{0, 6, 0}, {12, 6, 1}, {8, 6, 2}, {4, 6, 3}, {7, 6, 4}, {13, 6, 5}, {0, 6, 6}},
/ * elem 7 * / {{11, 7, 0}, {5, 7, 1}, {3, 7, 2}, {1, 7, 3}, {2, 7, 4}, {6, 7, 5}, {10, 7, 6}}
};

una y otra vez funciona para siempre la rutina bucle:
void loop()
{

intervalo de char = mañana;
seqNum int = 0;
/ / seqNum 0 inicializar la matriz de LED que la mitad superior.
int i, j, k, límite;
int delay_mult = 60; opción de modo de demo.
Matrix.Clear();
matrix.blinkRate(0);
matrix.writeDisplay();

//Demo botón de prueba
buttonState = digitalRead(buttonPin);

comprobar si el pulsador está presionado.
Si es así, el buttonState es alta:

Si (buttonState == HIGH) {}
encender LED:
digitalWrite (ledPin, LOW);
Serial.println ("reloj de arena del cubo! \n");  matrix.setTextSize(1);
matrix.setTextWrap(false);  no queremos texto para envolver por lo que se desplaza muy bien
matrix.setTextColor(LED_ON);
para (int8_t x = 0; x > =-36; x--) {}
Matrix.Clear();
matrix.setCursor(x,0);
Matrix.Print("Club");
matrix.writeDisplay();
Delay(100);
}
matrix.setRotation(3);
para (int8_t x = 7; x > =-36; x--) {}
Matrix.Clear();
matrix.setCursor(x,0);
Matrix.Print("Robbo");
matrix.writeDisplay();
Delay(100);
}
matrix.setRotation(0);
}
Else {}
Apagar LED:
digitalWrite (ledPin, HIGH);
delay_mult = 60;
Serial.println ("cubo reloj de arena demo! \n");
matrix.setTextSize(1);
matrix.setTextWrap(false);  no queremos texto para envolver por lo que se desplaza muy bien
matrix.setTextColor(LED_ON);
para (int8_t x = 0; x > =-36; x--) {}
Matrix.Clear();
matrix.setCursor(x,0);
Matrix.Print("Demo");
matrix.writeDisplay();
Delay(100);
}
matrix.setRotation(3);

para (int8_t x = 7; x > =-36; x--) {}
Matrix.Clear();
matrix.setCursor(x,0);
Matrix.Print("MODE");
matrix.writeDisplay();
Delay(100);
}
matrix.setRotation(0);
}

//End de prueba del botón. Configura la pantalla para imprimir un mensaje que dice modo de demostración si presiona. También encendí a bordo LED

mientras que //do (1) este bit para siempre!
{
para (k = 0; k < MAX_SEQ_NUM; k ++)
{
Si (intervalo == mañana)
{
para (i = 0; i < 4; i ++)
{
para (j = 0; j < 7; j ++)
{
Si (ledArray [i] [j] orden > seqNum)
{
matrix.drawPixel (ledArray [i] [j] 2.x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
otra cosa
{
matrix.drawPixel (ledArray [i] [j] 2.x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
para (i = 4; i < 8; i ++)
{
para (j = 0; j < 7; j ++)
{
Si (ledArray [i] [j] orden < = seqNum & & ledArray [i] [j] orden! = 0)
{
matrix.drawPixel (ledArray [i] [j] 2.x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
otra cosa
{
matrix.drawPixel (ledArray [i] [j] 2.x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
}
otra cosa
{

para (i = 4; i < 8; i ++)
{
para (j = 0; j < 7; j ++)
{
Si (ledArray [i] [j] orden > seqNum)
{
matrix.drawPixel (ledArray [i] [j] 2.x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
otra cosa
{
matrix.drawPixel (ledArray [i] [j] 2.x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
para (i = 0; i < 4; i ++)
{
para (j = 0; j < 7; j ++)
{
Si (ledArray [i] [j] orden < = seqNum & & ledArray [i] [j] orden! = 0)
{
matrix.drawPixel (ledArray [i] [j] 2.x, ledArray [i] [j] .y, LED_ON);
matrix.writeDisplay();
}
otra cosa
{
matrix.drawPixel (ledArray [i] [j] 2.x, ledArray [i] [j] .y, LED_OFF);
matrix.writeDisplay();
}
}
}
}
//Depending en la mañana o por la tarde variable, leer la matriz con el número de secuencia y el LED en la matriz (x, y posición) encendido o apagado por consiguiente.
seqNum ++;
Si (buttonState == HIGH)
{
retrasar ((3750 * delay_mult * 4)/16) ;// mira cerca de un minuto. Por lo tanto múltiples por 60 una hora ~ = 225.000.
Delay(900000);
}
otra cosa
{
Delay(3750); Modo de demostración.
}
}

Girar la pantalla
¿intervalo de = (intervalo == mañana)? TARDE: MAÑANA;

Si (intervalo == tarde)
{
pos = 180;
myservo.Write(POS);
Delay(1000);
para (pos = 0; pos < 180; pos += 3) / / va desde 0 grados a 180 grados
{/ / en pasos de 3 grado
myservo.Write(POS);                Dile el servo a la posición en la variable 'pos'
esperas 1 minute(debug) para el servo a la posición de utilizar la hora mulitplier 225k
Si (buttonState == HIGH)
{
Delay(3750 * delay_mult) ;// mira cerca de un minuto. Por lo tanto múltiples por 60 una hora ~ = 225.000.
Delay(60000);
}
otra cosa
{
Delay (1000); modo //demo.
}
}
}
otra cosa
{

para (pos = 179; pos > 0; pos = 3) / / va de 180 grados a 0 grados
{/ / en pasos de-3 grados
myservo.Write(POS);                Dile el servo a la posición en la variable 'pos'
espera 1m (depuración) para el servo a la posición de utiliza la hora mulitplier 225k
Si (buttonState == HIGH)
{

Delay(60000);
}
otra cosa
{
Delay(1000); modo de demostración.
}
}
}

seqNum = 0;
}

}

Artículos Relacionados

BRICOLAJE de reloj de arena (sin bombillas)

BRICOLAJE de reloj de arena (sin bombillas)

Hey. En este instructable te voy a mostrar cómo hacer un reloj de arena utilizando bombillas de luz y arena de la playa.Para ahorrar tiempo he hecho vídeo paso a paso-[VER VIDEO]Para esto necesitarás:X2 bombillas estándarPlaya de arena o salpegamento
Liquido reloj de arena

Liquido reloj de arena

Es 14:59. Escuela que suene la campana en un minuto. El profesor va algo como "viscosidad" o "densidad" o algunas otras palabras inventadas, pero ha olvidado todavía asignar tareas. Hay una posibilidad que puede bajar gratis construir
ATtiny2313 basado en reloj de arena electrónico

ATtiny2313 basado en reloj de arena electrónico

Regresé un arduino mucho tiempo para jugar. Hizo algunos proyectos básicos para comenzar con. Pero nunca le gustaba usarlo. No, el arduino es impresionantemente buena. Pero algunos puntos de dolor:Necesita 5V para poderpin outs son un poco complicado
Sencillo reloj de arena!!!

Sencillo reloj de arena!!!

Un simple y un reloj de arena fácil, hacerlo en su casa!!!!!!Paso 1: Materiales necesarios... supongo que lo encuentras todo: 2 botellas similares, algo para hacer un orificio en la tapa, la arena, un pequeño embudo de plástico, cinta y pegamento ráp
La fuente de luz: un reloj de arena bioluminiscente

La fuente de luz: un reloj de arena bioluminiscente

imagina una lámpara que no requiere ninguna energía y se apaga su propia. También imagina una mascota que no va a morir sin la supervisión constante. Estos confluyen en el reloj de arena bioluminiscente!Bioluminiscencia es la capacidad de los organis
Reloj de arena de tiempo ajustable

Reloj de arena de tiempo ajustable

Hacer tu propio reloj de arena le da la opción de personalizar el reloj de arena. Esto se puede hacer sumando o restando la cantidad de arena en el reloj de arena. Más tiempo más arena. Menos tiempo menos arena. Simplemente el tiempo la arena que pon
Cómo hacer un reloj de arena de dos bombillas

Cómo hacer un reloj de arena de dos bombillas

en mi Instructable primera wilI muestro cómo hice un lujo reloj de arena.Bombillas se están volviendo más baratos ya que son reemplazados por lámparas de luz fría y LED´s.Así que si tienes dos fusionados con bombillas, reutilizarlas en... un reloj de
Reloj de arena de azúcar

Reloj de arena de azúcar

estoy haciendo este Instructable para guardar botellas de agua y divertirse un poco. Siempre estoy mirando mireloj de pulsera, es por eso que mi creación es un vidrio de botella de agua la hora. Creo que este proyecto es de una partede mí, viendo com
Cómo hacer un color cambiar EL alambre reloj de arena!

Cómo hacer un color cambiar EL alambre reloj de arena!

En este instructible usted aprenderá cómo hacer que un color que cambia el reloj de arena de EL alambre.Paso 1: Puting junto la estructura del reloj de arena y lista de piezas. Soportes 8 LUn motar de alta toarcbateadores de 9 voltiosPintura en aeros
Cómo hacer reloj de arena eléctrico

Cómo hacer reloj de arena eléctrico

Bueno, este es el reloj de arena eléctrico que queremos hacer, no muestra el tiempo tan perfecto como un reloj, aunque es de uso no realmente para mostrar tiempo, sólo por diversión, para nerds electrónica:).Paso 1: Comprar los componentes y pcb1. co
Hacer una caja de reloj de arena

Hacer una caja de reloj de arena

mientras viaja este pasado verano me encontré con este reloj de arena desnuda. Lo compré pensando que sería para un divertido proyecto de madera de fin de semana. Se hace del álamo, manchada con la mancha de cereza de Cabot y utiliza Sugru de bandole
30 minutos de reloj de arena

30 minutos de reloj de arena

este es un instructivo para el reloj de arena, que medirá 30 minutos de tiempo, así que si no mañana ejercicios, meditación por la tarde o noche de yoga para un lapso similar de tiempo y prefieren tener un TIC-TAC no o reloj no parpadea, puede tratar
Malla reloj de arena de arco iris telar

Malla reloj de arena de arco iris telar

Hola todos hoy les mostraré cómo hacer una pulsera de reloj de arena trenza telar del arco iris. Esto es lo que pasa cuando no apriete una trenza.Paso 1:No le dirá cuántas bandas necesitaDebido a la muñeca de todos tamaño es diferente.Pero voy a util
Reloj de arena

Reloj de arena

toma dos botellas, que piensas que son lo suficientemente bueno para un reloj de arena y fácilmente disponibles a tu alrededor.Paso 1: A y Color Después de pegar la cinta encima de ellos unirse a dos de ellos con una pistola de goma y el plástico de