i'm not sure why, this is what my full code looks like, and it works fine:
/*
Binary counter
*/
int Led_8 = 8; //Green
int Led_4 = 9; //Blue
int Led_2 = 10; //White
int Led_1 = 7; //Red
int Led_Subtract = 12;
int binary_number = 0;
int number = 0;
int Delay = 750;
int Blink = 100;
int pause = 1000;
const int buttonPin = 2;
int buttonState = 0;
unsigned long buttonPresstime = 0;
bool buttonPressed = false;
int longClick_threshold = 1000;
int last_clicked = 0;
bool debounce = false;
bool debounce1 = false;
bool adding = true;
void setup() {
pinMode(Led_8, OUTPUT);
pinMode(Led_4, OUTPUT);
pinMode(Led_2, OUTPUT);
pinMode(Led_1, OUTPUT);
pinMode(Led_Subtract, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
if (number < 1) {
digitalWrite(Led_1, LOW);
digitalWrite(Led_2, LOW);
digitalWrite(Led_4, LOW);
digitalWrite(Led_8, LOW);
}
if (number == 1) {
digitalWrite(Led_1, HIGH);
digitalWrite(Led_2, LOW);
digitalWrite(Led_4, LOW);
digitalWrite(Led_8, LOW);
binary_number = 1;
}
if (number == 2) {
digitalWrite(Led_2, HIGH);
digitalWrite(Led_1, LOW);
digitalWrite(Led_4, LOW);
digitalWrite(Led_8, LOW);
binary_number = 2;
}
if (number == 3) {
digitalWrite(Led_1, HIGH);
digitalWrite(Led_2, HIGH);
digitalWrite(Led_4, LOW);
digitalWrite(Led_8, LOW);
binary_number = 3;
}
if (number == 4) {
digitalWrite(Led_4, HIGH);
digitalWrite(Led_1, LOW);
digitalWrite(Led_2, LOW);
digitalWrite(Led_8, LOW);
binary_number = 4;
}
if (number == 5) {
digitalWrite(Led_1, HIGH);
digitalWrite(Led_4, HIGH);
digitalWrite(Led_2, LOW);
digitalWrite(Led_8, LOW);
binary_number = 5;
}
if (number == 6) {
digitalWrite(Led_2, HIGH);
digitalWrite(Led_4, HIGH);
digitalWrite(Led_1, LOW);
digitalWrite(Led_8, LOW);
binary_number = 6;
}
if (number == 7) {
digitalWrite(Led_1, HIGH);
digitalWrite(Led_2, HIGH);
digitalWrite(Led_4, HIGH);
digitalWrite(Led_8, LOW);
binary_number = 7;
}
if (number == 8) {
digitalWrite(Led_8, HIGH);
digitalWrite(Led_1, LOW);
digitalWrite(Led_2, LOW);
digitalWrite(Led_4, LOW);
binary_number = 8;
}
if (number == 9) {
digitalWrite(Led_1, HIGH);
digitalWrite(Led_8, HIGH);
digitalWrite(Led_2, LOW);
digitalWrite(Led_4, LOW);
binary_number = 9;
}
if (number == 10) {
digitalWrite(Led_2, HIGH);
digitalWrite(Led_8, HIGH);
digitalWrite(Led_1, LOW);
digitalWrite(Led_4, LOW);
binary_number = 10;
}
if (number == 11) {
digitalWrite(Led_1, HIGH);
digitalWrite(Led_2, HIGH);
digitalWrite(Led_8, HIGH);
digitalWrite(Led_4, LOW);
binary_number = 11;
}
if (number == 12) {
digitalWrite(Led_4, HIGH);
digitalWrite(Led_8, HIGH);
digitalWrite(Led_1, LOW);
digitalWrite(Led_2, LOW);
binary_number = 12;
}
if (number == 13) {
digitalWrite(Led_1, HIGH);
digitalWrite(Led_4, HIGH);
digitalWrite(Led_8, HIGH);
digitalWrite(Led_2, LOW);
binary_number = 13;
}
if (number == 14) {
digitalWrite(Led_2, HIGH);
digitalWrite(Led_4, HIGH);
digitalWrite(Led_8, HIGH);
digitalWrite(Led_1, LOW);
binary_number = 14;
}
if (number == 15) {
digitalWrite(Led_1, HIGH);
digitalWrite(Led_2, HIGH);
digitalWrite(Led_4, HIGH);
digitalWrite(Led_8, HIGH);
binary_number = 15;
}
if (number > 15) {
digitalWrite(Led_1, LOW);
digitalWrite(Led_2, LOW);
digitalWrite(Led_4, LOW);
digitalWrite(Led_8, LOW);
number = 0;
}
bool buttonState = digitalRead(buttonPin);
// Check if the button is pressed
if (buttonState == HIGH && !buttonPressed) {
if (!debounce) {
debounce = true;
buttonPresstime = millis();
buttonPressed = true; // Set the flag to indicate button press
}
}
//check if button is released
if (buttonState == LOW && buttonPressed) {
if (debounce && !debounce1) {
debounce1 = true;
unsigned long buttonReleaseTime = millis();
buttonPressed = false;
unsigned long pressDuration = buttonReleaseTime - buttonPresstime;
if (pressDuration < longClick_threshold) {
// Short press
Calculate();
Serial.println("Short press");
} else {
// Long press
if (adding) {
adding = false;
digitalWrite(Led_Subtract, HIGH);
} else {
adding = true;
digitalWrite(Led_Subtract, LOW);
}
Serial.println("Long press");
}
delay(pause);
debounce = false;
debounce1 = false;
}
}
}
void Calculate() {
if (adding) {
number += 1;
} else {
number -= 1;
}
}