Last active
October 15, 2015 00:47
-
-
Save UlisesGascon/10b375abcac90fe2d65b to your computer and use it in GitHub Desktop.
BCD-BC - Dependencias y hardware
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Arranque y control de la repetición | |
*/ | |
// Intervalo que arranca la funcion RunIt, y la repite cada x milisegundos en funcion del valor de "intervalMS". | |
setInterval(runIt, intervalMS); | |
// Función que controla la ejecucción de todo lo demás | |
function runIt () { | |
// Arranca el reloj en la Matriz de leds | |
runMatrix(); | |
// Si el LCD esta activo... muestra los datos. Sino... se limpia | |
if (LCDisEnable) { | |
runLCD(); | |
}else { | |
lcd.clear(); | |
}; | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var five = require("johnny-five"); | |
var board = new five.Board(); | |
//... | |
board.on("ready", function() { | |
// Definimos la Matriz de Leds (HT16K33 de 8X16) usando I2C | |
var matrix = new five.Led.Matrix({ | |
addresses: [0x70], | |
controller: "HT16K33", | |
dims: "8x16", | |
rotation: 2 | |
}); | |
// Definimos el LCD (LCM1602 de 4X20) usando I2C | |
var lcd = new five.LCD({ | |
controller: "LCM1602", | |
pins: ["A5", "A4"], | |
rows: 4, | |
cols: 20 | |
}); | |
// Limpiamos los dispositivos al arrancar | |
matrix.clear(); | |
lcd.clear(); | |
//... | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Función para imprimir en el LCD la fecha en este formato (DD/MM/YYYY) | |
function getDateLCD () { | |
var date = new Date(); | |
var year = date.getFullYear(); | |
var month = date.getMonth() + 1; | |
month = (month < 10 ? "0" : "") + month; | |
var day = date.getDate(); | |
day = (day < 10 ? "0" : "") + day; | |
return ""+day+"/"+month+"/"+year; // DD/MM/YYYY | |
} | |
// Función para imprimir en el LCD la hora en este formato (HH:MM:SS) | |
function getTimeLCD () { | |
var date = new Date(); | |
var hour = date.getHours(); | |
hour = (hour < 10 ? "0" : "") + hour; | |
var min = date.getMinutes(); | |
min = (min < 10 ? "0" : "") + min; | |
var sec = date.getSeconds(); | |
sec = (sec < 10 ? "0" : "") + sec; | |
return ""+ hour + ":" + min + ":" + sec; // HH:MM:SS | |
}; | |
// Función para devolver la hora en este formato (HHMMSS) | |
function getSpecialTime() { | |
var date = new Date(); | |
var hour = date.getHours(); | |
hour = (hour < 10 ? "0" : "") + hour; | |
var min = date.getMinutes(); | |
min = (min < 10 ? "0" : "") + min; | |
var sec = date.getSeconds(); | |
sec = (sec < 10 ? "0" : "") + sec; | |
return ""+hour+""+min+""+sec; //HHMMSS | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Funcion que regula el LCD | |
*/ | |
function runLCD () { | |
lcd.cursor(0, 0).print("===== BCD CLOCK ===="); | |
lcd.cursor(1, 0).print("Date: "+getDateLCD()); // (Date: DD/MM/YYYY) | |
lcd.cursor(2, 0).print("Time: "+getTimeLCD() ); // (Time: HH:MM:SS) | |
lcd.cursor(3, 0).print("===================="); | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Función que regula el comportamiento de los leds | |
function runMatrix () { | |
// Crear un array con cada elemento de la función que da la hora en formato (HHMMSS) -> [H,H,M,M,S,S] | |
var res = getSpecialTime().split(""); | |
// ... | |
// Minutos Primera Columna | |
if (res[2] == 0) { | |
m11 = 0; | |
m12 = 0; | |
m14 = 0; | |
} else if(res[2] == 1){ | |
m11 = 1; | |
m12 = 0; | |
m14 = 0; | |
} else if(res[2] == 2){ | |
m11 = 0; | |
m12 = 1; | |
m14 = 0; | |
} else if(res[2] == 3){ | |
m11 = 1; | |
m12 = 1; | |
m14 = 0; | |
} else if(res[2] == 4){ | |
m11 = 0; | |
m12 = 0; | |
m14 = 1; | |
} else if(res[2] == 5){ | |
m11 = 1; | |
m12 = 0; | |
m14 = 1; | |
} else { | |
m11 = 0; | |
m12 = 0; | |
m14 = 0; | |
console.log("Error in minutes column 1") | |
}; | |
// ... | |
/* | |
=== Formato === | |
xyz = h12, h22, s24, m13 ... | |
x es h (horas), m (minutos) o s (segundos) | |
y es columna de izquierda a derecha | |
z es valor 1, 2, 4 o 8. | |
Ejemplo: h11 -> en horas, columna 1, led que equivale al valor 1. | |
Más info -> https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/Binary_clock.svg/640px-Binary_clock.svg.png?1435837556051 | |
*/ | |
// Representación visual de la matriz (8x16). Siendo 0 apagado y 1 encendido. | |
var bcdMatrix = [ | |
"0000000000000000", | |
"0000000000000000", | |
"0000"+h28+"000"+m28+"000"+s28+"000", | |
"0000"+h24+"00"+m14+""+m24+"00"+s14+""+s24+"000", | |
"000"+h12+""+h22+"00"+m12+""+m22+"00"+s12+""+s22+"000", | |
"000"+h11+""+h21+"00"+m11+""+m21+"00"+s11+""+s21+"000", | |
"0000000000000000", | |
"0000000000000000" | |
]; | |
// Se Pinta el dispositivo con los datos | |
matrix.draw(bcdMatrix); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment