#include <TM1637Display.h>
#define CLK A0
#define DIO A1
TM1637Display display(CLK, DIO);
void setup() {
for (int i = 2; i <= 13; ++i) {
pinMode(i, INPUT);
}
pinMode(A5, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
display.setBrightness(15);
}
int sinal;
bool sinB = false;
int numb = 0;
int numero = 0;
bool res = false, op = true;
int num1;
void reset() {
sinal = 0;
sinB = false;
numb = 0;
numero = 0;
res = false;
op = true;
num1 = 0;
}
void capt() {
int num = -1; // Inicializa num com um valor inválido
for (int i = 2; i <= 9; ++i) {
if (digitalRead(i) == HIGH) {
num = i;
numb++;
break;
}
if(digitalRead(A2) == HIGH){
num = 0;
}
if(digitalRead(A3) == HIGH){
num = 1;
}
}
if (numb <= 3 && num != -1) {
numero = numero * 10 + num;
}
if(digitalRead(A4) == HIGH){
reset();
}
if(digitalRead(A5) == HIGH){
res = true;
numb = 0;
}
if (digitalRead(10) == HIGH && sinB == false ) {
sinB = true;
sinal = 1;
//+
}
if (digitalRead(11) == HIGH && sinB == false) {
sinB = true;
sinal = 2;
//-
}
if (digitalRead(12) == HIGH && sinB == false) {
sinB = true;
sinal = 3;
//*
}
if (digitalRead(13) == HIGH && sinB == false) {
sinB = true;
sinal = 4;
///
}
if (sinB && op){
num1 = numero;
numero = 0;
op = false;
}
delay(200);
}
void result (){
if(sinal == 1){
numero = num1 + numero;
sinal = 0;
res = false;
}
if(sinal == 2){
numero = num1 - numero;
sinal = 0;
res = false;
}
if(sinal == 3){
numero = num1 * numero;
sinal = 0;
res = false;
}
if(sinal == 4){
numero = num1 / numero;
sinal = 0;
res = false;
}
}
void loop() {
display.showNumberDec(numero, false);
capt();
if(res){
result();
}
}