·

Cursos Gerais ·

Laboratório de Sistemas Digitais

Send your question to AI and receive an answer instantly

Ask Question

Preview text

LABORATÓRIO Horímetro de Máquina 14 Saídas Digitais 2 Entradas Digitais 1 Chave Liga e Desliga Contagem de Minutos 1 Botão Reset da Contagem Quando passar de 99 minutos devem ficar piscando o display e mostrar o valor E1 erro 1 Entrega próxima aula IDENTIFICACAO DE SOFTWARE Curso de Engenharia de Computação UNISC NOME VERSAO 10 AUTOR const int A 0 const int B 1 const int C 2 const int D 3 const int E 4 const int F 5 const int G 6 byte cont 0 const byte tabelaSeteSeg107 A B C D E F G 1111110 0 0110000 1 1101101 2 1111001 3 0110011 4 1011011 5 1011111 6 1110000 7 1111111 8 1111011 9 void converteValorDisplaybyte valor byte pino 0 forbyte x 0 x 7 x digitalWritepinotabelaSeteSegvalorx pino void setup pinModeA OUTPUT pinModeB OUTPUT pinModeC OUTPUT pinModeD OUTPUT pinModeE OUTPUT pinModeF OUTPUT pinModeG OUTPUT Copy of Copy of Trabalho220922Temp Horas do simulador 000001226 Interruptor deslizante Nome 2 500 V 500 V 500 V UNO ARDUINO DIGITAL PWM IP Salavando Código Parar sim Projeto de Hardware Sistemas Digitais Leonel Tedesco Marco Hennes leoneltedescouniscbr hennesuniscbr Microcontroladores RAM ROM IO Port Timer Serial COM Port Microcontrolador CPU Chip único CPU P de propósito geral RAM ROM IO Port Timer Serial COM Port Data Bus Address Bus Sistema Microprocessador de propósito geral Diversos chips na motherboard Um computador em um único chip Microprocessadores Projetos Handdrawn circuit diagram with components labeled as SS3X LM1576 AMS1117 LDR PIC8 MAX3232 L293D and others including connections and annotations for voltage and components Projetos Microcontrolador PIC Image of a PCB board with various traces and component pads Arduino Referências na WEB O site oficial do Arduino é httparduinocc Um documentário sobre o Arduino pode ser assistido em httparduinothedocumentaryorg Images of two Arduino boards front and back views Arduino Pinos AREF e GND o pino AREF é a entrada de tensão de referência para o conversor AD do Arduino o pino GND é o terra comum a todos os outros pinos Pinos 3 5 e 6 e 9 a11 PWM 6 pinos dos 14 pinos digitais podem ser usados para gerar sinais analógicos com a função analogWrite utilizando a técnica de Modulação por Largura de Pulso PWM Pinos 0 e 1 os dois primeiros pinos digitais são conectados a USART do microcontrolador do Arduino para comunicação serial com um computador Pinos 2 e 3 pinos que chamam uma ISR Interrupt Service Routine para tratar uma interrupção com a função attachInterrupt nesses pinos Arduino IOREF PC6 RESET 3V3 5V GND GND VIN ADC0 PC0 A0 D14 ADC1 PC1 A1 D15 ADC2 PC2 A2 D16 ADC3 PC3 A3 D17 ADC4 PC4 A4 D18 ADC5 PC5 A5 D19 D19SCL PC5 SCL D18SDA PC4 SDA AREF GND D13 PB5 SCK D12 PB4 MISO D11 PB3 MOSI D10 PB2 SS D9 PB1 D8 PB0 D7 PD7 D6 PD6 D5 PD5 D4 PD4 D3 PD3 D2 PD2 D1TX PD1 D0RX PD0 LEDBUILTIN PB5 TX LED PD5 RX LED PD4 Power setup void setup pinMode13 OUTPUT void loop digitalWrite13 HIGH delay1000 digitalWrite13 LOW delay1000 Display de 7 segmentos Ânodo comum LED OFF5V33V ON GND Cátodo comum LED ON 5V33V TinkerCAD Display de 7 const byte tabelaSeteSeg107 A B C D E F G 1111110 0 0110000 1 1101101 2 1111001 3 0110011 4 1011011 5 1011111 6 1110000 7 1111111 8 1111011 9 Visor de sete segmentos Nome 1 Comum Catódica TinkerCAD Contagem de 1 Programa simples porém de TinkerCAD Contagem de 0 Programa simples porém mais iniciante Como ficaria uma contagem de 00 a TinkerCAD Contagem de 0 TinkerCAD Contagem de 0 const int A 0 const int B 1 const int C 2 const int D 3 const int E 4 const int F 5 const int G 6 byte cont 0 const byte tabelaSeteSeg107 A B C D E F G 1111110 0 0110000 1 1101101 2 1111001 3 0110011 4 1011011 5 1011111 6 1110000 7 1111111 8 1111011 9 void converteValorDisplaybyte valor byte pino 0 forbyte x 0 x 7 x digitalWritepinotabelaSeteSegvalorx pino void setup pinModeA OUTPUT pinModeB OUTPUT pinModeC OUTPUT pinModeD OUTPUT pinModeE OUTPUT pinModeF OUTPUT pinModeG OUTPUT void loop converteValorDisplaycont ifcont9 cont delay1000 LABORATÓRIO Horímetro de Máquina 14 Saídas Digitais 2 Entradas Digitais 1 Chave Liga e Desliga Contagem de Minutos 1 Botão Reset da Contagem Quando passar de 99 minutos devem ficar piscando o display e mostrar o valor E1 erro 1 Entrega próxima aula O arduíno UNO possui 14 pinos digitais podendo estes serem utilizados como entrada ou saída neste caso serão todos utilizados como saída Para ajudar no entendimento do circuito foi utilizado um padrão de cores e os pinos ficaram no seguinte formato Digito Pino do Arduino Pino do display 7seg Cor do fio Unidade Digital 0 G Rosa Digital 1 F Roxo Digital 2 E Azul Digital 3 D Turquesa Digital 4 C Verde Digital 5 B Amarelo Digital 6 A Laranja Dezena Digital 7 G Rosa Digital 8 F Roxo Digital 9 E Azul Digital 10 D Turquesa Digital 11 C Verde Digital 12 B Amarelo Digital 13 A Laranja Para ligar ou desligar a contagem é utilizado uma chave e para resetar a contagem é utilizado um botão A ligação de ambos possui o seguinte formato Quando o botão não é pressionado o GND está ligado diretamente ao pino do Arduino pois não existe corrente circulando no resistor Quando o botão é pressionado a tensão VCC chega ao pino do Arduino e circula uma corrente pelo resistor Desta forma quando não pressionado o botão no Arduino chega nível lógico 0 quando pressionado o botão no Arduino chega nível lógico 1 A chave liga e desliga contagem é ligada no pino analógico 0 A0 por um fio marrom O botão de reset é ligado ao pino analógico 1 A1 por um fio cinza As entradas analógicas podem ser utilizadas como entradas digitais também apesar de serem analógicas Para os fios de GND se utilizou cor preta e para VCC cor vermelha O circuito completo então fica sendo Para o código primeiramente se define o nome dos pinos para entrada e saída const int Gu0pino G das unidades em D0 const int Fu1pino F das unidades em D1 const int Eu2pino E das unidades em D2 const int Du3pino D das unidades em D3 const int Cu4pino C das unidades em D4 const int Bu5pino B das unidades em D5 const int Au6pino A das unidades em D6 const int Gd7pino G das dezenas em D7 const int Fd8pino F das dezenas em D8 const int Ed9pino E das dezenas em D9 const int Dd10pino D das dezenas em D10 const int Cd11pino C das dezenas em D11 const int Bd12pino B das dezenas em D12 const int Ad13pino A das dezenas em D13 Chave liga e desliga contagem em A0 define pinLigaDesliga A0 Botão de reset em A1 define pinReset A1 Após a definição do nome dos pinos se constrói a matriz com os leds que devem estar acesos e apagados para formar os números no display const byte tabelaSeteSeg167 A B C D E F G 11111100 01100001 11011012 11110013 01100114 10110115 10111116 11100007 11111118 11110119 1110111A 0011111B 1001110C 0111101D 1001111E 0000000Apagado A linha zero da tabela representa o valor 0 a linha um representa o valor 1 e assim sucessivamente É importante notar que a linha 10 representa a letra A a linha 11 representa a letra B a linha 12 representa a letra C a linha 13 representa a letra D a linha 14 representa a letra E e a linha 15 representa todos os leds apagados Por isso o próximo passo é definir essas entradas const int A10Linha 10 de tabelaSeteSeg representa A const int B11Linha 11 de tabelaSeteSeg representa B const int C12Linha 12 de tabelaSeteSeg representa C const int D13Linha 13 de tabelaSeteSeg representa D const int E14Linha 14 de tabelaSeteSeg representa E const int Apagado15Linha 15 de tabelaSeteSeg apaga tudo Serão utilizadas 3 variáveis para armazenar o contador uma responsável por armazenar o contador completo que será incrementado a cada ciclo Uma para armazenar o dígito das dezenas e outra para o dígito das unidades Todas essas variáveis são do tipo byte pois são inteiros com valor máximo menor que 255 byte cont0 contador byte dcont0dezena do contador byte ucont0unidade do contador Serão utilizadas 2 variáveis para controlar o contador uma para ligar ou desligar a contagem e uma para resetar a contagem Essas variáveis só possuem dois estados ligado ou desligado por isso são do tipo bool ou 0 ou 1 bool ligaDesliga0liga ou desliga contagem bool reset0reseta contagem A função que recebe um valor e o escreve no display segue a seguinte lógica Caso o número seja 4 e deva ser escrito nas unidades os pinos do Arduino responsáveis pelas unidades são D0 D1 D2 D3 D4 D5 e D6 onde esses pinos estão ligados no display e os leds do display aparecem na tabela tabelaSeteSeg com o seguinte padrão D0led Gcoluna 6 D1led Fcoluna5 D2led Ecoluna 4 D3led Dcoluna 3 D4led Ccoluna 2 D5led Bcoluna1 D6led Acoluna 0 const byte tabelaSeteSeg167 A B C D E F G 11111100 01100001 11011012 11110013 0 1 1 0 0 1 14 D6D5D4D3D2D1D0 10110115 10111116 11100007 11111118 11110119 1110111A 0011111B 1001110C 0111101D 1001111E 0000000Apagado Deve ser escrito então no pino digital 6 o valor zero no pino digital 5 o valor 1 no pino digital 4 o valor 1 e assim sucessivamente Desta forma a função deve percorrer a linha 4 responsável pelo valor 4 e escrever da sexta coluna até a coluna zero nos pinos D0 D1 D2 D3 D4 D5 e D6 Caso o dígito fosse das dezenas a única mudança é que seria escrito em D7 D8 D9 D10 D11 D12 e D13 Ou seja os mesmos pinos somados em 7 void converteValorDisplaybyte valor byte digito byte pino 7digitopino inicial é 0 pra unidade e 7 pra dezena forbyte x0 x7 xx percorre a linha de tabelaSeteSeg digitalWritepino tabelaSeteSegvalor6xEscreve o valor pino a pino pinoPassa para o próximo pino O pino inicial é D0 se o digito for das unidades digito0 ou D7 se o digito for das dezenas digito1 A variável x percorre de 0 a 6 mas na tabela é percorrido como 6x sendo assim percorre de 6 a 0 as colunas da tabela e escreve o valor em cada pino do Arduino A matriz para o valor 4 e a sequencia que será escrito segundo a função será 0 1 1 0 0 1 14 D6D5D4D3D2D1D0 digitalWrite0 tabelaSeteSeg460 D0tabelaSeteSeg 4 6 1 digitalWrite1 tabelaSeteSeg461 D1tabelaSeteSeg 4 51 digitalWrite2 tabelaSeteSeg462 D2tabelaSeteSeg 4 4 0 digitalWrite3 tabelaSeteSeg463 D3tabelaSeteSeg 4 30 digitalWrite4 tabelaSeteSeg464 D4tabelaSeteSeg4 2 1 digitalWrite5 tabelaSeteSeg465 D5tabelaSeteSeg 4 11 digitalWrite6 tabelaSeteSeg466 D6tabelaSeteSeg 4 0 0 Caso fosse no pino das dezenas a lógica seria digitalWrite7 tabelaSeteSeg460 D7tabelaSeteSeg 4 6 1 digitalWrite8 tabelaSeteSeg461 D8tabelaSeteSeg 4 51 digitalWrite9 tabelaSeteSeg462 D9tabelaSeteSeg 4 4 0 digitalWrite10 tabelaSeteSeg463 D10tabelaSeteSeg 4 30 digitalWrite11 tabelaSeteSeg464 D11tabelaSeteSeg 4 21 digitalWrite12 tabelaSeteSeg465 D12tabelaSeteSeg 4 1 1 digitalWrite13 tabelaSeteSeg466 D13tabelaSeteSeg 4 00 Com as variáveis e funções escritas podese definir as entradas e saídas do Arduino void setup pinModeAu OUTPUT pinModeBu OUTPUT pinModeCu OUTPUTPinos referentes pinModeDu OUTPUT ao digito das pinModeEu OUTPUT unidades pinModeFu OUTPUT pinModeGu OUTPUT pinModeAd OUTPUT pinModeBd OUTPUT pinModeCd OUTPUTPinos referentes pinModeDd OUTPUT ao digito das pinModeEd OUTPUT dezenas pinModeFd OUTPUT pinModeGd OUTPUT pinModepinLigaDesliga INPUTLiga e desliga a contagem pinModepinReset INPUTReseta a contagem No loop inicialmente se coleta as entradas dos botões que indicam como a contagem deve se comportar void loop ligaDesligadigitalReadpinLigaDesligaLê a chave de LigaDesliga resetdigitalReadpinResetLê o botão de reset Caso o botão de reset seja pressionado ou seja esteja com nível lógico alto o contador deve voltar a zero ifresetCaso reset tenha sido pressionado cont0Zera o contador O contador pode ser dividido em dezenas e unidades para isso se utiliza da propriedade que a divisão por 10 retorna as dezenas e o resto por 10 retorna as unidades 53 10 50 5 3 dcontcont10Dezena do contador Ex 2310 2 com resto 3 ucontcont10Unidade do contador Ex 2310 2 com resto 3 O valor do contador então é escrito no display o dcont nas dezenas e o ucont nas unidades converteValorDisplaydcont1escreve o valor no digito das dezenas converteValorDisplayucont0escreve o valor no digito das unidades Caso o contador ainda não tenha chegado a 100 e o contador esteja ligado ele deve ser incrementado ifcont100 ligaDesligaCaso o contador seja menor que 100 e a contagem esteja ligada cont incrementa o contador Caso contrário se o contador for maior ou igual a 100 deve aparecer o alerta Foi pedido para o alerta acender e apagar o display então inicialmente se apaga o display espera e aí sim escreve o erro E1 else ifcont100 Se o contador for maior que 100 converteValorDisplayApagado1Apaga ambos os digitos converteValorDisplayApagado0 delay1000 Aguarda converteValorDisplayE1 Escreve E nas dezenas converteValorDisplay10 Escreve 1 nas unidades No final se aguarda o tempo de contagem delay1000 Aguarda Código completo const int Gu0pino G das unidades em D0 const int Fu1pino F das unidades em D1 const int Eu2pino E das unidades em D2 const int Du3pino D das unidades em D3 const int Cu4pino C das unidades em D4 const int Bu5pino B das unidades em D5 const int Au6pino A das unidades em D6 const int Gd7pino G das dezenas em D7 const int Fd8pino F das dezenas em D8 const int Ed9pino E das dezenas em D9 const int Dd10pino D das dezenas em D10 const int Cd11pino C das dezenas em D11 const int Bd12pino B das dezenas em D12 const int Ad13pino A das dezenas em D13 Chave liga e desliga contagem em A0 define pinLigaDesliga A0 Botão de reset em A1 define pinReset A1 const byte tabelaSeteSeg167 A B C D E F G 11111100 01100001 11011012 11110013 01100114 10110115 10111116 11100007 11111118 11110119 1110111A 0011111B 1001110C 0111101D 1001111E 0000000Apagado const int A10Linha 10 de tabelaSeteSeg representa A const int B11Linha 11 de tabelaSeteSeg representa B const int C12Linha 12 de tabelaSeteSeg representa C const int D13Linha 13 de tabelaSeteSeg representa D const int E14Linha 14 de tabelaSeteSeg representa E const int Apagado15Linha 15 de tabelaSeteSeg apaga tudo byte cont0 contador byte dcont0dezena do contador byte ucont0unidade do contador bool ligaDesliga0liga ou desliga contagem bool reset0reseta contagem void converteValorDisplaybyte valor byte digito byte pino 7digitopino inicial é 0 pra unidade e 7 pra dezena forbyte x0 x7 xx percorre a linha de tabelaSeteSeg digitalWritepino tabelaSeteSegvalor6xEscreve o valor pino a pino pinoPassa para o próximo pino void setup pinModeAu OUTPUT pinModeBu OUTPUT pinModeCu OUTPUTPinos referentes pinModeDu OUTPUT ao digito das pinModeEu OUTPUT unidades pinModeFu OUTPUT pinModeGu OUTPUT pinModeAd OUTPUT pinModeBd OUTPUT pinModeCd OUTPUTPinos referentes pinModeDd OUTPUT ao digito das pinModeEd OUTPUT dezenas pinModeFd OUTPUT pinModeGd OUTPUT pinModepinLigaDesliga INPUTLiga e desliga a contagem pinModepinReset INPUTReseta a contagem void loop ligaDesligadigitalReadpinLigaDesligaLê a chave de LigaDesliga resetdigitalReadpinResetLê o botão de reset ifresetCaso reset tenha sido pressionado cont0Zera o contadot dcontcont10Dezena do contador Ex 2310 2 com resto 3 ucontcont10Unidade do contador Ex 2310 2 com resto 3 converteValorDisplaydcont1escreve o valor no digito das dezenas converteValorDisplayucont0escreve o valor no digito das unidades ifcont100 ligaDesligaCaso o contador seja menor que 100 e a contagem esteja ligada cont incrementa o contador else ifcont100 Se o contador for maior que 100 converteValorDisplayApagado1Apaga ambos os digitos converteValorDisplayApagado0 delay1000 Aguarda converteValorDisplayE1 Escreve E nas dezenas converteValorDisplay10 Escreve 1 nas unidades delay1000 Aguarda O arduíno UNO possui 14 pinos digitais podendo estes serem utilizados como entrada ou saída neste caso serão todos utilizados como saída Para ajudar no entendimento do circuito foi utilizado um padrão de cores e os pinos ficaram no seguinte formato Digito Pino do Arduino Pino do display 7seg Cor do fio Unidade Digital 0 G Rosa Digital 1 F Roxo Digital 2 E Azul Digital 3 D Turquesa Digital 4 C Verde Digital 5 B Amarelo Digital 6 A Laranja Dezena Digital 7 G Rosa Digital 8 F Roxo Digital 9 E Azul Digital 10 D Turquesa Digital 11 C Verde Digital 12 B Amarelo Digital 13 A Laranja Para ligar ou desligar a contagem é utilizado uma chave e para resetar a contagem é utilizado um botão A ligação de ambos possui o seguinte formato Quando o botão não é pressionado o GND está ligado diretamente ao pino do Arduino pois não existe corrente circulando no resistor Quando o botão é pressionado a tensão VCC chega ao pino do Arduino e circula uma corrente pelo resistor Desta forma quando não pressionado o botão no Arduino chega nível lógico 0 quando pressionado o botão no Arduino chega nível lógico 1 A chave liga e desliga contagem é ligada no pino analógico 0 A0 por um fio marrom O botão de reset é ligado ao pino analógico 1 A1 por um fio cinza As entradas analógicas podem ser utilizadas como entradas digitais também apesar de serem analógicas Para os fios de GND se utilizou cor preta e para VCC cor vermelha O circuito completo então fica sendo Para o código primeiramente se define o nome dos pinos para entrada e saída const int Gu0pino G das unidades em D0 const int Fu1pino F das unidades em D1 const int Eu2pino E das unidades em D2 const int Du3pino D das unidades em D3 const int Cu4pino C das unidades em D4 const int Bu5pino B das unidades em D5 const int Au6pino A das unidades em D6 const int Gd7pino G das dezenas em D7 const int Fd8pino F das dezenas em D8 const int Ed9pino E das dezenas em D9 const int Dd10pino D das dezenas em D10 const int Cd11pino C das dezenas em D11 const int Bd12pino B das dezenas em D12 const int Ad13pino A das dezenas em D13 Chave liga e desliga contagem em A0 define pinLigaDesliga A0 Botão de reset em A1 define pinReset A1 Após a definição do nome dos pinos se constrói a matriz com os leds que devem estar acesos e apagados para formar os números no display const byte tabelaSeteSeg167 A B C D E F G 11111100 01100001 11011012 11110013 01100114 10110115 10111116 11100007 11111118 11110119 1110111A 0011111B 1001110C 0111101D 1001111E 0000000Apagado A linha zero da tabela representa o valor 0 a linha um representa o valor 1 e assim sucessivamente É importante notar que a linha 10 representa a letra A a linha 11 representa a letra B a linha 12 representa a letra C a linha 13 representa a letra D a linha 14 representa a letra E e a linha 15 representa todos os leds apagados Por isso o próximo passo é definir essas entradas const int A10Linha 10 de tabelaSeteSeg representa A const int B11Linha 11 de tabelaSeteSeg representa B const int C12Linha 12 de tabelaSeteSeg representa C const int D13Linha 13 de tabelaSeteSeg representa D const int E14Linha 14 de tabelaSeteSeg representa E const int Apagado15Linha 15 de tabelaSeteSeg apaga tudo Serão utilizadas 3 variáveis para armazenar o contador uma responsável por armazenar o contador completo que será incrementado a cada ciclo Uma para armazenar o dígito das dezenas e outra para o dígito das unidades Todas essas variáveis são do tipo byte pois são inteiros com valor máximo menor que 255 byte cont0 contador byte dcont0dezena do contador byte ucont0unidade do contador Serão utilizadas 2 variáveis para controlar o contador uma para ligar ou desligar a contagem e uma para resetar a contagem Essas variáveis só possuem dois estados ligado ou desligado por isso são do tipo bool ou 0 ou 1 bool ligaDesliga0liga ou desliga contagem bool reset0reseta contagem A função que recebe um valor e o escreve no display segue a seguinte lógica Caso o número seja 4 e deva ser escrito nas unidades os pinos do Arduino responsáveis pelas unidades são D0 D1 D2 D3 D4 D5 e D6 onde esses pinos estão ligados no display e os leds do display aparecem na tabela tabelaSeteSeg com o seguinte padrão 𝐷0 𝑙𝑒𝑑 𝐺 𝑐𝑜𝑙𝑢𝑛𝑎 6 𝐷1 𝑙𝑒𝑑 𝐹 𝑐𝑜𝑙𝑢𝑛𝑎 5 𝐷2 𝑙𝑒𝑑 𝐸 𝑐𝑜𝑙𝑢𝑛𝑎 4 𝐷3 𝑙𝑒𝑑 𝐷 𝑐𝑜𝑙𝑢𝑛𝑎 3 𝐷4 𝑙𝑒𝑑 𝐶 𝑐𝑜𝑙𝑢𝑛𝑎 2 𝐷5 𝑙𝑒𝑑 𝐵 𝑐𝑜𝑙𝑢𝑛𝑎 1 𝐷6 𝑙𝑒𝑑 𝐴 𝑐𝑜𝑙𝑢𝑛𝑎 0 const byte tabelaSeteSeg167 A B C D E F G 11111100 01100001 11011012 11110013 0 1 1 0 0 1 14 D6D5D4D3D2D1D0 10110115 10111116 11100007 11111118 11110119 1110111A 0011111B 1001110C 0111101D 1001111E 0000000Apagado Deve ser escrito então no pino digital 6 o valor zero no pino digital 5 o valor 1 no pino digital 4 o valor 1 e assim sucessivamente Desta forma a função deve percorrer a linha 4 responsável pelo valor 4 e escrever da sexta coluna até a coluna zero nos pinos D0 D1 D2 D3 D4 D5 e D6 Caso o dígito fosse das dezenas a única mudança é que seria escrito em D7 D8 D9 D10 D11 D12 e D13 Ou seja os mesmos pinos somados em 7 void converteValorDisplaybyte valor byte digito byte pino 7digitopino inicial é 0 pra unidade e 7 pra dezena forbyte x0 x7 xx percorre a linha de tabelaSeteSeg digitalWritepino tabelaSeteSegvalor6xEscreve o valor pino a pino pinoPassa para o próximo pino O pino inicial é D0 se o digito for das unidades digito0 ou D7 se o digito for das dezenas digito1 A variável x percorre de 0 a 6 mas na tabela é percorrido como 6 𝑥 sendo assim percorre de 6 a 0 as colunas da tabela e escreve o valor em cada pino do Arduino A matriz para o valor 4 e a sequencia que será escrito segundo a função será 0 1 1 0 0 1 14 D6D5D4D3D2D1D0 digitalWrite0 tabelaSeteSeg460 𝐷0 tabelaSeteSeg46 1 digitalWrite1 tabelaSeteSeg461 𝐷1 tabelaSeteSeg45 1 digitalWrite2 tabelaSeteSeg462 𝐷2 tabelaSeteSeg44 0 digitalWrite3 tabelaSeteSeg463 𝐷3 tabelaSeteSeg43 0 digitalWrite4 tabelaSeteSeg464 𝐷4 tabelaSeteSeg42 1 digitalWrite5 tabelaSeteSeg465 𝐷5 tabelaSeteSeg41 1 digitalWrite6 tabelaSeteSeg466 𝐷6 tabelaSeteSeg40 0 Caso fosse no pino das dezenas a lógica seria digitalWrite7 tabelaSeteSeg460 𝐷7 tabelaSeteSeg46 1 digitalWrite8 tabelaSeteSeg461 𝐷8 tabelaSeteSeg45 1 digitalWrite9 tabelaSeteSeg462 𝐷9 tabelaSeteSeg44 0 digitalWrite10 tabelaSeteSeg463 𝐷10 tabelaSeteSeg43 0 digitalWrite11 tabelaSeteSeg464 𝐷11 tabelaSeteSeg42 1 digitalWrite12 tabelaSeteSeg465 𝐷12 tabelaSeteSeg41 1 digitalWrite13 tabelaSeteSeg466 𝐷13 tabelaSeteSeg40 0 Com as variáveis e funções escritas podese definir as entradas e saídas do Arduino void setup pinModeAu OUTPUT pinModeBu OUTPUT pinModeCu OUTPUTPinos referentes pinModeDu OUTPUT ao digito das pinModeEu OUTPUT unidades pinModeFu OUTPUT pinModeGu OUTPUT pinModeAd OUTPUT pinModeBd OUTPUT pinModeCd OUTPUTPinos referentes pinModeDd OUTPUT ao digito das pinModeEd OUTPUT dezenas pinModeFd OUTPUT pinModeGd OUTPUT pinModepinLigaDesliga INPUTLiga e desliga a contagem pinModepinReset INPUTReseta a contagem No loop inicialmente se coleta as entradas dos botões que indicam como a contagem deve se comportar void loop ligaDesligadigitalReadpinLigaDesligaLê a chave de LigaDesliga resetdigitalReadpinResetLê o botão de reset Caso o botão de reset seja pressionado ou seja esteja com nível lógico alto o contador deve voltar a zero ifresetCaso reset tenha sido pressionado cont0Zera o contador O contador pode ser dividido em dezenas e unidades para isso se utiliza da propriedade que a divisão por 10 retorna as dezenas e o resto por 10 retorna as unidades 53 10 50 5 3 dcontcont10Dezena do contador Ex 2310 2 com resto 3 ucontcont10Unidade do contador Ex 2310 2 com resto 3 O valor do contador então é escrito no display o dcont nas dezenas e o ucont nas unidades converteValorDisplaydcont1escreve o valor no digito das dezenas converteValorDisplayucont0escreve o valor no digito das unidades Caso o contador ainda não tenha chegado a 100 e o contador esteja ligado ele deve ser incrementado ifcont100 ligaDesligaCaso o contador seja menor que 100 e a contagem esteja ligada cont incrementa o contador Caso contrário se o contador for maior ou igual a 100 deve aparecer o alerta Foi pedido para o alerta acender e apagar o display então inicialmente se apaga o display espera e aí sim escreve o erro E1 else ifcont100 Se o contador for maior que 100 converteValorDisplayApagado1Apaga ambos os digitos converteValorDisplayApagado0 delay1000 Aguarda converteValorDisplayE1 Escreve E nas dezenas converteValorDisplay10 Escreve 1 nas unidades No final se aguarda o tempo de contagem delay1000 Aguarda Código completo const int Gu0pino G das unidades em D0 const int Fu1pino F das unidades em D1 const int Eu2pino E das unidades em D2 const int Du3pino D das unidades em D3 const int Cu4pino C das unidades em D4 const int Bu5pino B das unidades em D5 const int Au6pino A das unidades em D6 const int Gd7pino G das dezenas em D7 const int Fd8pino F das dezenas em D8 const int Ed9pino E das dezenas em D9 const int Dd10pino D das dezenas em D10 const int Cd11pino C das dezenas em D11 const int Bd12pino B das dezenas em D12 const int Ad13pino A das dezenas em D13 Chave liga e desliga contagem em A0 define pinLigaDesliga A0 Botão de reset em A1 define pinReset A1 const byte tabelaSeteSeg167 A B C D E F G 11111100 01100001 11011012 11110013 01100114 10110115 10111116 11100007 11111118 11110119 1110111A 0011111B 1001110C 0111101D 1001111E 0000000Apagado const int A10Linha 10 de tabelaSeteSeg representa A const int B11Linha 11 de tabelaSeteSeg representa B const int C12Linha 12 de tabelaSeteSeg representa C const int D13Linha 13 de tabelaSeteSeg representa D const int E14Linha 14 de tabelaSeteSeg representa E const int Apagado15Linha 15 de tabelaSeteSeg apaga tudo byte cont0 contador byte dcont0dezena do contador byte ucont0unidade do contador bool ligaDesliga0liga ou desliga contagem bool reset0reseta contagem void converteValorDisplaybyte valor byte digito byte pino 7digitopino inicial é 0 pra unidade e 7 pra dezena forbyte x0 x7 xx percorre a linha de tabelaSeteSeg digitalWritepino tabelaSeteSegvalor6xEscreve o valor pino a pino pinoPassa para o próximo pino void setup pinModeAu OUTPUT pinModeBu OUTPUT pinModeCu OUTPUTPinos referentes pinModeDu OUTPUT ao digito das pinModeEu OUTPUT unidades pinModeFu OUTPUT pinModeGu OUTPUT pinModeAd OUTPUT pinModeBd OUTPUT pinModeCd OUTPUTPinos referentes pinModeDd OUTPUT ao digito das pinModeEd OUTPUT dezenas pinModeFd OUTPUT pinModeGd OUTPUT pinModepinLigaDesliga INPUTLiga e desliga a contagem pinModepinReset INPUTReseta a contagem void loop ligaDesligadigitalReadpinLigaDesligaLê a chave de LigaDesliga resetdigitalReadpinResetLê o botão de reset ifresetCaso reset tenha sido pressionado cont0Zera o contadot dcontcont10Dezena do contador Ex 2310 2 com resto 3 ucontcont10Unidade do contador Ex 2310 2 com resto 3 converteValorDisplaydcont1escreve o valor no digito das dezenas converteValorDisplayucont0escreve o valor no digito das unidades ifcont100 ligaDesligaCaso o contador seja menor que 100 e a contagem esteja ligada cont incrementa o contador else ifcont100 Se o contador for maior que 100 converteValorDisplayApagado1Apaga ambos os digitos converteValorDisplayApagado0 delay1000 Aguarda converteValorDisplayE1 Escreve E nas dezenas converteValorDisplay10 Escreve 1 nas unidades delay1000 Aguarda