/***************************** Expotec 2015 - IFPB Programa 9 CAMILA TOSTA METZKER Maio - 2015 *******************************/ /* 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: https://dl.dropboxusercontent.com/u/7940146/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 -------------------------------------------- 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 */ const int pinnos[] = {13, 12, 11, 10, 9, 8, 7 ,6}; // pinos do arduino ligado aos segmentos // 13=a, 12=b, 11=c, 10=d, 9=e, 8=f, 7=g, 6=dp byte digitos[] = {B00000000, B10000000, B11000000, B11100000, B11110000, B11111000, B11111100}; int b1 = 2, b2 = 3; int time = 300; int i=0; // usado para varrer o indice do vetor digitos[] int j=1; // j = 1 => crescente j=-1 => decrescente void setup() { for (int f=0; f<8; f++) pinMode(pinnos[f], OUTPUT); // pinos: 13, 12, 11, . .... 6 => definido como saida pinMode(b1, INPUT); // pino 2 como entrada => B1 pinMode(b2,INPUT); // pino 3 como entrada => B2 } void loop() { if (digitalRead(b1) == 0) // pega o byte da esquerda j = -1; if (digitalRead(b2) == 0) // pega o byte da direita j = 1; escreve(digitos[i]); delay(time); // espera 200ms i = i + j; if (i > 6) // nao anda mais para a direita i = 0; // recomece do outro lado if (i < 0) // nao anda mais para a esquerda i = 6; // recomece do outro lado } 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(pinnos[7-t], bitRead(g,t)); }