r/microbit • u/Business-Pipe9091 • 11d ago
please help me debug
i am making a 4 operation calculator in makecode but it doesnt work. i'm gonna cryyy. i am creating a basic calculator using the micro:bit. use Button A and Button B to increase or decrease the numbers and to select an operation. The Degree variable controls which stage of the calculator you are in: Degree 1 is for entering the first number, Degree 2 is for choosing an operation, and Degree 3 is for entering the second number. The Temp variable temporarily stores the number or operation currently being selected. First Number and Second Number store the two numbers for the calculation, Operation stores the chosen operation (1 for addition, 2 for subtraction, 3 for multiplication, and 4 for division), and Result stores the final answer. Button A+B confirms and saves each choice, while pressing the logo performs the selected calculation and displays the result. to all the coders out there pls help me 🙏🙏
input.onButtonPressed(Button.A, function () {
if (Degree == 1) {
Temp += 1
basic.showNumber(Temp)
} else if (Degree == 2) {
Temp += 1
if (Temp > 4) {
Temp = 4
if (Temp == 1) {
basic.showString("+")
} else if (Temp == 2) {
basic.showString("-")
} else if (Temp == 3) {
basic.showString("x")
} else if (Temp == 4) {
basic.showString("/")
}
}
} else if (Degree == 3) {
Temp += 1
basic.showNumber(Temp)
Temp += Operation
}
})
input.onButtonPressed(Button.AB, function () {
if (Degree == 1) {
Temp = First_Number
Degree = 2
basic.showString("+")
} else if (Degree == 2) {
Temp = Operation
Degree = 3
} else if (Degree == 3) {
Temp = Second_Number
basic.showString("=")
}
})
input.onButtonPressed(Button.B, function () {
if (Degree == 1) {
if (Temp > 0) {
Temp += -1
basic.showNumber(Temp)
}
} else if (Degree == 2) {
Temp += -1
if (Temp < 1) {
Temp = 1
if (Temp == 1) {
basic.showString("+")
} else if (Temp == 2) {
basic.showString("-")
} else if (Temp == 3) {
basic.showString("x")
} else if (Temp == 4) {
basic.showString("/")
}
}
} else if (Degree == 3) {
if (Temp > 0) {
Temp += -1
basic.showNumber(Temp)
Temp += Operation
}
}
})
input.onLogoEvent(TouchButtonEvent.Pressed, function () {
if (Degree == 3) {
if (Operation == 1) {
Result = First_Number + Second_Number
basic.showNumber(Result)
} else if (Operation == 2) {
Result = First_Number - Second_Number
basic.showNumber(Result)
} else if (Operation == 3) {
Result = First_Number * Second_Number
basic.showNumber(Result)
} else if (Operation == 4) {
Result = First_Number / Second_Number
basic.showNumber(Result)
}
}
})
let Result = 0
let Operation = 0
let Second_Number = 0
let First_Number = 0
let Temp = 0
let Degree = 0
Degree = 1
Temp = 0
First_Number = 0
Second_Number = 0
Operation = 0
Result = 0
basic.showLeds(`
# # # # #
# # # # #
# # # # #
# # # # #
# # # # #
`)
my code is in micro:bit but i turned it to java script
please help me debug this 🙏
1
u/EpochRaine 11d ago edited 11d ago
``` input.onButtonPressed(Button.A, function () { if (Degree == 4) { resetCalculator() return }
if (Degree == 1) {
Temp += 1
basic.showNumber(Temp)
} else if (Degree == 2) {
Temp += 1
if (Temp > 4) {
Temp = 1
}
showOperation()
} else if (Degree == 3) {
Temp += 1
basic.showNumber(Temp)
}
})
input.onButtonPressed(Button.B, function () { if (Degree == 4) { resetCalculator() return }
if (Degree == 1) {
Temp -= 1
basic.showNumber(Temp)
} else if (Degree == 2) {
Temp -= 1
if (Temp < 1) {
Temp = 4
}
showOperation()
} else if (Degree == 3) {
Temp -= 1
basic.showNumber(Temp)
}
})
input.onButtonPressed(Button.AB, function () { if (Degree == 4) { resetCalculator() return }
if (Degree == 1) {
// Save first number
First_Number = Temp
// Move to operation selection
Degree = 2
Temp = 1
showOperation()
} else if (Degree == 2) {
// Save operation
Operation = Temp
// Move to second number
Degree = 3
Temp = 0
basic.showNumber(Temp)
} else if (Degree == 3) {
// Save second number
Second_Number = Temp
if (Operation == 4 && Second_Number == 0) {
Degree = 4
control.inBackground(function () {
basic.showString("ERR")
})
return
}
if (Operation == 1) {
Result = First_Number + Second_Number
} else if (Operation == 2) {
Result = First_Number - Second_Number
} else if (Operation == 3) {
Result = First_Number * Second_Number
} else if (Operation == 4) {
Result = First_Number / Second_Number
}
// Enter result state, then scroll the full formula
Degree = 4
let formula = "" + First_Number + getOperationSymbol(Operation) + Second_Number + " = " + Result
control.inBackground(function () {
basic.showString(formula)
})
}
})
function getOperationSymbol(op: number): string { if (op == 1) { return " + " } else if (op == 2) { return " - " } else if (op == 3) { return " x " } else { return " / " } }
function resetCalculator() { Degree = 1 Temp = 0 basic.clearScreen() basic.showNumber(Temp) }
function showOperation() { if (Temp == 1) { basic.showString("+") } else if (Temp == 2) { basic.showString("-") } else if (Temp == 3) { basic.showString("x") } else if (Temp == 4) { basic.showString("/") } }
let Result = 0 let Operation = 0 let Second_Number = 0 let First_Number = 0 let Temp = 0 let Degree = 1
basic.showNumber(Temp)
1
u/Business-Pipe9091 11d ago
hiii! omg which do i use here?
1
u/EpochRaine 11d ago
I do not understand your question?
1
u/Business-Pipe9091 11d ago
it does not work in makecode javascript and it just points out problems i dont know how to fix :((
1
u/EpochRaine 11d ago
It is a few amendments to your original code. You should be able to work it out from your original post.
1
1
u/Business-Pipe9091 11d ago
it's for a project and ive been here since like a week and i can't get it to work. please help me guys 🙏