Up Down Counter

Up Down Counter

Another circuit for learn to code by Circle Electronic

 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!

3 DIGIT

You can code

3 digits for

counter.

Unique

Design

Series

Learn coding with NOOB Series Products.

Schematic

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);
  }
}

Download Links

NEW RELEASES

Subscribe for the latest news from our company.

  • Grey YouTube Icon
  • Gri Instagram Simge
  • Grey Twitter Icon
  • Gri LinkedIn Simge

© 2020 BY CIRCLE ELECTRONIC.