Reloj de punto de vista y mensaje Mostrar w/RTC y teclado PS/2 (6 / 7 paso)

Paso 6: El código que usé

/ * ### # Arduino POV 5 LEDs # ### circuito: 5 LEDs cada personaje se le da un 5 x 5 red para representarla es por ejemplo "H" es O O O O OOOOO O O O O cada una de estas líneas verticales está hecha de un solo número para la "H" ejemplo los números son 16 31,4,4,4,31 O O 8 O O 4 OOOOO 2 O O 1 O O 31 es 16 + 8 + 4 + 2 + 1 (todos los leds se encienden) 4 es 0 + 0 + 4 + 0 + 0 (sólo medio led iluminado) / / 7/13 - empezó con proyecto mal fatal / / 11/13 V4 - neede para cambiar desde bytes a char para el golpe de teclado. 11/29 V5 Retire insertar espacios en blanco y atado con alambre del interruptor correctamente / funciona bastante bien para cualquier mensaje caracteres menos de 11 / 12/2 v6 - empezar a añadir en función del tiempo / / 12/5 - v7 cambiar muestra el tiempo por defecto * / #define VERSION "1.00a0" #include / / utilizar el RTC tiempo #include "Wire.h" #define DS1307_ADDRESS 0x68 cadena stringOne = ""; const int DataPin = 4; const int IRQpin = 3; PS2Keyboard teclado; const int corto debug = 0; const int corto debug2 = 0; const int corto debug3 = 0; const int corto debug4 = 0; int charBreak = 1750; char retrasar tiempo int betweenColumns = 685; int LED1 = 6; int LED2 = 2; int LED3 = 5; int LED4 = 8; int LED5 = 7; int switchPina = 10; interruptor de láminas, centro de la pantalla int ps2Power = 11; energía para el teclado / / para el tiempo int segundo = 0, minutos = 0, hora = 0; el tiempo de inicio en //needed 00:00:00 para recepción datos const int totChar = 13; char arrayTextos [totChar]; int textArrayindx = 0; char textDsply [totChar]; ---configuración---void setup() {keyboard.begin (DataPin, IRQpin); / / teclado Wire.begin(); / / tiempo / / Serial.begin(9600); if(debug) {delay(1000); Serial.println ("prueba de teclado:");} stringOne = String(""); pinMode (LED1, salida); pinMode (LED2, salida); pinMode (LED3, salida); pinMode (LED4, salida); pinMode (LED5, salida); pinMode (switchPina, entrada); Reed switch pinMode (ps2Power, salida); PS2 teclado digitalWrite (switchPina, HIGH); digitalWrite (ps2Power, HIGH); para comprobar los leds luz digitalWrite (LED 1, elevado); prende el LED de delay(500); digitalWrite (LED2, alto); prende el LED de delay(500); digitalWrite (LED 3, alto); prende el LED de delay(500); digitalWrite (LED4, alto); prende el LED de delay(500); digitalWrite (LED5, alto); prende el LED de delay(500); } / /---/ /---bucle---void loop() {/ / la idea es: / / por defecto será el tiempo. / si tecla entrar, entonces interrumpir el tiempo y mostrar el mensaje. Si (keyboard.available()) {/ / leer la entrada byte char c = keyboard.read(); if(debug) {/ / revisar algunas de las claves especiales si (c == PS2_ENTER) {Serial.print("^");} else if (c == PS2_TAB) {Serial.print("[Tab]");} else if (c == PS2_ESC) {Serial.print("[ESC]");} else if (c == PS2_PAGEDOWN) {Serial.print("[PgDn]");} else if (c == PS2_PAGEUP) {Serial.print("[PgUp]");} else if (c == PS2_LEFTARROW) {Serial.print("[Left]");} else if (c == PS2_RIGHTARROW) {Serial.print("[Right]");} else if (c == PS2_UPARROW) {Serial.print("[Up]");} else if (c == PS2_DOWNARROW) {Serial.print("[Down]");} más Si (c == PS2_DELETE) {Serial.print("[Del]");} else {/ / de lo contrario, sólo imprimir todos los caracteres normales Serial.print(c);}} Delay(10); evita abrumar el puerto serie / si Pulse la tecla enter y arrayTextos no es vacía si (c == PS2_ENTER) {si (textArrayindx > = 1) {showIt();} else {showTime();}} / / llegar aquí significa sólo una parte del mensaje así que añadirlo a la matriz / / byte entrante a la arrayTextos de matriz de mensaje [textArrayindx] = c; textArrayindx ++; } else {showTime();}} ---funciones por el tiempo---/ /---anular showTime() {mientras que (keyboard.available() == 0) {/ / ahora es necesario crear la cadena a mostrar en lugar de simplemente imprimir en el / / serie corriente printDate(); / / delay(1000);}} / /---bytes bcdToDec(byte val) {/ / convierte binario codificado decimal a decimal normal números retorno ((val/16 * 10) + (val % 16));} / /---anular printDate() {/ rearme el puntero de registro Wire.beginTransmission(DS1307_ADDRESS); byte cero = 0 x 00; Wire.Write(Zero); Wire.endTransmission(); Wire.requestFrom (DS1307_ADDRESS, 7); int = segundo bcdToDec(Wire.read()); int minutos = bcdToDec(Wire.read()); int hora = bcdToDec(Wire.read() & 0b111111); 24 horas tiempo int lunes a viernes = bcdToDec(Wire.read()); 0-6-> el domingo - sábado int monthDay = bcdToDec(Wire.read()); int mes = bcdToDec(Wire.read()); int año = bcdToDec(Wire.read()); if(debug) {//print la fecha CE 01/03/11 23:59:59 Serial.print(month); Serial.Print("/"); Serial.Print(monthDay); Serial.Print("/"); Serial.Print(Year); Serial.Print(""); Serial.Print(hour); Serial.Print(":"); Serial.Print(minute); Serial.Print(":"); Serial.println(Second); } / / creamos la cadena ser displayerd / si hora = 0 y luego cambiar a 12 / / hr más que 12 entonces restarán 12 si (hora > = 13) {hora = (hora - 12);} stringOne += horas; stringOne += ":"; stringOne += minutos; stringOne += ":"; += stringOne segundo; int val2 = digitalRead(switchPina); Si (val2 == baja) {delay (26); / / displayString("12:34:00"); / / displayString(stringOne); para (int i = 0; i < = (stringOne.length()); i ++) {displayChar(stringOne[i]);}} stringOne = "";} ---funciones para sólo el mensaje---/ /---void showIt() {mientras que (keyboard.available() == 0) {/ / test para ver lo que las cadenas if(debug3) {Serial.println(textArray); Serial.println(textDsply); Delay(3000); } sensorTest(); } / / llegar medios algo presionado / si sólo Enter key y luego mostrar el tiempo / / si nada entonces un nuevo mensaje comienza char c = keyboard.read(); Si (c == PS2_ENTER) {clearIt(); showTime();} else {clearIt(); arrayTextos [textArrayindx] = c; textArrayindx ++;}} ---void sensorTest() {int val = digitalRead(switchPina); if (val == LOW) {/ necesita retrasar basado en tamaño de mensaje int numberBlanks = (totChar - textArrayindx) / 2; if(debug) {delay(1000); Serial.println(numberBlanks); } Si (numberBlanks < = 1) {delay (12);} else if (numberBlanks == 2) {delay (26);} else if (numberBlanks == 3) {delay (30);} else if (numberBlanks == 4) {delay (35);} else if (numberBlanks == 5) {delay (40);} else if (numberBlanks == 6) {delay (45);} para (int k = 0; k

displayChar(textArray[k]); }}} / /---anular clearIt() {/ / obtener aquí significa otra corriente ha comenzado / lo necesita vaciar arrayTextos y empezar de nuevo / bucle a través de la matriz y sustituya los caracteres / / y restablecer el número de índice (int z = 0; z

(textDsply [z] = ' '); (arrayTextos [z] = ' '); textArrayindx = 0; }} int a [] = {1, 6, 26, 6, 1}; int b [] = {31, 21, 21, 10, 0}; int c2 [] = {14, 17, 17, 10, 0}; int d [] = {31, 17, 17, 14, 0}; int [e] = {31, 21, 21, 17, 0}; int f [] = {31, 20, 20, 16, 0}; int [] g = {14, 17, 19, 10, 0}; int [] h = {31, 4, 4, 4, 31}; int i [] = {0, 17, 31, 17, 0}; int j [] = {0, 17, 30, 16, 0}; int [k] = {31, 4, 10, 17, 0}; int l [] = {31, 1, 1, 1, 0}; int m [] = {31, 12, 3, 12, 31}; int n [] = {31, 12, 3, 31, 0}; int [] o = {14, 17, 17, 14, 0}; int p [] = {31, 20, 20, 8, 0}; int [] q = {14, 17, 19, 14, 2}; int r [] = {31, 20, 22, 9, 0}; int s [] = {8, 21, 21, 2, 0}; int [] t = {16, 16, 31, 16, 16}; int [] u = {30, 1, 1, 30, 0}; int v [] = {24, 6, 1, 6, 24}; int [] w = {28, 3, 12, 3, 28}; int x[] = {17, 10, 4, 10, 17}; int y [] = {17, 10, 4, 8, 16}; int z [] = {19, 21, 21, 25, 0}; números int n1 [] = {0, 0, 31, 0, 0}; int n2 [] = {17, 19, 21, 25, 0}; int [n3] = {0, 17, 21, 21, 31}; int [n4] = {28, 4, 4, 31, 0}; int [n5] = {0, 29, 21, 21, 23}; int n6 [] = {31, 5, 5, 7, 0}; int [n7] = {0, 16.16, 16,31}; int [n8] = {0, 31, 21, 21, 31}; n9 de int [] = {0, 28,20, 20,31}; int [n0] = {0,31,17, 17,31}; eos de int [] = {0, 1, 0, 0, 0}; int [excl] = {0, 29, 0, 0, 0}; ques de int [] = {8, 19, 20, 8, 0}; int equ [] = {0, 10,10,10,0}; int puntos [] = {0,10,0}; void displayLine (int line) {int myline; myline = línea; si (myline > = 16) {digitalWrite (LED 1, elevado); myline-= 16;} else {digitalWrite (LED 1, LOW);} si (myline > = 8) {digitalWrite (LED2, alto); myline-= 8;} else {digitalWrite (LED2, LOW);} si (myline > = 4) {digitalWrite (LED 3, alto); myline-= 4;} else {digitalWrite (LED 3, LOW);} si (myline > = 2) {digitalWrite (LED4, alto); myline-= 2;} else {digitalWrite (LED4, LOW);} si (myline > = 1) {digitalWrite (LED5 ALTO); myline-= 1;} Else {digitalWrite (LED5, LOW);}} void displayChar (char c) {si (c == 'a') {para (int i = 0; i < 5; i ++) {displayLine (un [i]); delayMicroseconds (betweenColumns) ;} displayLine(0);} Si (c == 'b') {para (int i = 0; i < 5; i ++) {displayLine (b [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'c') {para (int i = 0; i < 5; i ++) {displayLine (c2 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == había ') {para (int i = 0; i < 5; i ++) {displayLine (d [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'e') {para (int i = 0; i < 5; i ++) {displayLine (e [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'f') {para (int i = 0; i < 5; i ++) {displayLine (f [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'g') {para (int i = 0; i < 5; i ++) {displayLine (g [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'h') {para (int i = 0; i < 5; i ++) {displayLine (h [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'i') {para (int se = 0; se < 5; it ++) {displayLine (i [it]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'j') {para (int i = 0; i < 5; i ++) {displayLine (j [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'k') {para (int i = 0; i < 5; i ++) {displayLine (k [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'l') {para (int i = 0; i < 5; i ++) {displayLine (l [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == estoy ') {para (int i = 0; i < 5; i ++) {displayLine (m [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == ' n ') {para (int i = 0; i < 5; i ++) {displayLine (n [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'o') {para (int i = 0; i < 5; i ++) {displayLine (o [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'p') {para (int i = 0; i < 5; i ++) {displayLine (p [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'q') {para (int i = 0; i < 5; i ++) {displayLine (q [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'r') {para (int i = 0; i < 5; i ++) {displayLine (r [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == de ') {para (int i = 0; i < 5; i ++) {displayLine (s [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == ' t ') {para (int i = 0; i < 5; i ++) {displayLine (t [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'u') {para (int i = 0; i < 5; i ++) {displayLine (u [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'v') {para (int i = 0; i < 5; i ++) {displayLine (v [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'w') {para (int i = 0; i < 5; i ++) {displayLine (w [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'x') {para (int i = 0; i < 5; i ++) {displayLine (x [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'y') {para (int i = 0; i < 5; i ++) {displayLine (y [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == 'z') {para (int i = 0; i < 5; i ++) {displayLine (z [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '. ') {para (int i = 0; i < 5; i ++) {displayLine (ex [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '?') {para (int i = 0; i < 5; i ++) {displayLine (ques [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '.') {para (int i = 0; i < 5; i ++) {displayLine (eos [i]); delayMicroseconds (betweenColumns) ;} displayLine(0);} Si (c == '=') {para (int i = 0; i < 5; i ++) {displayLine (ecuación [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == ':') {para (int i = 0; i < 3; i ++) {displayLine (puntos [i]); delayMicroseconds (betweenColumns);} displayLine(0);} números si (c == '1') {para (int i = 0; i < 5; i ++) {displayLine (n1 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '2') {para (int i = 0; i < 5; i ++) {displayLine (n2 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '3') {para (int i = 0; i < 5; i ++) {displayLine (n3 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '4') {para (int i = 0; i < 5; i ++) {displayLine (n4 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '5') {para (int i = 0; i < 5; i ++) {displayLine (n5 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '6') {para (int i = 0; i < 5; i ++) {displayLine (n6 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '7') {para (int i = 0; i < 5; i ++) {displayLine (n7 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '8') {para (int i = 0; i < 5; i ++) {displayLine (n8 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '9') {para (int i = 0; i < 5; i ++) {displayLine (n9 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} Si (c == '0') {para (int i = 0; i < 5; i ++) {displayLine (n0 [i]); delayMicroseconds (betweenColumns);} displayLine(0);} delayMicroseconds(charBreak); }

Artículos Relacionados

¿Utilizar SEO para incrementar puntos de vista de un Instructable

¿Utilizar SEO para incrementar puntos de vista de un Instructable

desea aumentar el tráfico a su Instructables de motores de búsqueda como Google, Bing o Yahoo?Este Instructable proporciona consejos y sugerencias sobre cómo optimizar su Instructables para aumentar las páginas de resultados de búsqueda. Así es que v
Lazos POV: Cómo atar una corbata de una 1ª persona punto de vista

Lazos POV: Cómo atar una corbata de una 1ª persona punto de vista

El objetivo de este ible es mostrar una habilidad básica de vida que deben tener todos los hombres; Cómo atar un lazo. La parte especial de estas manifestaciones es que son todos tiro desde una primera persona punto de vista, así que nada de eso vien
Cómo tener una actitud positiva de sus puntos de vista de página

Cómo tener una actitud positiva de sus puntos de vista de página

Recientemente una persona anónima sin saberlo hace clic en uno de mi instructables y marcó un nuevo hito para mí. Empujaron mis páginas vistas sobre la marca del millón. Wow, es un número grande, y aunque hay muchos miembros que están en los millones
Una manera fácil de obtener más puntos de vista sobre su Instructables

Una manera fácil de obtener más puntos de vista sobre su Instructables

si usted está en Facebook y ahora con el nuevo Timeline, puede Únete Pinterest y comenzar a 'Fijar' no sólo sus propias Instructables, pero su favorito Instructables y Instructables.com sí mismo.Una vez usted Pin alguien en Pinterest verlo y volver a
Cómo mejorar su punto de vista instructivo

Cómo mejorar su punto de vista instructivo

Paso 1-compartir su proyecto con sus amigos utilizando facebookPaso 2: publicar en foros de instructablesPaso 3: encontrar sitio editorial como este howtotec.webs.comPaso 4-corta tu URL instructable usando a URL shortener y enviar a tus amigos por SM
Punto de vista (POV) de la plataforma para el iPhone 4

Punto de vista (POV) de la plataforma para el iPhone 4

hay un montón de cosas para impresión 3D.  Un montón de monstruos, vehículos y aviones, pero en su escala actual, realmente son solo juguetes.  No creo que sea algo malo, tho.Quería jugar con algunos modelos y hacer algunos videos desde la perspectiv
Simple punto de vista w/Ardweeny - persistencia de la visión

Simple punto de vista w/Ardweeny - persistencia de la visión

esto es básicamente un remake de un anterior proyecto POV pero reducido un pocoLa original es de este instructableÉste particular se dará a un familiar que ha decidido que es un tejón de la miel.  Su inspiración proviene de un popular video de YouTub
Grandes dígitos hacia atrás contando bluetooth reloj

Grandes dígitos hacia atrás contando bluetooth reloj

¿por qué?Yo quería hacer mis propia grandes dígitos de 7 segmentos durante mucho tiempo. Tenía algunas ideas de cómo hacerlo de manera diferente. Durante el proceso llegué a la conclusión de que el display de 7 segmentos estándar no es tan malo :). T
Blender modelling - Minecraft

Blender modelling - Minecraft

Hola chicos, me es de nuevo y voy a se le enseña a modelar objetos con temática de Minecraft en blender.Cargando la imagen de referencia: (no obligatorio)Imágenes e imágenes de fondo de referencia le ayuda en la modelación de los objetos en blender.P
Cómo hacer un Prezi

Cómo hacer un Prezi

¿qué es un "prezi"?Un prezi es una presentación de texto y efectos visuales que zoom en y fuera de. Es muy similar a un power point, excepto no hacer diapositivas. En cambio, puede hace un prezi grande y acercar a diferentes puntos de vista. Pue
Cómo utilizar la licuadora 2.71: conceptos básicos

Cómo utilizar la licuadora 2.71: conceptos básicos

Hola, todo el mundo!Muchos de ustedes han oído hablar de o están familiarizados con la impresión 3D, y tal vez algunos de ustedes son lo suficientemente afortunados para tener acceso a una impresora 3D. Normalmente, cuando la gente quiere 3D imprimir
STATSulator: Registro del entrenamiento

STATSulator: Registro del entrenamiento

el STATSulator es un php/mysql de la aplicación y bs2 escritorio pantalla lcd que realiza un seguimiento de tu entrenamiento. Le permite ver lo que sus compañeros de entrenamiento también están poniendo en, horas de raws, no los detalles para su acti
Guía de revisión de WinXP: Cómo hacerlo como Vista, corre como rayo y estancia productiva, más rápido y suave

Guía de revisión de WinXP: Cómo hacerlo como Vista, corre como rayo y estancia productiva, más rápido y suave

esta guía (pero no el filepack) se ha actualizado a partir del 19/11/08. Planeo subir un filepack renovado esta semana que incluirá la información actualizada y los archivos más nuevos de la versión. Si usted miró esto cuando primero fue lanzado, pue
Reloj de Alp

Reloj de Alp

Hola a todos,Otra vez estoy aquí con un nuevo proyecto, esta vez que lo hice mientras estaba asistiendo a un curso de carpintería y diseño, nueva maquinaria y tuve a mi disposición, que era genial.Mi objetivo principal en el curso era probar nuevas h