// ======================================
// ========== TM1637 [INI] ==============
// ======================================
#define S1 8
#define S2 9
//PALAVRAS UTILIZADAS NESSE CÓDIGO
// maTrix
// inicia
// brilho
// pos_icao
// val_or
// pon_to
// printVar
// printBuffer
// printSegs
// bufferDigito
// separaDigito
#include <TM1637Display.h>
#define CLK A5
#define DIO A4
#define maTrix display
TM1637Display maTrix(CLK, DIO);
byte dATa[]={0,0,0,0};
//===================================
void inicia(){
maTrix.setBrightness(0x0f);
}//fecha inicia
//===================================
//==========================================================
void printVar(byte posi_cao,int val_or,byte pon_to){
if(pon_to==1){pon_to=64;}
maTrix.showNumberDecEx(val_or, pon_to, true, 4, posi_cao); // numero , ponto decimal , zeros à esquerda , quantidade de digitos no display , posição do cursor
}//fecha printVar
//==========================================================
//==========================================================
void printSegs(byte posi_cao,byte val_or){
dATa[posi_cao]=val_or;
maTrix.setSegments(dATa);
}//fecha printSegs()
//==========================================================
//==========================================================
void brilho(byte val_or){
maTrix.setBrightness(val_or);
}//fecha brilho()
//==========================================================
//==========================================================
void bufferByte(byte posi_cao, byte val_or){
dATa[posi_cao]=val_or;
maTrix.setSegments(dATa);
}//fecha printByte()
//==========================================================
//===========================================
void separaDigito(byte on_off){
if(on_off==1){dATa[1]=dATa[1]+128;}
}//fecha separaDigito()
//===========================================
//===========================================
void printbuffer(){
printSegs(0,dATa[0]);
printSegs(1,dATa[1]);
printSegs(2,dATa[2]);
printSegs(3,dATa[3]);
}//fecha printbuffer()
//===========================================
//===========================================
void bufferDigito(byte posi_cao, byte val_or, byte pon_to){
byte num=val_or;
if(num==0){val_or=63;}
if(num==1){val_or=6;}
if(num==2){val_or=91;}
if(num==3){val_or=79;}
if(num==4){val_or=102;}
if(num==5){val_or=109;}
if(num==6){val_or=125;}
if(num==7){val_or=7;}
if(num==8){val_or=127;}
if(num==9){val_or=111;}
if(pon_to==1 && val_or<128){val_or=val_or+128;}
if(pon_to==0 && val_or>128){val_or=val_or-128;}
dATa[posi_cao]=val_or;
}//fecha bufferDigito()
//===========================================
// ======================================
// ========== TM1637 [END] ==============
// ======================================
/*
//===============================================
//============== ADAFRUIT [INI] ================
//===============================================
// PALAVRAS UTILIZADAS NESSE CÓDIGO
// maTrix
// inicia
// pos_icao
// val_or
// pon_to
// printBuffer
// bufferDigito
// separaDigito
#include "Adafruit_LEDBackpack.h"
Adafruit_7segment maTrix = Adafruit_7segment();
//=================================================
void inicia(){
maTrix.begin(0X70); //Troque o endereço 0x70 se for diferente
}//fecha inicia
//=================================================
//===========================================================
void bufferDigito(byte posi_cao , byte val_or, byte pon_to){
if(posi_cao>1){posi_cao++;}
maTrix.writeDigitNum(posi_cao,val_or,pon_to);
}//fecha printDigito()
//===========================================================
//=============================
void separaDigito(byte onoff){
maTrix.drawColon(onoff);
}//fecha separaDigito
//=============================
//=====================================
void printbuffer(){
maTrix.writeDisplay();//Imprime Buffer
}//fecha printbuffer()
//======================================
//======================================
void brilho(byte val_or){
maTrix.setBrightness(val_or);
}//fecha brilho()
//======================================
//======================================
void bufferByte( byte pos , byte valor){
maTrix.writeDigitRaw(pos,valor);
}//fecha printByte()
//======================================
//===============================================
//============== ADAFRUIT [END] ================
//===============================================
*/
//===================================================
//===================================================
//===================================================
byte u,d,c,m;
int contador;
void setup() {
pinMode(S1, INPUT);
pinMode(S2, INPUT);
inicia();//Inicia Módulo
brilho(15);
//------------- CONDIÇÕES INICIAIS ------------
contador=0;
}//fecha setup()
void loop(){
int POT=analogRead(A1);
if(digitalRead(S1)==1 && contador<9999){
contador++;
}
if(digitalRead(S2)==1 && contador>0){
contador--;
}
m=contador/1000;
c=(contador-(m*1000))/100;
d=(contador-(m*1000)-(c*100))/10;
u=contador-(m*1000)-(c*100)-(d*10);
bufferDigito(0,m,0);
bufferDigito(1,c,0);
bufferDigito(2,d,0);
bufferDigito(3,u,0);
printbuffer();
delay(300);
}//fecha loop()