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/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..8e5fbdc 100644
--- a/pxt.json
+++ b/pxt.json
@@ -16,5 +16,5 @@
"supportedTargets": [
"microbit"
],
- "preferredEditor": "pyprj"
+ "preferredEditor": "blocksprj"
}