Created
March 12, 2018 13:31
-
-
Save raveren/00b118b647ac569b0241a4c6f0fb601c to your computer and use it in GitHub Desktop.
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
| ////////////////////////////////////////////////////////////////////////////////////////// | |
| //////////////////////////////// DEFINITIONS ////////////////////////////////////////////// | |
| ///////////////// YOU CAN CHANGE CODE AT THE BOTTOM /////////////////////////////////////// | |
| ////////////////////////////////////////////////////////////////////////////////////////// | |
| const display = [ | |
| 1, 1, 1, 0, 1, 1, 1, | |
| 1, 1, 1, 0, 1, 1, 1, | |
| 1, 1, | |
| 1, 1, 1, 0, 1, 1, 1, | |
| 1, 1, 1, 0, 1, 1, 1 | |
| ] | |
| let digit = [[1]] | |
| const emptyDigit = function () { | |
| return [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,] | |
| } | |
| ////////// | |
| //// 00:0X | |
| ////////// | |
| digit[1] = emptyDigit() | |
| digit[1][23] = 0 | |
| digit[1][24] = 0 | |
| digit[1][25] = 1 | |
| digit[1][26] = 0 | |
| digit[1][27] = 0 | |
| digit[1][28] = 0 | |
| digit[1][29] = 1 | |
| digit[2] = emptyDigit() | |
| digit[2][23] = 1 | |
| digit[2][24] = 1 | |
| digit[2][25] = 0 | |
| digit[2][26] = 1 | |
| digit[2][27] = 0 | |
| digit[2][28] = 1 | |
| digit[2][29] = 1 | |
| digit[3] = emptyDigit() | |
| digit[3][23] = 0 | |
| digit[3][24] = 1 | |
| digit[3][25] = 1 | |
| digit[3][26] = 1 | |
| digit[3][27] = 0 | |
| digit[3][28] = 1 | |
| digit[3][29] = 1 | |
| digit[4] = emptyDigit() | |
| digit[4][23] = 0 | |
| digit[4][24] = 0 | |
| digit[4][25] = 1 | |
| digit[4][26] = 1 | |
| digit[4][27] = 1 | |
| digit[4][28] = 0 | |
| digit[4][29] = 1 | |
| digit[5] = emptyDigit() | |
| digit[5][23] = 0 | |
| digit[5][24] = 1 | |
| digit[5][25] = 1 | |
| digit[5][26] = 1 | |
| digit[5][27] = 1 | |
| digit[5][28] = 1 | |
| digit[5][29] = 0 | |
| digit[6] = emptyDigit() | |
| digit[6][23] = 1 | |
| digit[6][24] = 1 | |
| digit[6][25] = 1 | |
| digit[6][26] = 1 | |
| digit[6][27] = 1 | |
| digit[6][28] = 1 | |
| digit[6][29] = 0 | |
| digit[7] = emptyDigit() | |
| digit[7][23] = 0 | |
| digit[7][24] = 0 | |
| digit[7][25] = 1 | |
| digit[7][26] = 0 | |
| digit[7][27] = 1 | |
| digit[7][28] = 1 | |
| digit[7][29] = 1 | |
| digit[8] = emptyDigit() | |
| digit[8][23] = 1 | |
| digit[8][24] = 1 | |
| digit[8][25] = 1 | |
| digit[8][26] = 1 | |
| digit[8][27] = 1 | |
| digit[8][28] = 1 | |
| digit[8][29] = 1 | |
| digit[9] = emptyDigit() | |
| digit[9][23] = 0 | |
| digit[9][24] = 1 | |
| digit[9][25] = 1 | |
| digit[9][26] = 1 | |
| digit[9][27] = 1 | |
| digit[9][28] = 1 | |
| digit[9][29] = 1 | |
| ////////// | |
| //// 00:X0 | |
| ////////// | |
| digit[11] = emptyDigit() | |
| digit[11][16] = 0 | |
| digit[11][17] = 0 | |
| digit[11][18] = 1 | |
| digit[11][19] = 0 | |
| digit[11][20] = 0 | |
| digit[11][21] = 0 | |
| digit[11][22] = 1 | |
| digit[12] = emptyDigit() | |
| digit[12][16] = 0 | |
| digit[12][17] = 1 | |
| digit[12][18] = 1 | |
| digit[12][19] = 1 | |
| digit[12][20] = 1 | |
| digit[12][21] = 1 | |
| digit[12][22] = 0 | |
| digit[13] = emptyDigit() | |
| digit[13][16] = 0 | |
| digit[13][17] = 1 | |
| digit[13][18] = 1 | |
| digit[13][19] = 1 | |
| digit[13][20] = 0 | |
| digit[13][21] = 1 | |
| digit[13][22] = 1 | |
| digit[14] = emptyDigit() | |
| digit[14][16] = 1 | |
| digit[14][17] = 0 | |
| digit[14][18] = 1 | |
| digit[14][19] = 1 | |
| digit[14][20] = 0 | |
| digit[14][21] = 0 | |
| digit[14][22] = 1 | |
| digit[15] = emptyDigit() | |
| digit[15][16] = 1 | |
| digit[15][17] = 1 | |
| digit[15][18] = 0 | |
| digit[15][19] = 1 | |
| digit[15][20] = 0 | |
| digit[15][21] = 1 | |
| digit[15][22] = 1 | |
| // impossible numbers: | |
| digit[16] = emptyDigit() | |
| digit[16][16] = 1 | |
| digit[16][17] = 1 | |
| digit[16][18] = 0 | |
| digit[16][19] = 1 | |
| digit[16][20] = 1 | |
| digit[16][21] = 1 | |
| digit[16][22] = 1 | |
| digit[17] = emptyDigit() | |
| digit[17][16] = 1 | |
| digit[17][17] = 1 | |
| digit[17][18] = 1 | |
| digit[17][19] = 0 | |
| digit[17][20] = 0 | |
| digit[17][21] = 0 | |
| digit[17][22] = 1 | |
| digit[18] = emptyDigit() | |
| digit[18][16] = 1 | |
| digit[18][17] = 1 | |
| digit[18][18] = 1 | |
| digit[18][19] = 1 | |
| digit[18][20] = 1 | |
| digit[18][21] = 1 | |
| digit[18][22] = 1 | |
| digit[19] = emptyDigit() | |
| digit[19][16] = 1 | |
| digit[19][17] = 1 | |
| digit[19][18] = 1 | |
| digit[19][19] = 1 | |
| digit[19][20] = 0 | |
| digit[19][21] = 1 | |
| digit[19][22] = 1 | |
| ////////// | |
| //// 0X:00 | |
| ////////// | |
| digit[21] = emptyDigit() | |
| digit[21][7] = 0 | |
| digit[21][8] = 0 | |
| digit[21][9] = 1 | |
| digit[21][10] = 0 | |
| digit[21][11] = 0 | |
| digit[21][12] = 0 | |
| digit[21][13] = 1 | |
| digit[22] = emptyDigit() | |
| digit[22][7] = 1 | |
| digit[22][8] = 1 | |
| digit[22][9] = 0 | |
| digit[22][10] = 1 | |
| digit[22][11] = 0 | |
| digit[22][12] = 1 | |
| digit[22][13] = 1 | |
| digit[23] = emptyDigit() | |
| digit[23][7] = 0 | |
| digit[23][8] = 1 | |
| digit[23][9] = 1 | |
| digit[23][10] = 1 | |
| digit[23][11] = 0 | |
| digit[23][12] = 1 | |
| digit[23][13] = 1 | |
| digit[24] = emptyDigit() | |
| digit[24][7] = 0 | |
| digit[24][8] = 0 | |
| digit[24][9] = 1 | |
| digit[24][10] = 1 | |
| digit[24][11] = 1 | |
| digit[24][12] = 0 | |
| digit[24][13] = 1 | |
| digit[25] = emptyDigit() | |
| digit[25][7] = 0 | |
| digit[25][8] = 1 | |
| digit[25][9] = 1 | |
| digit[25][10] = 1 | |
| digit[25][11] = 1 | |
| digit[25][12] = 1 | |
| digit[25][13] = 0 | |
| digit[26] = emptyDigit() | |
| digit[26][7] = 1 | |
| digit[26][8] = 1 | |
| digit[26][9] = 1 | |
| digit[26][10] = 1 | |
| digit[26][11] = 1 | |
| digit[26][12] = 1 | |
| digit[26][13] = 0 | |
| digit[27] = emptyDigit() | |
| digit[27][7] = 0 | |
| digit[27][8] = 0 | |
| digit[27][9] = 1 | |
| digit[27][10] = 0 | |
| digit[27][11] = 1 | |
| digit[27][12] = 1 | |
| digit[27][13] = 1 | |
| digit[28] = emptyDigit() | |
| digit[28][7] = 1 | |
| digit[28][8] = 1 | |
| digit[28][9] = 1 | |
| digit[28][10] = 1 | |
| digit[28][11] = 1 | |
| digit[28][12] = 1 | |
| digit[28][13] = 1 | |
| digit[29] = emptyDigit() | |
| digit[29][7] = 0 | |
| digit[29][8] = 1 | |
| digit[29][9] = 1 | |
| digit[29][10] = 1 | |
| digit[29][11] = 1 | |
| digit[29][12] = 1 | |
| digit[29][13] = 1 | |
| ////////// | |
| //// X0:00 | |
| ////////// | |
| digit[31] = emptyDigit() | |
| digit[31][0] = 0 | |
| digit[31][1] = 0 | |
| digit[31][2] = 1 | |
| digit[31][3] = 0 | |
| digit[31][4] = 0 | |
| digit[31][5] = 0 | |
| digit[31][6] = 1 | |
| digit[32] = emptyDigit() | |
| digit[32][0] = 0 | |
| digit[32][1] = 1 | |
| digit[32][2] = 1 | |
| digit[32][3] = 1 | |
| digit[32][4] = 1 | |
| digit[32][5] = 1 | |
| digit[32][6] = 0 | |
| digit[33] = emptyDigit() | |
| digit[33][0] = 0 | |
| digit[33][1] = 1 | |
| digit[33][2] = 1 | |
| digit[33][3] = 1 | |
| digit[33][4] = 0 | |
| digit[33][5] = 1 | |
| digit[33][6] = 1 | |
| digit[34] = emptyDigit() | |
| digit[34][0] = 1 | |
| digit[34][1] = 0 | |
| digit[34][2] = 1 | |
| digit[34][3] = 1 | |
| digit[34][4] = 0 | |
| digit[34][5] = 0 | |
| digit[34][6] = 1 | |
| digit[35] = emptyDigit() | |
| digit[35][0] = 1 | |
| digit[35][1] = 1 | |
| digit[35][2] = 0 | |
| digit[35][3] = 1 | |
| digit[35][4] = 0 | |
| digit[35][5] = 1 | |
| digit[35][6] = 1 | |
| // impossible numbers: | |
| digit[36] = emptyDigit() | |
| digit[36][0] = 1 | |
| digit[36][1] = 1 | |
| digit[36][2] = 0 | |
| digit[36][3] = 1 | |
| digit[36][4] = 1 | |
| digit[36][5] = 1 | |
| digit[36][6] = 1 | |
| digit[37] = emptyDigit() | |
| digit[37][0] = 1 | |
| digit[37][1] = 1 | |
| digit[37][2] = 1 | |
| digit[37][3] = 0 | |
| digit[37][4] = 0 | |
| digit[37][5] = 0 | |
| digit[37][6] = 1 | |
| digit[38] = emptyDigit() | |
| digit[38][0] = 1 | |
| digit[38][1] = 1 | |
| digit[38][2] = 1 | |
| digit[38][3] = 1 | |
| digit[38][4] = 1 | |
| digit[38][5] = 1 | |
| digit[38][6] = 1 | |
| digit[39] = emptyDigit() | |
| digit[39][0] = 1 | |
| digit[39][1] = 1 | |
| digit[39][2] = 1 | |
| digit[39][3] = 1 | |
| digit[39][4] = 0 | |
| digit[39][5] = 1 | |
| digit[39][6] = 1 | |
| let ledStrip = neopixel.create(DigitalPin.P0, 30, NeoPixelMode.RGB) | |
| let clockColor = neopixel.colors(NeoPixelColors.Red) | |
| //////////////////////////////////////////////////////////////////// | |
| //////////////////////// FUNCTIONALITY ///////////////////////////// | |
| //////////////////////////////////////////////////////////////////// | |
| function startCountdown(timeInSeconds = 360, timeSpeed = 1000) { | |
| let timeLeft = timeInSeconds | |
| let remaining = 0 | |
| let hue = 0 // go from green to red | |
| for (let i = 0; i <= timeInSeconds; i++) { | |
| // go from green to red: 120 = green; 0 = red | |
| remaining = timeInSeconds / timeLeft | |
| if (remaining > 2) { | |
| hue = 60 | |
| } else if (remaining > 3) { | |
| hue = 30 | |
| } else if (remaining > 4) { | |
| hue = 20 | |
| } else if (remaining > 5) { | |
| hue = 0 | |
| } else { | |
| hue = 120 | |
| } | |
| clockColor = neopixel.hsl(hue, 100, 50) | |
| setTime(timeLeft--) | |
| basic.pause(timeSpeed) | |
| } | |
| } | |
| function setTime(timeInSeconds = 0) { | |
| let isOn = false | |
| let mins = MathFloor(timeInSeconds / 60) | |
| let secs = timeInSeconds % 60 | |
| let firstDigit = secs % 10 | |
| let secondDigit = (secs - firstDigit) / 10 | |
| let thirdDigit = mins % 10 | |
| let fourthDigit = (mins - thirdDigit) / 10 | |
| if (fourthDigit > 9) { | |
| fourthDigit = 9 | |
| } | |
| for (let i = 0; i < display.length; i++) { | |
| if (firstDigit > 0 && digit[firstDigit][i] !== 2) { | |
| isOn = digit[firstDigit][i] == 1 | |
| } else if (secondDigit > 0 && digit[secondDigit + 10][i] !== 2) { | |
| isOn = digit[secondDigit + 10][i] == 1 | |
| } else if (thirdDigit > 0 && digit[thirdDigit + 20][i] !== 2) { | |
| isOn = digit[thirdDigit + 20][i] == 1 | |
| } else if (fourthDigit > 0 && digit[fourthDigit + 30][i] !== 2) { | |
| isOn = digit[fourthDigit + 30][i] == 1 | |
| } else { | |
| isOn = display[i] == 1 | |
| } | |
| ledStrip.setPixelColor(i, isOn ? clockColor : neopixel.colors(NeoPixelColors.Black)) | |
| } | |
| ledStrip.show() | |
| } | |
| function MathFloor(n: number) { | |
| return n - (n % 1) | |
| } | |
| //////////////////////////////////////////////////////////////////////////////////////////// | |
| //////////////////////////// END DEFINITIONS, BEGIN COMMANDS ////////////////////////////// | |
| ////////////////////////////////////////////////////////////////////////////////////////// | |
| // example: | |
| // setTime( 60 * 60 + 45 ) // 1h 45s - static display, no countdown | |
| // startCountdown(100, 500) // set at 100 seconds, count down in double speed | |
| let countDownTimeInSeconds = 60 * 35 // 35 min | |
| let timeOfSpeed = 1000 // 1000 = 100%; 100 = 10%; 10 = 1% time speed | |
| startCountdown(countDownTimeInSeconds, timeOfSpeed) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment