diff --git a/.github/makecode/blocks.png b/.github/makecode/blocks.png index 30e028d..482fb2e 100644 Binary files a/.github/makecode/blocks.png and b/.github/makecode/blocks.png differ diff --git a/.github/makecode/blocksdiff.png b/.github/makecode/blocksdiff.png deleted file mode 100644 index 3ea8b98..0000000 Binary files a/.github/makecode/blocksdiff.png and /dev/null differ diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 936b43f..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 Alexander Davis - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md index f114122..2104502 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -> Open this page at [https://alexanderedavis.github.io/Binary-Light-Box/](https://alexanderedavis.github.io/Binary-Light-Box/) +> Open this page at [https://alexanderedavis.github.io/binary-light-box/](https://alexanderedavis.github.io/binary-light-box/) ## Use as Extension diff --git a/main.blocks b/main.blocks index 9067326..188fb55 100644 --- a/main.blocks +++ b/main.blocks @@ -1 +1 @@ -DenaryitemcolumnscolumnValuesitem2sensePinsreadySerialPin.P0SerialPin.P16BaudRate.BaudRate9600sensePins0FALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEcolumns0FALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEFALSEcolumnValues01248163264128256Denary01Denaryready0TRUEupdateNumberDenary0item0MINUS0columns1TRUEcolumns0itemDenary0columnValues0item1DenaryupdateColumnitem20MINUS0columns11item2TRUEsensePins0item2switchSensorsTRUEEQ0DigitalPin.P11sensePins0TRUETRUEEQ0DigitalPin.P10sensePins0FALSETRUEEQ0DigitalPin.P21sensePins1TRUETRUEEQ0DigitalPin.P20sensePins1FALSETRUEEQ0DigitalPin.P31sensePins2TRUETRUEEQ0DigitalPin.P30sensePins2FALSETRUEEQ0DigitalPin.P41sensePins3TRUETRUEEQ0DigitalPin.P40sensePins3FALSETRUEEQ0DigitalPin.P61sensePins4TRUETRUEEQ0DigitalPin.P60sensePins4FALSETRUEEQ0DigitalPin.P71sensePins5TRUETRUEEQ0DigitalPin.P70sensePins5FALSETRUEEQ0DigitalPin.P81sensePins6TRUETRUEEQ0DigitalPin.P80sensePins6FALSETRUEEQ0DigitalPin.P91sensePins7TRUETRUEEQ0DigitalPin.P90sensePins7FALSETRUEEQ0DigitalPin.P101sensePins8TRUETRUEEQ0DigitalPin.P100sensePins8FALSEupdateFlagcolumnflagTRUEflagcolumns0columnTRUETRUETRUEflagcolumns0columnFALSEupdateDisplaynumber/numberTRUEready \ No newline at end of file +Denarycolumn4column128column256column1column16column32column64column8columnscolumnValueslistreadyready0FALSESerialPin.P0SerialPin.P16BaudRate.BaudRate9600columns0000000000Denary01Denaryready0TRUETRUEreadyTRUEANDTRUEEQ0DigitalPin.P11TRUEEQ0columns00101TRUEANDTRUEEQ0DigitalPin.P10TRUEEQ0columns0100-1TRUEANDTRUEEQ0DigitalPin.P21TRUEEQ0columns10112TRUEANDTRUEEQ0DigitalPin.P20TRUEEQ0columns1101-2TRUEANDTRUEEQ0DigitalPin.P31TRUEEQ0columns20124TRUEANDTRUEEQ0DigitalPin.P30TRUEEQ0columns2102-4TRUEANDTRUEEQ0DigitalPin.P41TRUEEQ0columns30138TRUEANDTRUEEQ0DigitalPin.P40TRUEEQ0columns3103-8TRUEANDTRUEEQ0DigitalPin.P61TRUEEQ0columns401416TRUEANDTRUEEQ0DigitalPin.P60TRUEEQ0columns4104-16TRUEANDTRUEEQ0DigitalPin.P71TRUEEQ0columns501532TRUEANDTRUEEQ0DigitalPin.P70TRUEEQ0columns5105-32TRUEANDTRUEEQ0DigitalPin.P81TRUEEQ0columns601664TRUEANDTRUEEQ0DigitalPin.P80TRUEEQ0columns6106-64TRUEANDTRUEEQ0DigitalPin.P91TRUEEQ0columns7017128TRUEANDTRUEEQ0DigitalPin.P90TRUEEQ0columns7107-128TRUEANDTRUEEQ0DigitalPin.P101TRUEEQ0columns8018256TRUEANDTRUEEQ0DigitalPin.P100TRUEEQ0columns8108-256updateNumberflagcolumndifferenceDenary0differencecolumns0columnflag1DenaryDisplaynumber/number \ No newline at end of file diff --git a/main.py b/main.py index a2e5c48..a7c5141 100644 --- a/main.py +++ b/main.py @@ -1,94 +1,91 @@ -function updateNumber () { - Denary = 0 - for (let item = 0; item <= columns.length - 1; item++) { - if (columns[item]) { - Denary += columnValues[item] - } - } - updateDisplay(Denary) -} -function updateColumn () { - for (let item = 0; item <= columns.length - 1; item++) { - updateFlag(item, sensePins[item]) - } -} -function switchSensors () { - if (pins.digitalReadPin(DigitalPin.P1) == 1) { - sensePins[0] = true - } else if (pins.digitalReadPin(DigitalPin.P1) == 0) { - sensePins[0] = false - } - if (pins.digitalReadPin(DigitalPin.P2) == 1) { - sensePins[1] = true - } else if (pins.digitalReadPin(DigitalPin.P2) == 0) { - sensePins[1] = false - } - if (pins.digitalReadPin(DigitalPin.P3) == 1) { - sensePins[2] = true - } else if (pins.digitalReadPin(DigitalPin.P3) == 0) { - sensePins[2] = false - } - if (pins.digitalReadPin(DigitalPin.P4) == 1) { - sensePins[3] = true - } else if (pins.digitalReadPin(DigitalPin.P4) == 0) { - sensePins[3] = false - } - if (pins.digitalReadPin(DigitalPin.P6) == 1) { - sensePins[4] = true - } else if (pins.digitalReadPin(DigitalPin.P6) == 0) { - sensePins[4] = false - } - if (pins.digitalReadPin(DigitalPin.P7) == 1) { - sensePins[5] = true - } else if (pins.digitalReadPin(DigitalPin.P7) == 0) { - sensePins[5] = false - } - if (pins.digitalReadPin(DigitalPin.P8) == 1) { - sensePins[6] = true - } else if (pins.digitalReadPin(DigitalPin.P8) == 0) { - sensePins[6] = false - } - if (pins.digitalReadPin(DigitalPin.P9) == 1) { - sensePins[7] = true - } else if (pins.digitalReadPin(DigitalPin.P9) == 0) { - sensePins[7] = false - } - if (pins.digitalReadPin(DigitalPin.P10) == 1) { - sensePins[8] = true - } else if (pins.digitalReadPin(DigitalPin.P10) == 0) { - sensePins[8] = false - } -} -function updateFlag (column: number, flag: boolean) { - if (flag) { - columns[column] = true - } else if (!(flag)) { - columns[column] = false - } -} -function updateDisplay (number: number) { - serial.writeString("/") - serial.writeNumber(number) -} -let Denary = 0 -let columnValues: number[] = [] -let columns: boolean[] = [] -let sensePins: boolean[] = [] -serial.redirect( -SerialPin.P0, -SerialPin.P16, -BaudRate.BaudRate9600 -) -sensePins = [false, false, false, false, false, false, false, false, false] -columns = [false, false, false, false, false, false, false, false, false] -columnValues = [1, 2, 4, 8, 16, 32, 64, 128, 256] +def changes2(difference: number, flag: number): + global Denary + Denary += difference + Display(Denary) +def changes4(difference: number, flag: number): + global Denary + Denary += difference + column4 = flag + Display(Denary) +def changes128(difference: number, flag: number): + global Denary + Denary += difference + column128 = flag + Display(Denary) +def Display(number: number): + serial.write_string("/") + serial.write_number(number) +def changes256(difference: number, flag: number): + global Denary + Denary += difference + column256 = flag + Display(Denary) +def changes1(difference: number, flag: number): + global Denary + Denary += difference + column1 = flag + Display(Denary) +def changes16(difference: number, flag: number): + global Denary + Denary += difference + column16 = flag + Display(Denary) +def changes32(difference: number, flag: number): + global Denary + Denary += difference + column32 = flag + Display(Denary) +def changes64(difference: number, flag: number): + global Denary + Denary += difference + column64 = flag + Display(Denary) +def changes8(difference: number, flag: number): + global Denary + Denary += difference + column8 = flag + Display(Denary) Denary = 0 -updateDisplay(Denary) -let ready = true -basic.forever(function () { - if (ready) { - switchSensors() - updateColumn() - updateNumber() - } -}) +serial.redirect(SerialPin.P0, SerialPin.P16, BaudRate.BAUD_RATE9600) +columns = [0, 0, 0, 0, 0, 0, 0, 0, 0] +Denary = 0 +Display(Denary) + +def on_forever(): + if pins.digital_read_pin(DigitalPin.P1) == 1 and columns[0] == 0: + changes1(1, 1) + elif pins.digital_read_pin(DigitalPin.P1) == 0 and columns[0] == 1: + changes1(-1, 0) + elif pins.digital_read_pin(DigitalPin.P2) == 1 and columns[1] == 0: + changes2(2, 1) + elif pins.digital_read_pin(DigitalPin.P2) == 0 and columns[1] == 1: + changes2(-2, 0) + elif pins.digital_read_pin(DigitalPin.P3) == 1 and columns[2] == 0: + changes4(4, 1) + elif pins.digital_read_pin(DigitalPin.P3) == 0 and columns[2] == 1: + changes4(-4, 0) + elif pins.digital_read_pin(DigitalPin.P4) == 1 and columns[3] == 0: + changes8(8, 1) + elif pins.digital_read_pin(DigitalPin.P4) == 0 and columns[3] == 1: + changes8(-8, 0) + elif pins.digital_read_pin(DigitalPin.P6) == 1 and columns[4] == 0: + changes16(16, 1) + elif pins.digital_read_pin(DigitalPin.P6) == 0 and columns[4] == 1: + changes16(-16, 0) + elif pins.digital_read_pin(DigitalPin.P7) == 1 and columns[5] == 0: + changes32(32, 1) + elif pins.digital_read_pin(DigitalPin.P7) == 0 and columns[5] == 1: + changes32(-32, 0) + elif pins.digital_read_pin(DigitalPin.P8) == 1 and columns[6] == 0: + changes64(64, 1) + elif pins.digital_read_pin(DigitalPin.P8) == 0 and columns[6] == 1: + changes64(-64, 0) + elif pins.digital_read_pin(DigitalPin.P9) == 1 and columns[7] == 0: + changes128(128, 1) + elif pins.digital_read_pin(DigitalPin.P9) == 0 and columns[7] == 1: + changes128(-128, 0) + elif pins.digital_read_pin(DigitalPin.P10) == 1 and columns[8] == 0: + changes256(256, 1) + elif pins.digital_read_pin(DigitalPin.P10) == 0 and columns[0] == 1: + changes256(-256, 0) +basic.forever(on_forever) diff --git a/main.ts b/main.ts index 74c646a..f819b30 100644 --- a/main.ts +++ b/main.ts @@ -1,94 +1,62 @@ -function updateNumber () { - Denary = 0 - for (let item = 0; item <= columns.length - 1; item++) { - if (columns[item]) { - Denary += columnValues[item] - } - } - updateDisplay(Denary) +function updateNumber (flag: number, column: number, difference: number) { + Denary += difference + columns[column] = flag + Display(Denary) } -function updateColumn () { - for (let item2 = 0; item2 <= columns.length - 1; item2++) { - updateFlag(item2, sensePins[item2]) - } -} -function switchSensors () { - if (pins.digitalReadPin(DigitalPin.P1) == 1) { - sensePins[0] = true - } else if (pins.digitalReadPin(DigitalPin.P1) == 0) { - sensePins[0] = false - } - if (pins.digitalReadPin(DigitalPin.P2) == 1) { - sensePins[1] = true - } else if (pins.digitalReadPin(DigitalPin.P2) == 0) { - sensePins[1] = false - } - if (pins.digitalReadPin(DigitalPin.P3) == 1) { - sensePins[2] = true - } else if (pins.digitalReadPin(DigitalPin.P3) == 0) { - sensePins[2] = false - } - if (pins.digitalReadPin(DigitalPin.P4) == 1) { - sensePins[3] = true - } else if (pins.digitalReadPin(DigitalPin.P4) == 0) { - sensePins[3] = false - } - if (pins.digitalReadPin(DigitalPin.P6) == 1) { - sensePins[4] = true - } else if (pins.digitalReadPin(DigitalPin.P6) == 0) { - sensePins[4] = false - } - if (pins.digitalReadPin(DigitalPin.P7) == 1) { - sensePins[5] = true - } else if (pins.digitalReadPin(DigitalPin.P7) == 0) { - sensePins[5] = false - } - if (pins.digitalReadPin(DigitalPin.P8) == 1) { - sensePins[6] = true - } else if (pins.digitalReadPin(DigitalPin.P8) == 0) { - sensePins[6] = false - } - if (pins.digitalReadPin(DigitalPin.P9) == 1) { - sensePins[7] = true - } else if (pins.digitalReadPin(DigitalPin.P9) == 0) { - sensePins[7] = false - } - if (pins.digitalReadPin(DigitalPin.P10) == 1) { - sensePins[8] = true - } else if (pins.digitalReadPin(DigitalPin.P10) == 0) { - sensePins[8] = false - } -} -function updateFlag (column: number, flag: boolean) { - if (flag) { - columns[column] = true - } else if (!(flag)) { - columns[column] = false - } -} -function updateDisplay (number: number) { +function Display (number: number) { serial.writeString("/") serial.writeNumber(number) } let Denary = 0 -let columnValues: number[] = [] -let columns: boolean[] = [] -let sensePins: boolean[] = [] +let columns: number[] = [] +let ready = false serial.redirect( SerialPin.P0, SerialPin.P16, BaudRate.BaudRate9600 ) -sensePins = [false, false, false, false, false, false, false, false, false] -columns = [false, false, false, false, false, false, false, false, false] -columnValues = [1, 2, 4, 8, 16, 32, 64, 128, 256] +columns = [0, 0, 0, 0, 0, 0, 0, 0, 0] Denary = 0 -updateDisplay(Denary) -let ready = true +Display(Denary) +ready = true basic.forever(function () { if (ready) { - switchSensors() - updateColumn() - updateNumber() + if (pins.digitalReadPin(DigitalPin.P1) == 1 && columns[0] == 0) { + updateNumber(1, 0, 1) + } else if (pins.digitalReadPin(DigitalPin.P1) == 0 && columns[0] == 1) { + updateNumber(0, 0, -1) + } else if (pins.digitalReadPin(DigitalPin.P2) == 1 && columns[1] == 0) { + updateNumber(1, 1, 2) + } else if (pins.digitalReadPin(DigitalPin.P2) == 0 && columns[1] == 1) { + updateNumber(0, 1, -2) + } else if (pins.digitalReadPin(DigitalPin.P3) == 1 && columns[2] == 0) { + updateNumber(1, 2, 4) + } else if (pins.digitalReadPin(DigitalPin.P3) == 0 && columns[2] == 1) { + updateNumber(0, 2, -4) + } else if (pins.digitalReadPin(DigitalPin.P4) == 1 && columns[3] == 0) { + updateNumber(1, 3, 8) + } else if (pins.digitalReadPin(DigitalPin.P4) == 0 && columns[3] == 1) { + updateNumber(0, 3, -8) + } else if (pins.digitalReadPin(DigitalPin.P6) == 1 && columns[4] == 0) { + updateNumber(1, 4, 16) + } else if (pins.digitalReadPin(DigitalPin.P6) == 0 && columns[4] == 1) { + updateNumber(0, 4, -16) + } else if (pins.digitalReadPin(DigitalPin.P7) == 1 && columns[5] == 0) { + updateNumber(1, 5, 32) + } else if (pins.digitalReadPin(DigitalPin.P7) == 0 && columns[5] == 1) { + updateNumber(0, 5, -32) + } else if (pins.digitalReadPin(DigitalPin.P8) == 1 && columns[6] == 0) { + updateNumber(1, 6, 64) + } else if (pins.digitalReadPin(DigitalPin.P8) == 0 && columns[6] == 1) { + updateNumber(0, 6, -64) + } else if (pins.digitalReadPin(DigitalPin.P9) == 1 && columns[7] == 0) { + updateNumber(1, 7, 128) + } else if (pins.digitalReadPin(DigitalPin.P9) == 0 && columns[7] == 1) { + updateNumber(0, 7, -128) + } else if (pins.digitalReadPin(DigitalPin.P10) == 1 && columns[8] == 0) { + updateNumber(1, 8, 256) + } else if (pins.digitalReadPin(DigitalPin.P10) == 0 && columns[8] == 1) { + updateNumber(0, 8, -256) + } } }) diff --git a/pxt.json b/pxt.json index 968d92b..0792477 100644 --- a/pxt.json +++ b/pxt.json @@ -1,9 +1,9 @@ { "name": "Binary Box", - "version": "2.0.0", "description": "", "dependencies": { "core": "*", + "radio": "*", "microphone": "*" }, "files": [ @@ -12,7 +12,9 @@ "README.md", "main.py" ], - "testFiles": [], + "testFiles": [ + "test.ts" + ], "supportedTargets": [ "microbit" ],