Informática, perguntado por sergioantonio234, 1 ano atrás

Eu fiz a ligação de 2 displays de 7 segmentos (ANODO COMUM) com transistor PNP, mas não estou conseguindo fazer o código para transformá-lo num contador de 00 a 99.
Se alguém puder me ajudar

Codigo para o arduino

Soluções para a tarefa

Respondido por alvespessan
1

Utilize as entradas do display e do transistor conforme o especificado, se necessário, apenas mude a numeração no cabeçalho.

O código tem a escrita dos números no display por função lá na parte inferior.

Segue abaixo:

//======= CODIGO =======

//Define as variáveis e em qual portas do Arduino estarão

int transistor1 = 2;

int transistor2 = 3;

int a = 4;

int b = 5;

int c = 6;

int d = 7;

int e = 8;

int f = 9;

int g = 10;

//Variável de controle da unidade e dezena

int contUnidade = 0;

int contDezena = 0;

int repete = 0;

//Definindo como as portas serão usadas, no caso, todas de saída (OUTPUT)

void setup() {

 pinMode(transistor1, OUTPUT);

 pinMode(transistor2, OUTPUT);

 pinMode(a, OUTPUT);

 pinMode(b, OUTPUT);

 pinMode(c, OUTPUT);

 pinMode(d, OUTPUT);

 pinMode(e, OUTPUT);

 pinMode(f, OUTPUT);

 pinMode(g, OUTPUT);

}

void loop() {  

//repete controla o tempo entre a transição dos números

//quanto maior for, mais lento será o contador

 repete = 0;

 

 while (repete < 50){

   //liga e desliga os transistores de unidade e dezena, respectivamente

   digitalWrite(transistor1, 0);

   digitalWrite(transistor2, 1);

   

  //Os if verificam em qual número a unidade deve estar

   if(contUnidade == 0)

     zero();

   if(contUnidade == 1)

     um();

   if(contUnidade == 2)

     dois();

   if(contUnidade == 3)

     tres();

   if(contUnidade == 4)

     quatro();

   if(contUnidade == 5)

     cinco();

   if(contUnidade == 6)

     seis();

   if(contUnidade == 7)

     sete();

   if(contUnidade == 8)

     oito();

   if(contUnidade == 9)

     nove();

   delay(9);

   

  //Inverte os transistores

   digitalWrite(transistor1, 1);

   digitalWrite(transistor2, 0);

   

  //Os if verificam em qual número a dezena deve estar

   if(contDezena == 0)

     zero();

   if(contDezena == 1)

     um();

   if(contDezena == 2)

     dois();

   if(contDezena == 3)

     tres();

   if(contDezena == 4)

     quatro();

   if(contDezena == 5)

     cinco();

   if(contDezena == 6)

     seis();

   if(contDezena == 7)

     sete();

   if(contDezena == 8)

     oito();

   if(contDezena == 9)

     nove();

   delay(9);

   

   repete++;

 }

 

 //Caso a unidade seja menor que 10, ela continuará a somar

 if(contUnidade < 10)

   contUnidade++;

 

 //Caso a unidade chegue em 10, zeramos ela e aumentamos 1 na dezena (de 9 para 10, por exemplo)

 if(contUnidade == 10) {

   contUnidade = 0;

   contDezena++;

 }

 

 //Caso a dezena chegue em 10, volta para 0 (fazendo o 99 retornar a 00)

 if(contDezena == 10)

   contDezena = 0;

}

void zero(){

 digitalWrite(a,0);

 digitalWrite(b,0);

 digitalWrite(c,0);

 digitalWrite(d,0);

 digitalWrite(e,0);

 digitalWrite(f,0);

 digitalWrite(g,1);

}

void um(){

 digitalWrite(a,1);

 digitalWrite(b,0);

 digitalWrite(c,0);

 digitalWrite(d,1);

 digitalWrite(e,1);

 digitalWrite(f,1);

 digitalWrite(g,1);

}

void dois(){

 digitalWrite(a,0);

 digitalWrite(b,0);

 digitalWrite(c,1);

 digitalWrite(d,0);

 digitalWrite(e,0);

 digitalWrite(f,1);

 digitalWrite(g,0);

}

void tres(){

 digitalWrite(a,0);

 digitalWrite(b,0);

 digitalWrite(c,0);

 digitalWrite(d,0);

 digitalWrite(e,1);

 digitalWrite(f,1);

 digitalWrite(g,0);

}

void quatro(){

 digitalWrite(a,1);

 digitalWrite(b,0);

 digitalWrite(c,0);

 digitalWrite(d,1);

 digitalWrite(e,1);

 digitalWrite(f,0);

 digitalWrite(g,0);

}

void cinco(){

 digitalWrite(a,0);

 digitalWrite(b,1);

 digitalWrite(c,0);

 digitalWrite(d,0);

 digitalWrite(e,1);

 digitalWrite(f,0);

 digitalWrite(g,0);

}

void seis(){

 digitalWrite(a,1);

 digitalWrite(b,1);

 digitalWrite(c,0);

 digitalWrite(d,0);

 digitalWrite(e,0);

 digitalWrite(f,0);

 digitalWrite(g,0);

}

void sete(){

 digitalWrite(a,0);

 digitalWrite(b,0);

 digitalWrite(c,0);

 digitalWrite(d,1);

 digitalWrite(e,1);

 digitalWrite(f,1);

 digitalWrite(g,1);

}

void oito(){

 digitalWrite(a,0);

 digitalWrite(b,0);

 digitalWrite(c,0);

 digitalWrite(d,0);

 digitalWrite(e,0);

 digitalWrite(f,0);

 digitalWrite(g,0);

}

void nove(){

 digitalWrite(a,0);

 digitalWrite(b,0);

 digitalWrite(c,0);

 digitalWrite(d,1);

 digitalWrite(e,1);

 digitalWrite(f,0);

 digitalWrite(g,0);

}


sergioantonio234: Cara, valeu mesmo, está até comentadinho
alvespessan: Magina men <3
Perguntas interessantes