Up Down Counter
![4_b2.png](https://static.wixstatic.com/media/0f415a_8671ed4edc7742c6a77fde249219c6fa~mv2.png/v1/fill/w_500,h_399,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/4_b2.png)
Up Down Counter
Another circuit for learning to code by Circle Electronic
![6.png](https://static.wixstatic.com/media/0f415a_3202e2fdab084802a1d51c75b3bd7d93~mv2.png/v1/fill/w_793,h_483,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/6.png)
if (statusBtnUp == '1' && digitalRead(btnUp) == LOW) { //Falling Edge
statusBtnUp = '0';
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
if (numberValue < 100){
numberValue++;
}
} else if (statusBtnUp == '0' && digitalRead(btnUp) == HIGH) { //Rising
statusBtnUp = '1';
}
if (statusBtnDown == '1' && digitalRead(btnDown) == LOW) { //Falling
statusBtnDown = '0';
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
if (numberValue > 0)numberValue--;
} else if (statusBtnDown == '0' && digitalRead(btnDown) == HIGH) { //Rising
statusBtnDown = '1';
}
Up&Down Button
Buzzer Reaction
Add your project voice feedback with your coding skills!
![7.png](https://static.wixstatic.com/media/0f415a_6027bee7a1bf41dfad8d43ec732e94b0~mv2.png/v1/fill/w_648,h_384,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/7.png)
![voice.png](https://static.wixstatic.com/media/0f415a_6a2d28430afa4cfea719f604d9312395~mv2.png/v1/fill/w_153,h_153,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/voice.png)
![8.png](https://static.wixstatic.com/media/0f415a_10ce5576b4454f5d87584ccb144e5a11~mv2.png/v1/fill/w_599,h_434,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/8.png)
3 DIGIT
You can code
3 digits to
the counter.
![5_b.png](https://static.wixstatic.com/media/0f415a_85dbb7a9de824b30a8fc0ac1d807e0ba~mv2.png/v1/fill/w_459,h_364,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/5_b.png)
![2_b2.png](https://static.wixstatic.com/media/0f415a_53bae6f3b91047ffaf5f78ec8b744d61~mv2.png/v1/fill/w_562,h_453,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/2_b2.png)
Unique
Design
Series
![nooblogo.png](https://static.wixstatic.com/media/0f415a_bbe72083b5c846d0872801a274385225~mv2.png/v1/fill/w_321,h_148,al_c,q_85,enc_avif,quality_auto/nooblogo.png)
Learn coding with NOOB Series Products.
![](https://static.wixstatic.com/media/0f415a_0a5932d702f742dfa1bafe3c9dd95a8bf000.jpg/v1/fill/w_713,h_401,al_c,q_80,usm_0.66_1.00_0.01,enc_avif,quality_auto/0f415a_0a5932d702f742dfa1bafe3c9dd95a8bf000.jpg)
Schematic
![updownsch.jpg](https://static.wixstatic.com/media/0f415a_dc2d11ad40044c5a8f09d0135c2a808d~mv2.jpg/v1/fill/w_914,h_654,al_c,q_85,usm_0.66_1.00_0.01,enc_avif,quality_auto/updownsch.jpg)
Coding Part
Challenge Accepted!
1) Try to code the circuit before seeing the codes. Just make it to 0-9.
2) Add the second digit to codes. (0-99)
3) Add the buzzer reaction when buttons are pressed
4) Add the third digit to codes. (0-999)
5) Add increase or decrease as the button is kept pressed.
3 digit and button reaction (Hundereds to just 1)
const int dispA = 2;
const int dispB = 3;
const int dispC = 4;
const int dispD = 5;
const int dispE = 6;
const int dispF = 7;
const int dispG = 8;
const int com1 = 9;
const int com10 = 10;
const int com100 = 11;
const int buzzer = 12;
const int btnUp = A0;
const int btnDown = A1;
void setup() {
showNumber(0);
pinMode(dispA, OUTPUT);
pinMode(dispB, OUTPUT);
pinMode(dispC, OUTPUT);
pinMode(dispD, OUTPUT);
pinMode(dispE, OUTPUT);
pinMode(dispF, OUTPUT);
pinMode(dispG, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(com1, OUTPUT);
pinMode(com10, OUTPUT);
pinMode(com100, OUTPUT);
pinMode(btnUp, INPUT_PULLUP);
pinMode(btnDown, INPUT_PULLUP);
}
int numberValue = 0;
char statusBtnUp = '1';
char statusBtnDown = '1';
void loop() {
if (statusBtnUp == '1' && digitalRead(btnUp) == LOW) {
statusBtnUp = '0';
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
if (numberValue < 100) {
numberValue++;
}
} else if (statusBtnUp == '0' && digitalRead(btnUp) == HIGH) {
statusBtnUp = '1';
}
if (statusBtnDown == '1' && digitalRead(btnDown) == LOW) {
statusBtnDown = '0';
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
if (numberValue > 0)numberValue--;
} else if (statusBtnDown == '0' && digitalRead(btnDown) == HIGH) {
statusBtnDown = '1';
}
showNumber(numberValue);
}
void showNumber(int number) {
int ones = number % 10;
selectDigit(1);
showDigit(ones);
delay(1);
int tens = number / 10;
selectDigit(10);
showDigit(tens);
delay(1);
int hundreds = number / 100;
selectDigit(100);
showDigit(hundreds);
delay(1);
}
void selectDigit(int selectedDigit) {
showDigit(-1);
delay(1);
switch (selectedDigit) {
case 1:
digitalWrite(com1, HIGH);
digitalWrite(com10, LOW);
digitalWrite(com100, LOW);
break;
case 10:
digitalWrite(com1, LOW);
digitalWrite(com10, HIGH);
digitalWrite(com100, LOW);
break;
case 100:
digitalWrite(com1, LOW);
digitalWrite(com10, LOW);
digitalWrite(com100, HIGH);
break;
default:
digitalWrite(com1, LOW);
digitalWrite(com10, LOW);
digitalWrite(com100, LOW);
}
}
void showDigit(int digit) {
switch (digit) {
case 0:
digitalWrite(dispA, HIGH);
digitalWrite(dispB, HIGH);
digitalWrite(dispC, HIGH);
digitalWrite(dispD, HIGH);
digitalWrite(dispE, HIGH);
digitalWrite(dispF, HIGH);
digitalWrite(dispG, LOW);
break;
case 1:
digitalWrite(dispA, LOW);
digitalWrite(dispB, HIGH);
digitalWrite(dispC, HIGH);
digitalWrite(dispD, LOW);
digitalWrite(dispE, LOW);
digitalWrite(dispF, LOW);
digitalWrite(dispG, LOW);
break;
case 2:
digitalWrite(dispA, HIGH);
digitalWrite(dispB, HIGH);
digitalWrite(dispC, LOW);
digitalWrite(dispD, HIGH);
digitalWrite(dispE, HIGH);
digitalWrite(dispF, LOW);
digitalWrite(dispG, HIGH);
break;
case 3:
digitalWrite(dispA, HIGH);
digitalWrite(dispB, HIGH);
digitalWrite(dispC, HIGH);
digitalWrite(dispD, HIGH);
digitalWrite(dispE, LOW);
digitalWrite(dispF, LOW);
digitalWrite(dispG, HIGH);
break;
case 4:
digitalWrite(dispA, LOW);
digitalWrite(dispB, HIGH);
digitalWrite(dispC, HIGH);
digitalWrite(dispD, LOW);
digitalWrite(dispE, LOW);
digitalWrite(dispF, HIGH);
digitalWrite(dispG, HIGH);
break;
case 5:
digitalWrite(dispA, HIGH);
digitalWrite(dispB, LOW);
digitalWrite(dispC, HIGH);
digitalWrite(dispD, HIGH);
digitalWrite(dispE, LOW);
digitalWrite(dispF, HIGH);
digitalWrite(dispG, HIGH);
break;
case 6:
digitalWrite(dispA, HIGH);
digitalWrite(dispB, LOW);
digitalWrite(dispC, HIGH);
digitalWrite(dispD, HIGH);
digitalWrite(dispE, HIGH);
digitalWrite(dispF, HIGH);
digitalWrite(dispG, HIGH);
break;
case 7:
digitalWrite(dispA, HIGH);
digitalWrite(dispB, HIGH);
digitalWrite(dispC, HIGH);
digitalWrite(dispD, LOW);
digitalWrite(dispE, LOW);
digitalWrite(dispF, LOW);
digitalWrite(dispG, LOW);
break;
case 8:
digitalWrite(dispA, HIGH);
digitalWrite(dispB, HIGH);
digitalWrite(dispC, HIGH);
digitalWrite(dispD, HIGH);
digitalWrite(dispE, HIGH);
digitalWrite(dispF, HIGH);
digitalWrite(dispG, HIGH);
break;
case 9:
digitalWrite(dispA, HIGH);
digitalWrite(dispB, HIGH);
digitalWrite(dispC, HIGH);
digitalWrite(dispD, HIGH);
digitalWrite(dispE, LOW);
digitalWrite(dispF, HIGH);
digitalWrite(dispG, HIGH);
break;
case 10:
digitalWrite(dispA, HIGH);
digitalWrite(dispB, HIGH);
digitalWrite(dispC, HIGH);
digitalWrite(dispD, HIGH);
digitalWrite(dispE, HIGH);
digitalWrite(dispF, HIGH);
digitalWrite(dispG, LOW);
break;
default:
digitalWrite(dispA, LOW);
digitalWrite(dispB, LOW);
digitalWrite(dispC, LOW);
digitalWrite(dispD, LOW);
digitalWrite(dispE, LOW);
digitalWrite(dispF, LOW);
digitalWrite(dispG, LOW);
}
}