// Expotec 2015 - IFPB // Programa 7 // Prof. Ilton L Barbacena - iltonlb@gmail.com /********************************************************************************************* Este programa pressupoen que os os segmentos do display de 7 segmentos, catodo comum, tenham um resistor em serie, 470 ohms, e que estejam conectados ao arduino da seguinte forma: segmento A pino 13 segmento B pino 12 segmento C pino 11 segmento D pino 10 segmento E pino 9 segmento F pino 8 segmento G pino 7 segmento DP pino 6 Alem disso os dois pinos do catodo esteja conectado ao terra do arduino Veja tambem, as ligacoes nos pinos 2 e 3 do arduino, conforme esquema: http://iltonluiz.vhost.ifpb.edu.br/expotec/esquema_montagem2.pdf Se pressionar o botao B1, vai zero ao pino 2 do arduino Se n pressionar B1, vai 1 ao pino 2 do arduino idem, B2 com pino 3 Se pressionar o botao B0, vai zero ao pino de reset, levando ao RESET *************************************************************************************************/ const int a=13; // define variavel a, tipo inteira, e iniciada com o valor 13 const int b=12; const int c=11; const int d=10; const int e=9; const int f=8; const int g=7; const int dp=6; int b1 = 2, b2 = 3; int cresce = 0, decresce = 0; int time = 200; int pos = 0; int i=0; // usado para varrer o indice do vetor digitos[] int j=1; /* Segmentos do display => posicao para formacao do byte a ---- f | | b byte = abcd efgdp | g | ---- | | c ==> 11111100 --> byte que forma o digito zero e | | ---- o dp d */ byte digitos[] = {B11111100, B01100000, B11011010, B11110010, B01100110, B10110110, B10111110, B11100000, B11111110, B11110110}; // cada byte deste vetor, corresponde a um digito no display de 7 segmentos // d7d6d5d4d3d2d1d0 => d7=segmento A, d6=segento B, ...., d0=segmento DP void setup() { for (int f=0; f<8; f++) pinMode(f + 6, OUTPUT); // pinos: 6, 7, 8. .... 13 => definido como saida pinMode(b1, INPUT); // pino 2 como entrada pinMode(b2,INPUT); // pino 3 como entrada } void loop() { escreve(digitos[i]); delay(200); // espera 200ms i = i + j; if (i > 9) // acabou os bytes do vetor digitos[] ? i = 0; // entao recomece } void escreve (byte g) // grava os 8 bits do byte g, bit a bit, nos pinos do arduino { for (int t = 0; t < 8;t++) { digitalWrite(t+6, bitRead(g,t)); } }