Anda di halaman 1dari 5

# /* // fungsi memeriksa apakah keypad ditekan

## #define BUTTON1 4 return s1;

#define BUTTON2 2 }

#define BCD1 8

## #define KEY0 4 key |= digitalRead(KEY0+3) << 3;

return key;

// konstanta periode }

#define DISPLAY_PERIODE 50

biner (0 - 0xF)
// konstanta OPERATOR
char biner_table[] =

## #define MUL 0xC return biner_table[key];

#define DIV 0xD }

## #define CALC 0xF // fungsi untuk menampilkan BCD ke 7 segment

melalui encoder
void writeDigit(int bcd){

for(int i=0; i<4; i++) { // fungsi mengisi 3 digit array BCD dengan operator

int opr;

## // fungsi untuk menampilkan 3 digit BCD ke 7- long next_display;

segment memakai shift register

int index = 0;
void setup() {
void shiftDigit() {
Serial.begin(115200);
salah satu digits // inisialisasi mode pin

## digitalWrite(T2, index & 0x01); pinMode(pin, INPUT);

index = (index + 1 ) % 3; }

## } // inisialisasi digits & shift 7-segment

writeDigit3(0);
digitalWrite(T1, LOW); }

## // inisialisasi waktu Serial.println(value2);

next_display = millis(); }

// inisialisasi kalkulator

## // tapi lakukan hanya kalau tidak menyebabkan opr = op;

overflow
writeOperator(opr);
void entryValue1(int biner) {
}
if (value1 < 100) {

## value1 = (value1 * 10) + biner;

// fungsi transisi pop
writeDigit3(value1);
// mengoperasikan value1 thd value2 sesuai
} operator

## Serial.println(value1); Serial.print(" pop ");

} Serial.print(value1);

Serial.print(" ");

## if (value2 < 100) { switch(opr) {

value2 = (value2 * 10) + biner; case ADD: value1 = value1 + value2; break;

## writeDigit3(value2); case SUB: value1 = value1 - value2; break;

case MUL: value1 = value1 * value2; break; case 6:

## case DIV: value1 = value1 / value2; break; case 7:

} case 8:

value2 = 0; case 9:

} case MUL:

case DIV:

} break;

## case 0: Serial.print("State 2 ");

case 1: switch(biner) {

case 2: case 0:

case 3: case 1:

case 4: case 2:

case 5: case 3:

## case DIV: case STATE_2 : state2(); break;

push(biner); }

next_state = STATE_1; }

## clear(); next_display += DISPLAY_PERIODE;

break; }

} // update state

} if (next_state != state) {

state = next_state;

void loop() { }

## // baca semua input }

da = keyIsPressed();

## // baca waktu dalam mili detik

long t = millis();

if (da) {

## // baca key dan translasi ke biner

### Dapatkan aplikasi gratis kami

Hak cipta © 2023 Scribd Inc.

### Dapatkan aplikasi gratis kami

Hak cipta © 2023 Scribd Inc.