Skip to content

Instantly share code, notes, and snippets.

@fmap
Last active December 29, 2015 13:39
Show Gist options
  • Save fmap/7678305 to your computer and use it in GitHub Desktop.
Save fmap/7678305 to your computer and use it in GitHub Desktop.
var sys = require('child_process').exec;
LED = {
on: function() {
sys('setleds -L +caps </dev/tty0');
},
off: function() {
sys('setleds -L -caps </dev/tty0');
}
}
Morse = {}; Morse.encode = {
chr: function(ch) {
switch (ch.toLowerCase()) {
case 'a': return '.-';
case 'b': return '-...'
case 'c': return '-.-.'
case 'd': return '-..'
case 'e': return '.'
case 'f': return '..-.'
case 'g': return '--.'
case 'h': return '....'
case 'i': return '..'
case 'j': return '.---'
case 'k': return '-.-'
case 'l': return '.-..'
case 'm': return '--'
case 'n': return '-.'
case 'o': return '---'
case 'p': return '.--.'
case 'q': return '--.-'
case 'r': return '.-.'
case 's': return '...'
case 't': return '-'
case 'u': return '..-'
case 'v': return '...-'
case 'w': return '.--'
case 'x': return '-..-'
case 'y': return '-.--'
case 'z': return '--..'
case '1': return '.----'
case '2': return '..---'
case '3': return '...--'
case '4': return '....-'
case '5': return '.....'
case '6': return '-....'
case '7': return '--...'
case '8': return '---..'
case '9': return '----.'
case '0': return '-----'
case ' ': return ' '
}
},
str: function* (st) {
for (i in st) {
var bits = Morse.encode.chr(st[i])
for (j in bits) yield bits[j]
}
}
}
function runStream(stream) {
var chr = stream.next();
LED.on();
setTimeout(function(){
LED.off();
setTimeout(function() {
chr.done || runStream(stream);
}, 1000);
}, chr.value=='-'?3e3:1e3)
};
process.stdin.resume()
process.stdin.on('data', function(buffer) {
var line = buffer.toString();
var stream = Morse.encode.str(line);
runStream(stream);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment