diff --git a/.github/makecode/blocks.png b/.github/makecode/blocks.png index 479691c..30e028d 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 index c1de5c7..3ea8b98 100644 Binary files a/.github/makecode/blocksdiff.png and b/.github/makecode/blocksdiff.png differ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..936b43f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +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 2104502..f114122 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 dc9f030..9067326 100644 --- a/main.blocks +++ b/main.blocks @@ -1 +1 @@ -DenarycolumnsreadySerialPin.P0SerialPin.P16BaudRate.BaudRate9600columns0000000000Denary01Denaryready0TRUEupdateNumberflagcolumndifferenceDenary0differencecolumns0columnflag1DenaryDisplaynumber/numberTRUEreadyTRUEANDTRUEEQ0DigitalPin.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-256 \ No newline at end of file +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 diff --git a/main.py b/main.py index 5338fea..a2e5c48 100644 --- a/main.py +++ b/main.py @@ -1,55 +1,94 @@ -def updateNumber(flag: number, column: number, difference: number): - global Denary - Denary += difference - columns[column] = flag - Display(Denary) -def Display(number: number): - serial.write_string("/") - serial.write_number(number) +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] Denary = 0 -columns: List[number] = [] -serial.redirect(SerialPin.P0, SerialPin.P16, BaudRate.BAUD_RATE9600) -columns = [0, 0, 0, 0, 0, 0, 0, 0, 0] -Denary = 0 -Display(Denary) -ready = True - -def on_forever(): - if ready: - if pins.digital_read_pin(DigitalPin.P1) == 1 and columns[0] == 0: - updateNumber(1, 0, 1) - elif pins.digital_read_pin(DigitalPin.P1) == 0 and columns[0] == 1: - updateNumber(0, 0, -1) - elif pins.digital_read_pin(DigitalPin.P2) == 1 and columns[1] == 0: - updateNumber(1, 1, 2) - elif pins.digital_read_pin(DigitalPin.P2) == 0 and columns[1] == 1: - updateNumber(0, 1, -2) - elif pins.digital_read_pin(DigitalPin.P3) == 1 and columns[2] == 0: - updateNumber(1, 2, 4) - elif pins.digital_read_pin(DigitalPin.P3) == 0 and columns[2] == 1: - updateNumber(0, 2, -4) - elif pins.digital_read_pin(DigitalPin.P4) == 1 and columns[3] == 0: - updateNumber(1, 3, 8) - elif pins.digital_read_pin(DigitalPin.P4) == 0 and columns[3] == 1: - updateNumber(0, 3, -8) - elif pins.digital_read_pin(DigitalPin.P6) == 1 and columns[4] == 0: - updateNumber(1, 4, 16) - elif pins.digital_read_pin(DigitalPin.P6) == 0 and columns[4] == 1: - updateNumber(0, 4, -16) - elif pins.digital_read_pin(DigitalPin.P7) == 1 and columns[5] == 0: - updateNumber(1, 5, 32) - elif pins.digital_read_pin(DigitalPin.P7) == 0 and columns[5] == 1: - updateNumber(0, 5, -32) - elif pins.digital_read_pin(DigitalPin.P8) == 1 and columns[6] == 0: - updateNumber(1, 6, 64) - elif pins.digital_read_pin(DigitalPin.P8) == 0 and columns[6] == 1: - updateNumber(0, 6, -64) - elif pins.digital_read_pin(DigitalPin.P9) == 1 and columns[7] == 0: - updateNumber(1, 7, 128) - elif pins.digital_read_pin(DigitalPin.P9) == 0 and columns[7] == 1: - updateNumber(0, 7, -128) - elif pins.digital_read_pin(DigitalPin.P10) == 1 and columns[8] == 0: - updateNumber(1, 8, 256) - elif pins.digital_read_pin(DigitalPin.P10) == 0 and columns[8] == 1: - updateNumber(0, 8, -256) -basic.forever(on_forever) +updateDisplay(Denary) +let ready = true +basic.forever(function () { + if (ready) { + switchSensors() + updateColumn() + updateNumber() + } +}) diff --git a/main.ts b/main.ts index f6a34fa..74c646a 100644 --- a/main.ts +++ b/main.ts @@ -1,62 +1,94 @@ -function updateNumber(flag: number, column: number, difference: number) { - - Denary += difference - columns[column] = flag - Display(Denary) +function updateNumber () { + Denary = 0 + for (let item = 0; item <= columns.length - 1; item++) { + if (columns[item]) { + Denary += columnValues[item] + } + } + updateDisplay(Denary) } - -function Display(number: number) { +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) { serial.writeString("/") serial.writeNumber(number) } - let Denary = 0 -let columns : number[] = [] -serial.redirect(SerialPin.P0, SerialPin.P16, BaudRate.BaudRate9600) -columns = [0, 0, 0, 0, 0, 0, 0, 0, 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] Denary = 0 -Display(Denary) +updateDisplay(Denary) let ready = true -basic.forever(function on_forever() { +basic.forever(function () { if (ready) { - 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) - } - + switchSensors() + updateColumn() + updateNumber() } - }) diff --git a/pxt.json b/pxt.json index 7544cc5..968d92b 100644 --- a/pxt.json +++ b/pxt.json @@ -1,6 +1,6 @@ { "name": "Binary Box", - "version": "1.0.0", + "version": "2.0.0", "description": "", "dependencies": { "core": "*", @@ -16,5 +16,5 @@ "supportedTargets": [ "microbit" ], - "preferredEditor": "pyprj" + "preferredEditor": "blocksprj" }