arduino

 avatar
unknown
plain_text
a month ago
2.4 kB
6
Indexable
// pb1 = tambah
// pb2 = kurang
// pb3 = reset
// ketika ditekan buzzer bunyi

const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8};
const int pb[] = {9, 10, 11};
const int buzz = 13;
int count = 0;

int data[10][7] = {
  {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW}, //0
  {LOW, HIGH, HIGH, LOW, LOW, LOW, LOW}, //1
  {HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH}, //2
  {HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH}, //3
  {LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH}, //4
  {HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH}, //5
  {HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH}, //6
  {HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW}, //7
  {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH}, //8
  {HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH}, //9
};

void setup() {
  for (int i = 0; i <= 6; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }

  for (int j = 0; j <= 2; j++) {
    pinMode(pb[j], INPUT);
  }

  pinMode(buzz, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int btn1 = digitalRead(pb[0]);
  int btn2 = digitalRead(pb[1]);
  int btn3 = digitalRead(pb[2]);
  delay(100);

  if (btn1 == 0) {
    buzzerActive();

    if (count >= 9) {
      count = 9;
    } else {
      count++;
    }
  }

  if (btn2 == 0) {
    buzzerActive();

    if (count == 0 ) {
      count = 0;
    } else {
      count--;
    }
  }

  if (btn3 == 0) {
    buzzerActive();

    count = 0;
  }

  switch (count) {
      case 0:
        // 0
        segmentActive(0);
        break;
      case 1:
        // 1
        segmentActive(1);
        break;
      case 2:
        // 2
        segmentActive(2);
        break;
      case 3:
        // 3
        segmentActive(3);
        break;
      case 4:
        // 4
        segmentActive(4);
        break;
      case 5:
        //5 
        segmentActive(5);
        break;
      case 6:
        // 6
        segmentActive(6);
        break;
      case 7:
        // 7
        segmentActive(7);
        break;
      case 8:
        // 8
        segmentActive(8);
        break;
      case 9:
        // 9
        segmentActive(9);
        break;
      default:
        segmentActive(0);
        break;
    }
}

void buzzerActive() {
  digitalWrite(buzz, HIGH);
  delay(250);
  digitalWrite(buzz, LOW);
}

void segmentActive(int numb) {
  for (int i = 0; i <= 6; i++) {
    digitalWrite(segmentPins[i], data[numb][i]);
  }
}
Editor is loading...
Leave a Comment