25
Sistemas Digitais
UNIFEV
1
Sistemas Digitais
UNIFEV
75
Sistemas Digitais
UNIFEV
2
Sistemas Digitais
USJT
1
Sistemas Digitais
UFSC
9
Sistemas Digitais
UFGD
212
Sistemas Digitais
UNIFEV
30
Sistemas Digitais
UNIFEV
1
Sistemas Digitais
UNIFEV
3
Sistemas Digitais
UCL
Texto de pré-visualização
NORMAS PARA ELABORAÇÃO E ENTREGA DO RELATÓRIO DE ATIVIDADE PRÁTICA Olá estudante Tudo bem As atividades práticas visam desenvolver competências para a atuação profissional Elas são importantes para que você vivencie situações que te prepararão para o mercado de trabalho Por isso trazemos informações para que você possa realizar as atividades propostas com êxito 1 Que atividade deverá ser feita As atividades a serem realizadas estão descritas no Roteiro de Atividade Prática disponível no AVA Após a leitura do Roteiro você deverá realizar as atividades práticas solicitadas e elaborar um documento ÚNICO contendo todas as resoluções de acordo com a proposta estabelecida O trabalho deve ser autêntico e contemplar todas as resoluções das atividades propostas Não serão aceitos trabalhos com reprodução de materiais extraídos da internet 2 Como farei a entrega dessa atividade Você deverá postar seu trabalho final no AVA na pasta específica relacionada à atividade prática obedecendo o prazo limite de postagem conforme disposto no AVA Todas as resoluções das atividades práticas devem ser entregues em um ARQUIVO ÚNICO de até 10 MB O trabalho deve ser enviado em formato Word ou PDF exceto nos casos em que há formato especificado no Roteiro O sistema permite anexar apenas um arquivo Caso haja mais de uma postagem será considerada a última versão IMPORTANTE A entrega da atividade de acordo com a proposta solicitada é um critério de aprovação na disciplina Não há prorrogação para a postagem da atividade Aproveite essa oportunidade para aprofundar ainda mais seus conhecimentos Bons estudos Roteiro Aula Prática SISTEMAS DIGITAIS E MICROPROCESSADORES ROTEIRO DE AULA PRÁTICA 1 NOME DA DISCIPLINA SISTEMAS DIGITAIS E MICROPROCESSADORES Unidade CIRCUITOS LÓGICOS COMBINACIONAL E SEQUENCIAL Seção CIRCUITOS COMBINACIONAIS OBJETIVOS Definição dos objetivos da aula prática Introduzir a utilização do simulador Logisim Utilizar entradas e saídas no simulador Logisim Utilizar o circuito codificador de prioridade Utilizar o circuito decodicador Simular o funcionamento de um circuito digital no Logisim INFRAESTRUTURA Instalações Materiais de consumo Equipamentos LABORATÓRIO DE INFORMÁTICA Equipamentos Desktop Lab Informatica Positivo C6300 1 computador para cada 2 alunos SOLUÇÃO DIGITAL LOGISIM Simulador LogiSim Software para simulação digital de circuitos lógicos EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI Não se aplica PROCEDIMENTOS PRÁTICOS ProcedimentoAtividade nº 1 Somente virtual Atividade proposta Implementar um circuito que registre a produção de uma fábrica através de 8 teclas a cada produção será pressionada a quantidade produzida 1 2 3 4 5 6 7 8 O circuito deve demonstrar na saída o número de itens produzidos na sequência decimal Procedimentos para a realização da atividade Caro estudante iniciaremos uma sequência de operações para a montagem e simulação de um circuito digital com codificador e decodificador de acordo com a atividade proposta É muito importante que você não pule nenhuma etapa demonstrada para que no final obtenhamos o resultado desejado 1º Passo Abra o software simulador Logisim Observe se a sua tela condiz com a tela mostrada na imagem abaixo 2º PassoComo a nossa atividade consiste em registrar a produção de uma fábrica através de 8 teclas vamos inserilas e colocar os respectivos rótulos em cada uma Para isso clique neste ícone localizado no ponto 1 mostrado na imagem abaixo Coloque 8 teclas alinhadas conforme a imagem Logo após coloque os rótulos para saber qual tecla corresponde a qual número clicando no ícone indicado como o ponto 2 na imagem Verifique se a sua montagem está igual à imagem abaixo 3º Passo Vamos inserir o Codificador de Prioridade Esse codificador mostra na sua saída a maior entrada selecionada Para inserilo siga a sequência numerada de cliques indicada na figura Depois ligue as outras 7 teclas no codificador conforme a figura 4º Passo Insira a entrada de Enable no codificador de prioridade Para isso siga a sequência numerada de cliques na imagem e verifique se a sua montagem está igual a da imagem 5º Passo Agora vamos inserir a saída Esta saída vai exibir o valor binário de 0 a 7 8 possibilidades dependendo de qual entrada estiver habilitada ele sempre exibirá a de valor mais alto Para inserir a saída siga a sequência numerada de cliques indicada na imagem 6º Passo Agora vamos simular o funcionamento do codificador de prioridade Para isso siga a sequência indicada de cliques Preencha a tabela abaixo com entradas e saídas do codificador de Prioridade Enable Tecla Acionada Saída 0 Tecla de 1 a 8 acionada 1 Nenhuma tecla acionada 1 1 000 1 2 1 3 1 4 1 5 1 6 1 7 Note que a primeira tecla é ligada na entrada 0 o codificador tem entradas de 0 a 7 então a saída exibe o valor 0 em binário 000 mesmo que a primeira tecla esteja acionada E 8ª tecla exibirá a saída 7 em binário na saída 111 7º Passo Iniciaremos agora a inserção do decodificador Para executar este passo siga a sequência de cliques onde você vai adicionar o decodificador no circuito clique 1 e 2 no clique 3 você vai definir quantos bits ele receberá na entrada o mesmos 3 bits de saída do Codificador de Prioridade Nos cliques de 4 a 7 são feitas as conexões do circuito 8º Passo Neste passo vamos inserir as saídas do decodificador Para inserilas siga a sequencia de cliques da imagem e repita para as saídas 1 a 7 9º Passo Neste passo vamos testar todas as possibilidades do circuito digital que já está pronto Clique em todas as teclas de entrada e perceba quais saídas acionam e complete a tabela Enable Tecla Acionada Saída do Decodificador 0 Tecla de 1 a 8 acionada 1 Nenhuma tecla acionada 1 1 1 2 1 3 1 4 1 5 1 6 1 7 10º Passo Faça um resumo explicando suscintamente a lógica de funcionamento do circuito escolha 3 combinações de chaves diferentes e explique o resultado obtido na saída Checklist Codificador de prioriade funcionando pelas entradas e saídas Decodificador funcionando pelas entradas do codificador e pelas saídas do decodificador Tabelas preenchidas através da simulação Prints do circuito montado com 3 combinações diferentes de chaves e sua respectiva explicação 10º Passo escrito RESULTADOS Resultados de Aprendizagem Utilizar o Logisim para executar o codificador de prioriade funcionando pelas entradas e saídas 11 ROTEIRO DE AULA PRÁTICA 2 NOME DA DISCIPLINA SISTEMAS DIGITAIS E MICROPROCESSADORES Unidade CIRCUITOS LÓGICOS COMBINACIONAL E SEQUENCIAL Seção FLIPFLOPS E CIRCUITOS CORRELATOS OBJETIVOS Definição dos objetivos da aula prática Projetar simular e montar circuitos lógicos INFRAESTRUTURA Instalações Materiais de consumo Equipamentos LABORATÓRIO DE INFORMÁTICA Equipamentos Desktop Engenharia Positivo Master D3400 1 para cada 2 alunos SOLUÇÃO DIGITAL LOGISIM Simulador LogiSim Software para simulação digital de circuitos lógicos EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI Não se aplica PROCEDIMENTOS PRÁTICOS ProcedimentoAtividade nº 1 Físico e Virtual Atividade proposta Aprendendo a usar a ferramenta Logisim Contador binário de 4 bits e contador de década BCD Procedimentos para a realização da atividade Exercício 1 O Logisim permite projetar e simular circuitos digitais Foi planejado como ferramenta educacional para ajudar você a aprender como os circuitos funcionam Para praticar o uso do Logisim vamos construir um circuito com uma porta NAND Figura 1a e verificar sua equivalência com a porta OR negativa Figura 1b Figura 1 Circuito lógico a porta NAND b porta OR negativa Após baixar e executar o Logisim o primeiro passo será acrescentar as portas lógicas no ambiente de simulação Para isso clique na pasta Portas Figura 2a assim a lista de portas disponíveis será mostrada Figura 2b Figura 2 Tela inicial do Logisim Clique na porta NAND a quinta da lista e em seguida clicar na área de edição onde você desejar que a primeira porta NAND deva ficar Certifiquese de deixar espaço sufi ciente para outras coisas do lado esquerdo Em seguida clicar na porta OR a quarta da lista e a coloque um pouco mais abaixo adicione duas portas inversoras em frente de cada uma das entradas da porta OR Figura 3 Figura 3 Posicionamento das portas Observar que haverá cinco pontos do lado esquerdo de cada porta Esses serão os pontos onde os fios poderão ser conectados Acontece que nós iremos usar apenas dois deles para o nosso circuito mas para outros circuitos você poderá achar mais útil ter mais de duas conexões em uma porta lógica Agora queremos adicionar as duas entradas A e B no diagrama Selecione uma entrada e coloque os pinos voltados para baixo utilizando o atributo posição da entrada Você também deverá colocar uma saída junto a cada uma das portas usando Figura 4 Figura 4 Posicionamento das entradas e saídas Depois de ter todos os componentes colocados na área de desenho tela você estará pronto para começar a adicionar as conexões Selecionar a ferramenta Editar Quando o cursor estiver sobre um ponto que receberá uma extremidade do fio um pequeno círculo verde será desenhado em torno dele Pressione o botão do mouse e arraste até onde você quiser que a outra extremidade do fio vá As conexões fios em Logisim deverão ser horizontais ou verticais Figura 5 Figura 5 Conexão entre as portas O passo final será testar o circuito para garantir que ele realmente realiza o que pretendemos O Logisim já está simulando o circuito Se olharmos atentamente para o nosso circuito da Figura 5 veremos que para as entradas A 0 e B 0 tanto a saída da porta NAND quanto a da porta OR negativa estão no nível lógico 1 Agora tentaremos outra combinação das entradas Selecione a ferramenta Testar Poke e altere as entradas clicando sobre elas Cada vez que fizer isso sobre a entrada seu valor será alternado Quando você mudar o valor de entrada o Logisim irá mostrarlhe que os valores seguirão pelos fios marcandoos com a cor verdeclaro para indicar um valor 1 ou verde escuro quase preto para indicar um valor 0 Com isso preencha a tabela verdade para as duas portas em questão Lembrando que uma maneira de verificar a equivalência entre dois circuitos lógicos é verificar se suas tabelas verdade são iguais Agora que o já sabemos como usar o Logisim vamos projetar e simular um circuito meio somador Projete e simule um circuito lógico para um meio somador binário com duas entradas A e B e duas saídas Uma para o bit da soma S e outra para o bit vai um C como indicado na Figura 6 Figura 6 Circuito meio somador de 2 bits Para iniciar o seu projeto preencha a tabela verdade para cada uma das saídas de acordo com as regras da aritmética binária para a soma Feito isso use as portas lógicas que você já conhece AND OR NOT NAND NOR XOR e XNOR e projete o circuito lógico do meio somador Dica o circuito do meio somador é bastante simples e pode ser executado apenas com duas portas lógicas Uma vez que o seu circuito foi projetado simule ele na ferramenta Logisim e verifique se ele executa exatamente as operações esperadas na tabela verdade do meio somador Exercício 2 Os contadores são circuitos lógicos projetados encadeando flipflops eles podem ser classificados como assíncronos ou síncronos de acordo com a forma que eles recebem os pulsos de o clock Nos contadores assíncronos o primeiro flipflop recebe um sinal de clock externo e cada flip flop subsequente recebe o clock através da saída do flipflop anterior Nos contadores síncronos o mesmo sinal de clock é fornecido para todos os flipflops de forma que eles recebem o clock simultaneamente Projete um contador de 4 bits assíncrono e simule no Logisim Os contadores também podem ser projetados de modo a ter um número de estados menor em sua sequência que o valor máximo de Esse tipo de sequência é chamada de sequência truncada Para se obter uma sequência truncada é preciso forcar que o contador recicle seu estado antes que ele passe por todos os estados possíveis e isso pode ser feito de forma simples utilizando um contador assíncrono Projete um contador de década BCD que conta de 0 0000 até 9 1001 Checklist Faça o download do Logisim Preencha a tabela verdade para o meio somador verifique se ela está realmente correta Essa etapa é fundamental para o projeto de um circuito lógico Revise as tabelas verdade das portas lógicas que você conhece a resposta para o seu projeto está nestas portas Execute a sua simulação e verifique se o circuito se comportou como esperado Explore o ambiente do Logisim os flipflops estão localizados na pasta Memória e o sinal de clock está localizado na pasta conexão Simule os pulsos de clock clicando com a ferramenta testar RESULTADOS Resultados de Aprendizagem Para essa aula prática esperase que o aluno se familiarize com a ferramenta Logisim e seja capaz de projetar e simular circuitos lógicos simples com poucas portas lógicas Além disso se espera que o aluno consiga simular circuitos contadores síncronos e assíncronos ROTEIRO DE AULA PRÁTICA 3 NOME DA DISCIPLINA SISTEMAS DIGITAIS E MICROPROCESSADORES Unidade PROGRAMAÇÃO DE MICROPROCESSADORES E MICROCONTROLADORES Seção MICROCONTROLADOR ARDUINO OBJETIVOS Definição dos objetivos da aula prática Compreender o funcionamento de um microcontrolador realizando a programação de algoritmos básicos em um Arduino INFRAESTRUTURA Instalações Materiais de consumo Equipamentos SISTEMAS ELÉTRICOS ELETRÔNICOS E AUTOMAÇÃO Materiais de consumo ARDUINO UNO R3 CABO USB 1 por grupo KIT JUMPER MACHOMACHO PARA PROTOBOARD 1 por grupo LED VERMELHO 5 MM 5 por grupo POTENCIOMETRO 0 100 OHM 1 por grupo PROTO BOARD 2420 PONTOS 1 por grupo RESISTOR 220 OHM 5 por grupo SOLUÇÃO DIGITAL ARDUINO SOFTWARE IDE Software Arduino Software IDE ambiente de desenvolvimento integrado IDE para a plataforma Arduino permitindo a criação de programas para controlar dispositivos eletrônicos TINKERCAD Software Programa de modelagem tridimensional online gratuito que roda em um navegador da web conhecido por sua simplicidade e facilidade de uso EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI Não se aplica PROCEDIMENTOS PRÁTICOS ProcedimentoAtividade nº 1 Somente Físico Atividade proposta Conhecendo o Arduino Sistemas de controle simples Procedimentos para a realização da atividade 11 Crie um programa para Arduino Uno que repete qualquer caractere recebido pela porta serial semelhante a um eco Envie seu programa para o Arduino e teste seu funcionamento 12 Crie um programa para Arduino Uno que faz com que 5 LEDs pisquem sequencialmente de forma cíclica simulando um registrador de deslocamento Nesse programa cada um dos LEDs deverá ficar aceso por 200 ms um de cada vez Portanto o LED 1 acende passado o tempo ele se apaga e o LED 2 é aceso e assim sucessivamente Envie seu programa para o Arduino e teste seu funcionamento ligando 5 LEDs nos pinos de 8 a 12 do Arduino Não se esqueça de colocar um resistor de 220 O em série com cada LED para limitar a corrente 21 Crie um programa para Arduino Uno para o controle da luminosidade de um LED ligado no pino 10 por meio de um potenciômetro com seu pino central ligado no pino A0 e suas extremidades ligadas em 5 V e GND Conforme mudança da posição do potenciômetro a luminosidade do LED deve aumentar ou diminuir Por exemplo se ele estiver na metade de sua excursão o LED deverá estar com 50 de sua luminosidade Envie seu programa para o Arduino e teste seu funcionamento Não se esqueça de colocar um resistor de 220 O em série com o LED para limitar a corrente 22 Crie um programa para Arduino Uno para o controle da luminosidade de um LED ligado no pino 10 por meio da comunicação serial O comando a ser enviado deverá ser em ASCII sempre com 3 caracteres entre 000 e 255 indicando do brilho do LED mínimo e máximo respectivamente Envie seu programa para o Arduino e teste seu funcionamento Não se esqueça de colocar um resistor de 220 O em série com o LED para limitar a corrente Checklist Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários para que seja possível testar os algoritmos elaborados Envie o programa para o arduino e realize diversos testes de funcionamento Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários para que seja possível testar os algoritmos elaborados Envie o programa para o arduino e realize diversos testes de funcionamento ProcedimentoAtividade nº 2 Somente Virtual Atividade proposta A proposta da atividade é desenvolver o conhecimento para aplicar o Arduino a um projeto real utilizando a linguagem de programação C desenvolvendo um projeto completo Monitor de Umidade do Solo aplica os conhecimentos adquiridos para utilizar o Arduino e suas saídas Digitais e analógicas abrindo um mundo de possibilidades Procedimentos para a realização da atividade Para realizar o desenvolvimento Monitor de Umidade do Solo com o Arduino vamos precisar separar os componentes necessários para a construção do circuito separando seus componentes e realizando suas conexões e por fim vamos construir o algoritmo de programação para realizar a operação Todo esse processo deve ser realizado no Tinkercad criando um novo projeto do tipo Circuito 1 Componentes para o Projeto Para construir este projeto precisamos dos seguintes componentes 1 ARDUINO 1 PROTOBOARD 5 LEDS sendo 1 VERMELHO 1 AMARELO 1 LARANJA 1 AZUL e 1 VERDE 5 resistores de 220 Ohms MÓDULO SENSOR DE UMIDADE DO SOLO Separeos para realizar as conexões 2 Conexões a serem realizadas a Conecte as saídas 91011 12 e 13 ao ânodo do LED b Crie a conexão do catodo dos LEDS para os Resistor de 220 Ohms c Conecte o outro terminal dos Resistores ao GND Negativo do Arduino d Crie as conexões de forma organizada e limpa e Conecte o Pino VCC do Sensor de Umidade de Solo na porta A0 f Conecte o Pino GND do Sensor de Umidade de Solo no GND do Arduino g Conecte o Pino SIG do Sensor de Umidade na Porta A1 3 Algoritmo na linguagem C Ao iniciar o desenvolvimento de código texto você terá as duas funções padrões do Arduino a Setup e a Loop a Defina as variáveis antes do bloco void setup Crie uma variável para armazenar o valor do Sinal de Umidade chamado umidade com valor 0 Crie a variável ledvermelho com a porta 13 Crie a variável ledamarelo com a porta 12 Crie a variável ledlaranja com a porta 11 Crie a variável ledazul com a porta 10 Crie a variável ledverde com a porta 9 Crie uma variável pinvcc com a porta A0 Crie uma variável pinsensor com a porta A1 As variáveis com nome inicial led realizará o controle para acender cada LED à medida que o valor da variável umidade for alterado já o pinvcc e pinsensor serão os de controle do sensor de umidade b No bloco void setup crie as definições para as portas utilizeas da seguinte forma Defina as variáveis com inicio led como saída Defina o pinvcc como saída Defina o pinsensor como entrada Defina Serialbegin9600 para que possamos verificar no meio do processo os valores gerados pelo sensor de umidade c E por fim construa a execução das ações do seu código dentro do bloco void loop utilizando as funções digitais e analógica do arduino Inicie o código aplicando tensão no pinvcc Aplique a variável umidade criada os valores do pinsensor com a função AnalogRead Crie uma linha com o código Serialprintlnumidade para verificar os valores da variável umidade no monitor serial Defina que todos os leds estarão desligados ainda neste momento Crie os blocos de verificação para acender cada led em um determinado parâmetro utilize as seguintes regras Se menor que 200 acenderá o ledvermelho Se menor que 400 acenderá o ledamarelo Se menor que 600 acenderá o ledlaranja Se menor que 800 acenderá o ledazul Se for diferente destes valores acenda o ledverde Após seguir todas as etapas execute a simulação para ver a operação O Projeto deve ligar o ledvermelho quando a variável umidade estiver menor que 200 e a medida que é aplicado os valores controlados pela barra de controle no simulador do sensor de umidade irá acender os leds na sequência de amarelo laranja azul e verde O circuito será um loop infinito e manterá a luz acesa conforme os valores recebidos na variável umidade Checklist Realizar as separações dos componentes necessários para o projeto Realizar as conexões do circuito eletrônico Realizar a elaboração do código de programação C Executar o projeto Verificar se o projeto segue o escopo planejando Resultados de Aprendizagem RESULTADOS Compreender como é o processo de desenvolvimento de firmware para microcontroladores utilizando a plataforma Arduino para o projeto de sistemas de controle variados que podem ser reproduzidos facilmente utilizando todas as funcionalidades existentes em um microcontrolador ROTEIRO DE AULA PRÁTICA 4 NOME DA DISCIPLINA SISTEMAS DIGITAIS E MICROPROCESSADORES Unidade PROGRAMAÇÃO DE MICROPROCESSADORES E MICROCONTROLADORES Seção NOVAS ARQUITETURAS E TENDÊNCIAS OBJETIVOS Definição dos objetivos da aula prática Compreender o funcionamento de um microcontrolador realizando a programação de algoritmos em um Arduino INFRAESTRUTURA Instalações Materiais de consumo Equipamentos SISTEMAS ELÉTRICOS ELETRÔNICOS E AUTOMAÇÃO Materiais de consumo ARDUINO UNO R3 CABO USB 1 por grupo KIT JUMPER MACHOMACHO PARA PROTOBOARD 1 por grupo MODULO DS1302 RELOGIO TEMPO REAL ARDUINO 1 por grupo PROTO BOARD 2420 PONTOS 1 por grupo RESISTOR 1000000 OHM 1 por grupo SENSOR DHT11 DE TEMPERATURA E UMIDADE PARA ARDUINO 1 por grupo SOLUÇÃO DIGITAL ARDUINO SOFTWARE IDE Software Arduino Software IDE ambiente de desenvolvimento integrado IDE para a plataforma Arduino permitindo a criação de programas para controlar dispositivos eletrônicos EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI Não se aplica PROCEDIMENTOS PRÁTICOS ProcedimentoAtividade nº 1 Somente Físico Atividade proposta Relógio em tempo real e sensor de temperatura e umidade Estação meteorológica Procedimentos para a realização da atividade 1 Crie um programa para Arduino Uno que realiza a leitura de data e hora do módulo relógio em tempo real DS1302 e a envia na serial juntamente com a temperatura e umidade medidas pelo sensor DHT11 a cada 1 minuto Saiba que o sensor demora alguns segundos para realizar a medida então leia a data e hora do módulo para fazer a amostragem com precisão 1 min Não utilize a função delay Envie seu programa para o Arduino e teste seu funcionamento Não se esqueça de colocar um resistor de pullup no pino de dados do DHT11 2 Crie um programa para Arduino Uno que simula uma estação meteorológica utilizando o módulo relógio em tempo real DS1302 e o sensor de temperatura e umidade DHT11 A cada 1 min deve ser feita uma medida de umidade e temperatura que deve ser enviada via porta serial juntamente com data e hora da medida Saiba que o sensor demora alguns segundos para realizar a medida então leia a data e hora do módulo para fazer a amostragem com precisão 1 m Não utilize a função delay Salve os dados de data e hora na memória EEPROM do Arduino juntamente com o valor de temperatura e umidade Para a data utilize 1 byte para o dia um para o mês um para o ano considere apenas os dígitos decimais um para hora e um para os minutos totalizando 5 bytes Utilize mais dois bytes um para a temperatura em ºC e um para a umidade em desconsiderando as casas decimais Faça uma lógica para evitar o estouro da EEPROM e faça com que ao receber o caractere L via serial o microcontrolador retorne todos os dados armazenados No momento que os dados forem lidos eles podem ser apagados ou escritos novos dados sobre eles Envie seu programa para o Arduino e teste seu funcionamento Obs A memória EEPROM do Arduino Uno possui 1024 posições 0 a 1023 de 1 byte cada Checklist Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários para que seja possível testar os algoritmos elaborados Envie o programa para o arduino e realize diversos testes de funcionamento Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários para que seja possível testar os algoritmos elaborados Envie o programa para o arduino e realize diversos testes de funcionamento RESULTADOS Resultados de Aprendizagem Compreender como é o processo de desenvolvimento de firmware para microcontroladores utilizando a plataforma Arduino para o projeto de sistemas de controle variados que podem ser reproduzidos facilmente utilizando todas as funcionalidades existentes em um microcontrolador ROTEIRO DE AULA PRÁTICA 5 NOME DA DISCIPLINA SISTEMAS DIGITAIS E MICROPROCESSADORES Unidade PROGRAMAÇÃO DE MICROPROCESSADORES E MICROCONTROLADORES Seção APLICAÇÕES PARA PROCESSADORES ARM OBJETIVOS Definição dos objetivos da aula prática Compreender o funcionamento de um microcontrolador realizando a programação de algoritmos em um Arduino INFRAESTRUTURA Instalações Materiais de consumo Equipamentos SISTEMAS ELÉTRICOS ELETRÔNICOS E AUTOMAÇÃO Materiais de consumo ARDUINO UNO R3 CABO USB 1 por grupo KIT JUMPER MACHOMACHO PARA PROTOBOARD 1 por grupo PROTO BOARD 2420 PONTOS 1 por grupo RESISTOR 220 OHM 3 por grupo LED RGB 5 MM 1 por grupo SENSOR HCSR04 MEDIDOR DE DISTÂNCIA POR ULTRASOM PARA ARDUINO 1 por grupo SOLUÇÃO DIGITAL 2 ARDUINO SOFTWARE IDE Software Arduino Software IDE ambiente de desenvolvimento integrado IDE para a plataforma Arduino permitindo a criação de programas para controlar dispositivos eletrônicos TINKERCAD Software Programa de modelagem tridimensional online gratuito que roda em um navegador da web conhecido por sua simplicidade e facilidade de uso EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI Não se aplica PROCEDIMENTOS PRÁTICOS ProcedimentoAtividade nº 1 Somente Físico Atividade proposta Sensor ultrassom com LED RGB Sensor ultrassom com timer Procedimentos para a realização da atividade 1 Crie um programa para Arduino Uno que indica por meio de um LED RGB a distância medida pelo sensor ultrassônico Para esse experimento quando um objeto estiver a mais de 50 cm a cor do LED deve ser totalmente verde Com a redução da distância a cor do LED deve ir ficando amarela até a distância de 25 cm quando se torna totalmente amarela A partir desse ponto o LED deve ir se tornando vermelho com a aproximação do objeto e se tornar totalmente vermelho quando a distância for inferior a 5 cm Envie seu programa para o Arduino e teste seu funcionamento Para ligar o LED RGB utilize os pinos 9 10 e 11 do Arduino que possuem saídas PWM Não se esqueça de colocar um resistor em série com cada cor do LED para limitar a corrente que passa por ele 2 Crie um programa para Arduino Uno que realiza a leitura da distância medida pelo sensor ultrassônico e a envie via serial a cada 1 s 3 A medida deve estar em centímetros Programe também o LED ligado ao pino 13 do Arduino para piscar com velocidade proporcional a distância Assim quando a distância medida pelo sensor for de 50 cm ou mais o LED deverá mudar seu estado a cada 1 s Com a redução da distância esse período deve mudar proporcionalmente Perceba que você deve ter duas bases de tempo nesse programa uma para amostragem e envio da distância via serial e outra para o LED para isso utilize uma interrupção do timer para te ajudar Envie seu programa para o Arduino e teste seu funcionamento Checklist Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários para que seja possível testar os algoritmos elaborados Envie o programa para o arduino e realize diversos testes de funcionamento ProcedimentoAtividade nº 1 Somente Virtual Atividade proposta Sensor ultrassom com LED RGB Procedimentos para a realização da atividade Para realizar essa simulação será necessário criar um novo projeto do tipo Circuito no Tinkercad Feito isso adicione os seguintes elementos na montagem 1 Arduino Uno R3 1 Placa de ensaio pequena 1 LED RGB 3 Resistores de 220 Ohms 1 Sensor de distância ultrassônico Adicionados o elementos posicione os resistores LED e sensor na protoboard corretamente realizando as ligações necessárias no Arduino Para ligar o LED RGB utilize os pinos 9 10 e 11 do Arduino que possuem saídas PWM O sinal do sensor de distância pode ser ligado no pino de sua preferência evitando os pinos 0 1 e 13 além dos já utilizados para o LED O procedimento a ser realizado é o seguinte Crie um programa para Arduino Uno que indica por meio de um LED RGB a distância medida pelo sensor ultrassônico Para esse experimento quando um objeto estiver a mais de 50 cm a cor do LED deve ser totalmente verde Com a redução da distância a cor do LED deve ir ficando amarela até a distância de 25 cm quando se torna totalmente amarela A partir desse ponto o LED deve ir se tornando vermelho com a aproximação do objeto e se tornar totalmente vermelho quando a distância for inferior a 5 cm Elaborado o código realize a simulação no Tinkercad clicando sobre o sensor ultrassônico para ajustar a distância que ele estará medindo Não se esqueça de colocar um resistor de 220 Ohms em série com cada cor do LED para limitar a corrente que passa por ele Para que o circuito funcione no Tinkercad faça uma pesqusia sobre como fazer que o sensor de distância ultrassônico funcione Com isso será possivel elaborar a lógica necessária para que o sistema funcione como o desejado Checklist Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários no simulador para que seja possível testar os algoritmos elaborados Realize a simulação a fim de verificar o funcionamento da montagem RESULTADOS Resultados de Aprendizagem Compreender como é o processo de desenvolvimento de firmware para microcontroladores utilizando a plataforma Arduino para o projeto de sistemas de controle variados que podem ser reproduzidos facilmente utilizando todas as funcionalidades existentes em um microcontrolador UNIVERSIDADE PITÁGORAS UNOPAR ANHANGUERA CURSO NOME DO ALUNO ATIVIDADE PRÁTICA SISTEMAS DIGITAIS E MICROPROCESSADORES CIDADE 2025 ATIVIDADE PRÁTICA SISTEMAS DIGITAIS E MICROPROCESSADORES Trabalho apresentado à Universidade como requisito parcial para a obtenção de média semestral nas disciplinas norteadoras do semestre letivo Tutor a SUMÁRIO 1 INTRODUÇÃO5 2 ATIVIDADE PRÁTICA 17 2 ATIVIDADE PRÁTICA 218 3 ATIVIDADE PRÁTICA 328 4 ATIVIDADE PRÁTICA 443 5 ATIVIDADE PRÁTICA 551 CONCLUSÃO69 REFERÊNCIAS BIBLIOGRÁFICAS71 1 1 INTRODUÇÃO O presente portfólio descreve uma série de atividades práticas realizadas no âmbito do curso de Sistemas Digitais e Microprocessadores visando proporcionar uma compreensão aprofundada dos conceitos fundamentais relacionados a circuitos digitais e microcontroladores O conjunto de atividades abrange desde a implementação de circuitos simples até a programação avançada de microcontroladores Arduino Na Aula Prática 1 se projetou e implementou um circuito capaz de registrar a produção de uma fábrica por meio de 8 teclas cada uma representando uma quantidade específica de itens produzidos Utilizando o simulador Logisim explorase o uso de entradas e saídas bem como os conceitos de codificador de prioridade e decodificador O objetivo principal foi simular o funcionamento do circuito digital e compreender seu impacto na produção A Aula Prática 2 expandiu o escopo concentrandose no projeto simulação e montagem de circuitos lógicos mais complexos Se utilizou a ferramenta Logisim para criar um contador binário de 4 bits e um contador de década BCD consolidando habilidades na manipulação de circuitos digitais A Aula Prática 3 introduziu ao universo dos microcontroladores com foco no Arduino Além de compreender o funcionamento básico do Arduino programouse algoritmos simples iniciando uma jornada no desenvolvimento de sistemas de controle A Aula Prática 4 aprofundou ainda mais o conhecimento em microcontroladores abordando a programação de algoritmos para criar um relógio em tempo real e uma estação meteorológica integrando sensores de temperatura e umidade Por fim a Aula Prática 5 explorou a aplicação prática de microcontroladores Arduino em cenários específicos como a implementação de um sensor ultrassom com LED RGB e um sensor ultrassom com timer Ao longo dessas atividades adotase uma abordagem prática e handson consolidando conceitos teóricos aprendidos em sala de aula O portfólio reflete não 2 apenas a evolução das habilidades técnicas mas também a capacidade de resolver problemas complexos no contexto dos sistemas digitais e microprocessadores 2 ATIVIDADE PRÁTICA 1 A execução da primeira atividade prática no simulador Logisim envolveu uma série de passos cruciais para a implementação bemsucedida de um circuito destinado a registrar a produção de uma fábrica por meio de 8 teclas Abaixo estão detalhados os passos seguidos durante essa atividade Abertura do Software Simulador Logisim Inicialmente abriuse o software simulador Logisim a plataforma escolhida para a simulação de circuitos digitais Inserção de Teclas e Rótulos Para representar as 8 teclas correspondentes à produção foram inseridas teclas alinhadas e rotuladas adequadamente para indicar qual número cada tecla representava Figura 1 Inserção de Teclas e Rótulos Fonte O Autor Inserção do Codificador de Prioridade 3 Foi adicionado o Codificador de Prioridade ao circuito um componente que ao receber várias entradas exibe na saída o valor da entrada mais alta As outras 7 teclas foram conectadas ao codificador Inserção da Entrada de Enable Uma entrada de Enable foi incorporada ao codificador de prioridade para habilitar seu funcionamento Figura 2 Inserção da Entrada Fonte O Autor Inserção da Saída Uma saída foi inserida para exibir o valor binário correspondente à entrada habilitada de 0 a 7 4 Figura 3 Inserção da Saída Fonte O Autor Simulação do Codificador de Prioridade Foi realizada a simulação do codificador de prioridade preenchendo uma tabela com entradas e saídas Observouse que a saída representava o valor binário mais alto da entrada habilitada Conforme tabela abaixo Tabela 1 Simulação Codificador Enable Tecla Acionada Saída 0 Tecla de 1 a 8 Acionada 111 1 Nenhuma Tecla Acionada xxx 1 1 000 1 2 001 1 3 010 1 4 011 1 5 100 1 6 101 1 7 110 Fonte O Autor 5 Inserção do Decodificador Foi inserido o decodificador no circuito definindo o número de bits na entrada e estabelecendo as conexões necessárias Figura 4 Inserção do Decodificador Fonte O Autor Inserção das Saídas do Decodificador As saídas do decodificador foram incorporadas ao circuito Figura 5 Saídas do Decodificador Fonte O Autor 6 Testes de Possibilidades Foram realizados testes abrangentes para todas as possibilidades do circuito registrando quais saídas eram acionadas em diferentes combinações de teclas Conforme tabela abaixo Tabela 2 Simulação Decodificador Enable Tecla Acionada Saída 0 Tecla de 1 a 8 Acionada 8 1 Nenhuma Tecla Acionada xxx 1 1 1 1 2 2 1 3 3 1 4 4 1 5 5 1 6 6 1 7 7 1 8 8 Fonte O Autor Resumo da Lógica de Funcionamento O circuito apresenta um codificador de prioridade seguido por um decodificador O codificador de prioridade tem a função de identificar a tecla de maior prioridade que está acionada ligada e gerar uma saída binária correspondente O decodificador por sua vez recebe essa saída binária e a converte de volta para a representação decimal indicando qual tecla foi acionada A lógica de funcionamento pode ser resumida da seguinte forma Codificador de Prioridade O circuito tem 8 entradas cada uma representando uma tecla numerada de 1 a 8 O codificador de prioridade identifica qual tecla tem a maior prioridade entre as acionadas habilitadas A saída do codificador fornece a representação binária do número da tecla de maior prioridade 7 Decodificador O decodificador recebe a saída binária do codificador Ele converte a representação binária de volta para decimal indicando qual tecla foi acionada Exemplos de Comportamento Combinação 1 Enable 1 Habilitado Tecla Acionada 3 Saída do Codificador 010 correspondente a 3 em binário Saída do Decodificador 3 Resultado A tecla 3 está acionada e a saída correta é 3 Combinação 2 Enable 1 Habilitado Tecla Acionada 1 Saída do Codificador 000 correspondente a 1 em binário Saída do Decodificador 1 decimal Resultado A tecla 1 está acionada e a saída correta é 1 Combinação 3 Enable 1 Habilitado Tecla Acionada 7 Saída do Codificador 110 correspondente a 6 em binário Saída do Decodificador 7 Resultado A tecla 7 está acionada e a saída correta é 7 8 2 ATIVIDADE PRÁTICA 2 A segunda atividade prática envolveu a utilização do software Logisim para projetar e simular circuitos lógicos mais complexos com destaque para a implementação de um meio somador binário e um contador assíncrono de 4 bits A seguir estão detalhados os passos realizados durante essa atividade 1 Implementação do Meio Somador Inserção de Componentes Inicialmente foi necessário adicionar portas lógicas ao ambiente de simulação incluindo portas NAND e OR bem como duas portas inversoras As entradas A e B foram inseridas e as portas foram devidamente posicionadas Figura 6 Portas Fonte O Autor Conexões e Testes Foram realizadas as conexões entre os componentes considerando a lógica do meio somador Testes foram efetuados alternando os valores das entradas A e B para observar as saídas da porta NAND e OR 9 Figura 7 Conexões Fonte O Autor Os resultados foram registrados em uma tabela verdade a seguir Tabela 3 Tabela Verdade da Porta NAND A B S 0 0 1 0 1 1 1 0 1 1 1 0 Fonte O Autor Tabela 4 Tabela Verdade da Porta OR Negativa A B S 0 0 1 0 1 1 1 0 1 1 1 0 Fonte O Autor 10 Projeto do Circuito Meio Somador Utilizando as portas lógicas disponíveis no Logisim foi projetado o circuito lógico para um meio somador binário Figura 8 Meio Somador Fonte O Autor Simulação e Verificação O circuito projetado foi simulado no Logisim para verificar se ele executava corretamente as operações esperadas conforme a tabela verdade do meio somador As entradas foram alternadas e as saídas foram analisadas para garantir a precisão do circuito conforme tabelas abaixo Tabela 5 Tabela Verdade Meio Somador Entradas Saídas A B S Co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Fonte O Autor 11 2 Projeto do Contador Assíncrono de 4 Bits Entendimento dos Contadores Assíncronos No conceito de contadores assíncronos onde o primeiro flipflop recebe um sinal de clock externo e cada flipflop subsequente recebe o clock através da saída do anterior Projeto do Contador de 4 Bits Assíncrono Com base no conhecimento adquirido sobre contadores assíncronos foi projetado um contador de 4 bits Flipflops foram encadeados e as conexões foram estabelecidas conforme as características desse tipo de contador Figura 9 Contador de 4 Bits Assíncrono Fonte O Autor 3 Projeto do Contador de Década BCD Entendimento dos Contadores de Década BCD No conceito de contadores de década BCD que contam de 0 0000 até 9 1001 Esses contadores podem ser projetados para ter uma sequência truncada Projeto do Contador de Década BCD Foi projetado um contador de década BCD considerando a sequência de 0 a 9 Flipflops foram utilizados para representar cada dígito e as conexões foram estabelecidas de acordo com a lógica BCD 12 Figura 10 Contador de Década Fonte O Autor 13 3 ATIVIDADE PRÁTICA 3 Etapa 1 Na primeira etapa da Atividade 3 foram desenvolvidos programas para Arduino Uno utilizando a plataforma Arduino IDE com o objetivo de realizar operações específicas Abaixo estão os detalhes dos passos realizados para cada parte da atividade Parte 1 Programa de Eco para Arduino Uno Desenvolvimento do Programa Foi criado um programa que implementa a funcionalidade de eco ou seja repete qualquer caractere recebido pela porta serial O código incluiu a leitura de caracteres da porta serial e a retransmissão desses caracteres de volta para a porta O seguinte código foi desenvolvido e utilizado void setup Serialbegin9600 Inicializa a comunicação serial com taxa de 9600 bps void loop if Serialavailable 0 Verifica se há dados disponíveis na porta serial char receivedChar Serialread Lê o caractere recebido SerialprintVocê digitou Envia uma mensagem indicando o caractere recebido SerialprintlnreceivedChar Envia o caractere recebido de volta pela porta serial Envio e Teste 14 O programa foi enviado para o Arduino Uno através da Arduino IDE Após o upload do programa o Arduino foi conectado ao computador e a comunicação serial foi estabelecida Testes foram realizados enviando caracteres pela porta serial e o Arduino respondeu repetindo os caracteres recebidos Parte 2 Programa de Piscar LEDs em Sequência para Arduino Uno Desenvolvimento do Programa Foi desenvolvido um programa que simula um registrador de deslocamento com 5 LEDs Cada LED acende sequencialmente por 200 ms de forma cíclica O código incluiu a configuração dos pinos dos LEDs a lógica de acendimento sequencial e o uso de delay para controlar o tempo de cada LED aceso O seguinte código foi desenvolvido e utilizado const int numLEDs 5 Número de LEDs const int pinLEDs 8 9 10 11 12 Pinos dos LEDs const int tempoAceso 200 Tempo em milissegundos que cada LED ficará aceso void setup for int i 0 i numLEDs i pinModepinLEDsi OUTPUT Configura os pinos dos LEDs como saída void loop for int i 0 i numLEDs i digitalWritepinLEDsi HIGH Acende o LED atual delaytempoAceso Aguarda o tempo configurado digitalWritepinLEDsi LOW Apaga o LED atual Montagem e Teste 15 Cinco LEDs foram conectados aos pinos de 8 a 12 do Arduino com resistores de 220 Ω em série para limitar a corrente O programa foi enviado para o Arduino e os LEDs foram observados piscando de forma sequencial conforme a lógica implementada Parte 3 Controle de Luminosidade de um LED com Potenciômetro Desenvolvimento do Programa Foi criado um programa que controla a luminosidade de um LED conectado ao pino 10 do Arduino por meio de um potenciômetro O código incluiu a leitura da posição do potenciômetro no pino A0 e o ajuste da luminosidade do LED proporcionalmente à posição do potenciômetro O seguinte código foi desenvolvido e utilizado const int pinoPotenciometro A0 Pino analógico onde o potenciômetro está conectado const int pinoLED 10 Pino digital onde o LED está conectado void setup pinModepinoLED OUTPUT Configura o pino do LED como saída void loop int valorPotenciometro analogReadpinoPotenciometro Lê o valor do potenciômetro 0 a 1023 int luminosidade mapvalorPotenciometro 0 1023 0 255 Mapeia o valor para a faixa de brilho do LED analogWritepinoLED luminosidade Define a luminosidade do LED Montagem e Teste 16 Um LED foi conectado ao pino 10 do Arduino e um potenciômetro foi conectado ao pino A0 com suas extremidades ligadas em 5V e GND Um resistor de 220 Ω foi utilizado em série com o LED O programa foi enviado para o Arduino e o teste foi realizado ajustando o potenciômetro para observar as variações na luminosidade do LED Parte 4 Controle de Luminosidade de um LED por Comunicação Serial Desenvolvimento do Programa Foi desenvolvido um programa que controla a luminosidade de um LED no pino 10 do Arduino por meio da comunicação serial O programa espera receber comandos em ASCII representando valores de brilho entre 000 e 255 A luminosidade do LED é ajustada de acordo com os valores recebidos O seguinte código foi desenvolvido e utilizado const int pinoLED 10 Pino digital onde o LED está conectado char comandoSerial4 Array para armazenar o comando recebido via serial void setup Serialbegin9600 Inicializa a comunicação serial pinModepinoLED OUTPUT Configura o pino do LED como saída void loop if Serialavailable 3 Verifica se há pelo menos 3 bytes disponíveis na serial SerialreadBytescomandoSerial 3 Lê os 3 bytes do comando comandoSerial3 0 Adiciona o caractere nulo ao final para formar uma string int luminosidade atoicomandoSerial Converte a string para um valor inteiro Limita a luminosidade entre 0 e 255 17 luminosidade constrainluminosidade 0 255 analogWritepinoLED luminosidade Define a luminosidade do LED Montagem e Teste Um LED foi conectado ao pino 10 do Arduino e a comunicação serial foi estabelecida O programa foi enviado para o Arduino e testes foram realizados enviando comandos válidos três caracteres entre 000 e 255 pela porta serial para ajustar a luminosidade do LED O resistor de 220 Ω foi utilizado em série com o LED para limitar a corrente Etapa 2 Na segunda etapa da Atividade 3 foi realizado o desenvolvimento de um projeto no Tinkercad para criar um monitor de umidade do solo com o Arduino Abaixo estão os detalhes dos passos realizados para essa atividade Parte 1 Monitor de Umidade do Solo com Arduino Componentes para o Projeto Para a construção deste projeto foram necessários os seguintes componentes 1 Arduino 1 Protoboard 5 LEDs Vermelho Amarelo Laranja Azul e Verde 5 resistores de 220 Ohms Módulo sensor de umidade do solo Conexões Realizadas 18 As seguintes conexões foram feitas no Tinkercad Conectouse as saídas 9 10 11 12 e 13 do Arduino aos ânodos dos LEDs Criouse a conexão do cátodo dos LEDs para os resistores de 220 Ohms Conectouse o outro terminal dos resistores ao GND negativo do Arduino Fezse as conexões de forma organizada e limpa Conectouse o pino VCC do sensor de umidade do solo à porta A0 Conectouse o pino GND do sensor de umidade do solo ao GND do Arduino Conectouse o pino SIG do sensor de umidade à porta A1 Algoritmo em Linguagem C Ao iniciar o desenvolvimento do código foram definidas as seguintes variáveis Variável umidade para armazenar o valor do sinal de umidade inicializada com 0 Variáveis ledvermelho ledamarelo ledlaranja ledazul e ledverde para controlar os LEDs conectados aos pinos 13 12 11 10 e 9 respectivamente Variáveis pinvcc e pinsensor para controle do sensor de umidade Configuração no Setup No bloco void setup foram realizadas as seguintes definições Definição das variáveis led como saída Definição da variável pinvcc como saída Definição da variável pinsensor como entrada Inicialização da comunicação serial com Serialbegin9600 Loop de Execução No bloco void loop as seguintes ações foram programadas Aplicação de tensão no pino VCC do sensor de umidade 19 Leitura da variável umidade usando analogReadpinsensor Impressão do valor da variável umidade no monitor serial Desligamento de todos os LEDs Verificação para acender cada LED com base nas regras fornecidas Conforme o seguinte código const int ledvermelho 13 const int ledamarelo 12 const int ledlaranja 11 const int ledazul 10 const int ledverde 9 const int pinvcc A0 const int pinsensor A1 int umidade 0 void setup pinModeledvermelho OUTPUT pinModeledamarelo OUTPUT pinModeledlaranja OUTPUT pinModeledazul OUTPUT pinModeledverde OUTPUT pinModepinvcc OUTPUT pinModepinsensor INPUT Serialbegin9600 void loop digitalWritepinvcc HIGH umidade analogReadpinsensor Serialprintlnumidade digitalWriteledvermelho LOW 20 digitalWriteledamarelo LOW digitalWriteledlaranja LOW digitalWriteledazul LOW digitalWriteledverde LOW if umidade 200 digitalWriteledvermelho HIGH else if umidade 400 digitalWriteledamarelo HIGH else if umidade 600 digitalWriteledlaranja HIGH else if umidade 800 digitalWriteledazul HIGH else digitalWriteledverde HIGH delay1000 Aguarda 1 segundo antes da próxima leitura Execução e Teste Após seguir todas as etapas a simulação foi executada para verificar a operação do projeto O circuito foi projetado para acender os LEDs na sequência vermelho amarelo laranja azul e verde dependendo dos valores controlados pela barra de simulação do sensor de umidade O circuito foi configurado como um loop infinito mantendo a luz acesa conforme os valores recebidos na variável umidade 21 4 ATIVIDADE PRÁTICA 4 Na Atividade 4 foram desenvolvidos dois programas para o Arduino Uno cada um realizando uma funcionalidade específica relacionada ao módulo relógio em tempo real DS1302 e ao sensor de temperatura e umidade DHT11 Abaixo estão os detalhes dos passos realizados para essa atividade 1 Programa para Leitura de Data Hora Temperatura e Umidade a Cada 1 Minuto Criouse um programa que realiza a leitura da data e hora do módulo DS1302 e a medida de temperatura e umidade do sensor DHT11 a cada 1 minuto Evitouse o uso da função delay para garantir a precisão da amostragem Os dados data hora temperatura e umidade foram enviados pela porta serial a cada minuto O seguinte código foi desenvolvido e utilizado include Wireh include RTClibh include DHTh define DHTPIN 2 Pino de dados do sensor DHT11 define DHTTYPE DHT11 Tipo do sensor DHT RTCDS1302 rtc DHT dhtDHTPIN DHTTYPE void setup Serialbegin9600 if rtcbegin SerialprintlnNão foi possível encontrar o módulo RTC while 1 if rtcisrunning 22 SerialprintlnConfigurando a hora rtcadjustDateTimeF DATE F TIME dhtbegin void loop DateTime now rtcnow float temperature dhtreadTemperature float humidity dhtreadHumidity SerialprintData e Hora Serialprintnowyear DEC Serialprint Serialprintnowmonth DEC Serialprint Serialprintnowday DEC Serialprint Serialprintnowhour DEC Serialprint Serialprintnowminute DEC Serialprint Serialprintlnnowsecond DEC SerialprintTemperatura Serialprinttemperature Serialprint C Umidade Serialprinthumidity Serialprintln delay60000 Aguarda 1 minuto antes da próxima leitura 23 2 Programa para Simulação de Estação Meteorológica com Armazenamento na EEPROM Desenvolveuse um programa que simula uma estação meteorológica realizando medidas de umidade e temperatura a cada 1 minuto Utilizouse o módulo DS1302 para obter a data e hora com precisão Os dados de data hora temperatura e umidade foram armazenados na EEPROM do Arduino Evitouse o uso da função delay para garantir a precisão da amostragem Implementouse uma lógica para evitar o estouro da EEPROM considerando suas limitações 1024 posições de 1 byte cada Ao receber o caractere L pela porta serial o microcontrolador retornou todos os dados armazenados possibilitando a leitura e se desejado a exclusão ou substituição dos dados O seguinte código foi desenvolvido e utilizado include Wireh include RTClibh include DHTh include EEPROMh define DHTPIN 2 Pino de dados do sensor DHT11 define DHTTYPE DHT11 Tipo do sensor DHT RTCDS1302 rtc DHT dhtDHTPIN DHTTYPE void setup Serialbegin9600 if rtcbegin SerialprintlnNão foi possível encontrar o módulo RTC while 1 if rtcisrunning SerialprintlnConfigurando a hora 24 rtcadjustDateTimeF DATE F TIME dhtbegin void loop DateTime now rtcnow float temperature dhtreadTemperature float humidity dhtreadHumidity SerialprintData e Hora Serialprintnowyear DEC Serialprint Serialprintnowmonth DEC Serialprint Serialprintnowday DEC Serialprint Serialprintnowhour DEC Serialprint Serialprintnowminute DEC Serialprint Serialprintlnnowsecond DEC SerialprintTemperatura Serialprinttemperature Serialprint C Umidade Serialprinthumidity Serialprintln Armazena dados na EEPROM int address 0 EEPROMwriteaddress nowday EEPROMwriteaddress nowmonth 25 EEPROMwriteaddress nowyear 100 EEPROMwriteaddress nowhour EEPROMwriteaddress nowminute EEPROMputaddress temperature address sizeoffloat EEPROMputaddress humidity address sizeoffloat delay60000 Aguarda 1 minuto antes da próxima leitura void readAndPrintStoredData int address 0 while address EEPROMlength byte day EEPROMreadaddress byte month EEPROMreadaddress byte year EEPROMreadaddress byte hour EEPROMreadaddress byte minute EEPROMreadaddress float temperature EEPROMgetaddress temperature address sizeoffloat float humidity EEPROMgetaddress humidity address sizeoffloat SerialprintData e Hora Serialprintyear Serialprint Serialprintmonth Serialprint Serialprintday Serialprint 26 Serialprinthour Serialprint Serialprintminute Serialprintln SerialprintTemperatura Serialprinttemperature Serialprint C Umidade Serialprinthumidity Serialprintln void serialEvent while Serialavailable char command Serialread if command L SerialprintlnRecuperando dados armazenados readAndPrintStoredData Os dados podem ser apagados após serem lidos Descomente a linha abaixo se desejar apagar os dados após a leitura EEPROMwrite0 0 27 5 ATIVIDADE PRÁTICA 5 Etapa 1 Na Etapa 1 da Atividade 5 foram desenvolvidos dois programas para o Arduino Uno cada um cumprindo uma função específica relacionada ao sensor ultrassônico e ao LED RGB Abaixo estão os detalhes dos passos realizados para esta etapa 1 Programa para Indicação de Distância por Meio de um LED RGB Criouse um programa que utiliza um LED RGB para indicar a distância medida pelo sensor ultrassônico O LED RGB foi conectado aos pinos 9 10 e 11 do Arduino que possuem saídas PWM para permitir controle de intensidade luminosa Um resistor foi colocado em série com cada cor do LED para limitar a corrente Definiuse que quando um objeto estiver a mais de 50 cm a cor do LED deve ser totalmente verde Com a redução da distância a cor do LED deve transitar para amarela até a distância de 25 cm tornandose totalmente amarela A partir desse ponto o LED deve transitar para vermelho com a aproximação do objeto e tornarse totalmente vermelho quando a distância for inferior a 5 cm O programa foi enviado para o Arduino e testado para verificar o correto funcionamento da indicação de distância por meio do LED RGB O seguinte código foi desenvolvido e utilizado const int trigPin 2 Pino de controle do trigger do sensor ultrassônico const int echoPin 3 Pino de controle do echo do sensor ultrassônico const int redPin 9 Pino PWM para a cor vermelha do LED RGB const int greenPin 10 Pino PWM para a cor verde do LED RGB const int bluePin 11 Pino PWM para a cor azul do LED RGB const int maxDistance 50 Distância máxima para a cor verde em cm const int minDistance 5 Distância mínima para a cor vermelha em cm const int yellowDistance 25 Distância para a transição de verde para amarelo em cm 28 void setup Serialbegin9600 pinModetrigPin OUTPUT pinModeechoPin INPUT pinModeredPin OUTPUT pinModegreenPin OUTPUT pinModebluePin OUTPUT void loop long duration int distance Gera um pulso no pino de trigger digitalWritetrigPin LOW delayMicroseconds2 digitalWritetrigPin HIGH delayMicroseconds10 digitalWritetrigPin LOW Lê a duração do pulso no pino de echo duration pulseInechoPin HIGH Converte a duração para distância distance duration 0034 2 Imprime a distância no monitor serial SerialprintDistancia Serialprintlndistance Atualiza a cor do LED com base na distância medida updateLEDColordistance 29 delay500 Aguarda 500 milissegundos antes da próxima leitura void updateLEDColorint distance if distance maxDistance setColor0 255 0 Cor verde else if distance maxDistance distance yellowDistance Interpolação linear para obter a intensidade da cor amarela int greenIntensity mapdistance yellowDistance maxDistance 255 0 setColor255 greenIntensity 0 Cor amarela else if distance yellowDistance distance minDistance Interpolação linear para obter a intensidade da cor vermelha int redIntensity mapdistance minDistance yellowDistance 0 255 setColorredIntensity 255 0 Cor vermelha else setColor255 0 0 Cor vermelha distância abaixo do mínimo void setColorint red int green int blue analogWriteredPin red analogWritegreenPin green analogWritebluePin blue 2 Programa para Leitura de Distância e Piscar de LED Proporcional à Distância Criouse um programa que realiza a leitura da distância medida pelo sensor ultrassônico e a envia via porta serial a cada 1 segundo A leitura da distância foi feita em centímetros O LED conectado ao pino 13 do Arduino foi programado para piscar com uma velocidade proporcional à distância medida Utilizouse uma interrupção do timer para gerenciar as duas bases de tempo no programa uma para amostragem e envio da distância via serial e outra para o LED 30 Definiuse que quando a distância medida for de 50 cm ou mais o LED deverá mudar seu estado a cada 1 segundo Com a redução da distância esse período deve mudar proporcionalmente O programa foi enviado para o Arduino e testado para verificar a correta leitura da distância e o piscar do LED de acordo com a distância medida O seguinte código foi desenvolvido e utilizado const int trigPin 2 Pino de controle do trigger do sensor ultrassônico const int echoPin 3 Pino de controle do echo do sensor ultrassônico const int ledPin 13 Pino para o LED no Arduino volatile unsigned long pulseWidth volatile unsigned long startTime volatile boolean echoReceived false void setup Serialbegin9600 pinModetrigPin OUTPUT pinModeechoPin INPUT pinModeledPin OUTPUT Configuração da interrupção do timer cli Desabilita interrupções durante a configuração TCCR1A 0 TCCR1B 0 TCNT1 0 OCR1A 15624 Valor para 1 segundo com prescaler de 256 TCCR1B 1 WGM12 TCCR1B 1 CS12 TIMSK1 1 OCIE1A sei Habilita interrupções após a configuração void loop 31 long duration Gera um pulso no pino de trigger digitalWritetrigPin LOW delayMicroseconds2 digitalWritetrigPin HIGH delayMicroseconds10 digitalWritetrigPin LOW Aguarda o início do pulso de echo while echoReceived Calcula a duração do pulso de echo duration pulseWidth 0034 2 Imprime a distância no monitor serial SerialprintDistancia Serialprintlnduration Envia a distância via serial SerialprintDistancia cm Serialprintlnduration Atualiza o estado do LED com base na distância medida updateLEDStateduration Aguarda 1 segundo para a próxima leitura delay1000 void updateLEDStatelong distance Calcula o período do piscar do LED com base na distância unsigned long period mapdistance 0 50 1000 100 Configura o timer para controlar o LED 32 cli Desabilita interrupções durante a configuração TCNT1 0 OCR1A period 2 Valor para o período de piscar sei Habilita interrupções após a configuração ISRTIMER1COMPAvect Inverte o estado do LED quando ocorre a interrupção do timer digitalWriteledPin digitalReadledPin ISRTIMER1CAPTvect Lê o valor do contador no início do pulso de echo startTime micros ISRTIMER1COMPAvect Calcula a largura do pulso de echo pulseWidth micros startTime echoReceived true Etapa 2 Na Etapa 2 da Atividade 5 o objetivo foi criar um programa para o Arduino Uno que indicasse por meio de um LED RGB a distância medida pelo sensor ultrassônico Abaixo estão os passos e detalhes do procedimento realizado 1 Procedimento Montagem do Circuito no Tinkercad Criouse um novo projeto do tipo Circuito no Tinkercad Adicionouse os seguintes elementos na montagem 1 Arduino Uno R3 33 1 Placa de ensaio pequena 1 LED RGB 3 Resistores de 220 Ohms 1 Sensor de distância ultrassônico Posicionou os resistores LED e sensor na protoboard realizando as ligações necessárias no Arduino Para ligar o LED RGB utilizaramse os pinos 9 10 e 11 do Arduino que possuem saídas PWM O sinal do sensor de distância foi conectado a um pino disponível no Arduino evitando os pinos 0 1 e 13 além dos já utilizados para o LED Criação do Programa Arduino Elaborouse um programa para o Arduino Uno que indicava a distância medida pelo sensor ultrassônico por meio do LED RGB Estabeleceuse a lógica de controle das cores do LED com base na distância medida pelo sensor Quando um objeto estava a mais de 50 cm a cor do LED era totalmente verde Com a redução da distância até 25 cm a cor do LED tornavase amarela A partir de 25 cm o LED ia se tornando vermelho com a aproximação do objeto e ficava totalmente vermelho quando a distância era inferior a 5 cm Incluiuse no código as instruções necessárias para a leitura e interpretação dos dados do sensor ultrassônico O seguinte código foi desenvolvido e utilizado const int trigPin 2 Pino de controle do trigger do sensor ultrassônico const int echoPin 3 Pino de controle do echo do sensor ultrassônico const int redPin 9 Pino do LED RGB para a cor vermelha const int greenPin 10 Pino do LED RGB para a cor verde const int bluePin 11 Pino do LED RGB para a cor azul void setup Serialbegin9600 34 pinModetrigPin OUTPUT pinModeechoPin INPUT pinModeredPin OUTPUT pinModegreenPin OUTPUT pinModebluePin OUTPUT void loop long duration Gera um pulso no pino de trigger digitalWritetrigPin LOW delayMicroseconds2 digitalWritetrigPin HIGH delayMicroseconds10 digitalWritetrigPin LOW Aguarda o início do pulso de echo while digitalReadechoPin LOW Inicia o tempo no início do pulso de echo long startTime micros Aguarda o fim do pulso de echo while digitalReadechoPin HIGH Calcula a duração do pulso de echo long travelTime micros startTime Calcula a distância com base no tempo de viagem do ultrassom Considerando velocidade do som de 343 metros por segundo 34300 cms duration travelTime 2 Serialprintlnduration Atualiza a cor do LED RGB com base na distância medida 35 updateLEDColorduration Aguarda um curto intervalo antes da próxima leitura delay100 void updateLEDColorlong distance Define os valores limites de distância para cada cor int greenDistance 50 int yellowDistance 25 int redDistance 5 Atualiza as cores do LED RGB com base na distância if distance greenDistance analogWriteredPin 0 analogWritegreenPin 255 analogWritebluePin 0 else if distance yellowDistance analogWriteredPin 255 analogWritegreenPin 255 analogWritebluePin 0 else if distance redDistance analogWriteredPin 255 analogWritegreenPin 165 analogWritebluePin 0 else analogWriteredPin 255 analogWritegreenPin 0 analogWritebluePin 0 Simulação no Tinkercad 36 Realizouse a simulação no Tinkercad ajustando a distância medida pelo sensor ultrassônico clicando sobre ele Colocouse um resistor de 220 Ohms em série com cada cor do LED para limitar a corrente que passava por ele Pesquisouse sobre como fazer o sensor de distância ultrassônico funcionar corretamente no Tinkercad ajustando as configurações necessárias para garantir a simulação adequada O resultado final foi um circuito simulado que indicava visualmente a distância medida pelo sensor ultrassônico por meio das cores do LED RGB seguindo as especificações estabelecidas no programa Arduino Esse experimento proporcionou a prática da integração de sensores e atuadores bem como a simulação de circuitos complexos no ambiente virtual do Tinkercad 37 CONCLUSÃO Ao longo deste portfólio cada atividade foi cuidadosamente planejada e executada proporcionando uma imersão significativa nos fundamentos e práticas essenciais relacionados a Sistemas Digitais e Microprocessadores Cada etapa teve como objetivo principal fortalecer habilidades específicas desde o uso de ferramentas de simulação até o desenvolvimento de firmware para microcontroladores utilizando a plataforma Arduino Na Atividade 1 explorouse o Logisim para a execução do codificador de prioridade um componente crucial em circuitos digitais A compreensão detalhada das entradas e saídas desse codificador foi alcançada permitindo uma visão aprofundada sobre sua aplicação prática em projetos mais complexos Na Atividade 2 o foco voltouse para a familiarização com o Logisim estimulando a projetar e simular circuitos lógicos simples Além disso a atividade abordou o desenvolvimento de circuitos contadores síncronos e assíncronos fornecendo uma compreensão mais ampla das possibilidades oferecidas por essa ferramenta As Atividades 3 4 e 5 centraramse no desenvolvimento de firmware para microcontroladores utilizando a plataforma Arduino Guiouse desde a criação de programas simples como eco e controle de LEDs até projetos mais elaborados como relógio em tempo real estação meteorológica e monitor de umidade do solo Essas atividades visaram proporcionar uma compreensão abrangente do processo de desenvolvimento de sistemas de controle variados incorporando todas as funcionalidades disponíveis em um microcontrolador Em síntese este portfólio representou um percurso abrangente e progressivo no universo dos Sistemas Digitais e Microprocessadores Cada atividade contribuiu para a formação sólida capacitando não apenas com conhecimentos teóricos mas também com habilidades práticas essenciais para enfrentar desafios no campo da eletrônica digital e sistemas embarcados O domínio adquirido ao longo dessas atividades certamente se refletirá na capacidade de conceber e implementar soluções inovadoras em contextos futuros 38 REFERÊNCIAS BIBLIOGRÁFICAS Arduino Libraries Disponível em httpswwwarduinoccenReferenceLibraries GitHub Arduino Temperature Control Library Disponível em httpsgithubcommilesburtonArduinoTemperatureControl Library IDOETA I V CAPUANO F G Elementos de Eletrônica Digital Sl Editora Erica 1984 39
25
Sistemas Digitais
UNIFEV
1
Sistemas Digitais
UNIFEV
75
Sistemas Digitais
UNIFEV
2
Sistemas Digitais
USJT
1
Sistemas Digitais
UFSC
9
Sistemas Digitais
UFGD
212
Sistemas Digitais
UNIFEV
30
Sistemas Digitais
UNIFEV
1
Sistemas Digitais
UNIFEV
3
Sistemas Digitais
UCL
Texto de pré-visualização
NORMAS PARA ELABORAÇÃO E ENTREGA DO RELATÓRIO DE ATIVIDADE PRÁTICA Olá estudante Tudo bem As atividades práticas visam desenvolver competências para a atuação profissional Elas são importantes para que você vivencie situações que te prepararão para o mercado de trabalho Por isso trazemos informações para que você possa realizar as atividades propostas com êxito 1 Que atividade deverá ser feita As atividades a serem realizadas estão descritas no Roteiro de Atividade Prática disponível no AVA Após a leitura do Roteiro você deverá realizar as atividades práticas solicitadas e elaborar um documento ÚNICO contendo todas as resoluções de acordo com a proposta estabelecida O trabalho deve ser autêntico e contemplar todas as resoluções das atividades propostas Não serão aceitos trabalhos com reprodução de materiais extraídos da internet 2 Como farei a entrega dessa atividade Você deverá postar seu trabalho final no AVA na pasta específica relacionada à atividade prática obedecendo o prazo limite de postagem conforme disposto no AVA Todas as resoluções das atividades práticas devem ser entregues em um ARQUIVO ÚNICO de até 10 MB O trabalho deve ser enviado em formato Word ou PDF exceto nos casos em que há formato especificado no Roteiro O sistema permite anexar apenas um arquivo Caso haja mais de uma postagem será considerada a última versão IMPORTANTE A entrega da atividade de acordo com a proposta solicitada é um critério de aprovação na disciplina Não há prorrogação para a postagem da atividade Aproveite essa oportunidade para aprofundar ainda mais seus conhecimentos Bons estudos Roteiro Aula Prática SISTEMAS DIGITAIS E MICROPROCESSADORES ROTEIRO DE AULA PRÁTICA 1 NOME DA DISCIPLINA SISTEMAS DIGITAIS E MICROPROCESSADORES Unidade CIRCUITOS LÓGICOS COMBINACIONAL E SEQUENCIAL Seção CIRCUITOS COMBINACIONAIS OBJETIVOS Definição dos objetivos da aula prática Introduzir a utilização do simulador Logisim Utilizar entradas e saídas no simulador Logisim Utilizar o circuito codificador de prioridade Utilizar o circuito decodicador Simular o funcionamento de um circuito digital no Logisim INFRAESTRUTURA Instalações Materiais de consumo Equipamentos LABORATÓRIO DE INFORMÁTICA Equipamentos Desktop Lab Informatica Positivo C6300 1 computador para cada 2 alunos SOLUÇÃO DIGITAL LOGISIM Simulador LogiSim Software para simulação digital de circuitos lógicos EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI Não se aplica PROCEDIMENTOS PRÁTICOS ProcedimentoAtividade nº 1 Somente virtual Atividade proposta Implementar um circuito que registre a produção de uma fábrica através de 8 teclas a cada produção será pressionada a quantidade produzida 1 2 3 4 5 6 7 8 O circuito deve demonstrar na saída o número de itens produzidos na sequência decimal Procedimentos para a realização da atividade Caro estudante iniciaremos uma sequência de operações para a montagem e simulação de um circuito digital com codificador e decodificador de acordo com a atividade proposta É muito importante que você não pule nenhuma etapa demonstrada para que no final obtenhamos o resultado desejado 1º Passo Abra o software simulador Logisim Observe se a sua tela condiz com a tela mostrada na imagem abaixo 2º PassoComo a nossa atividade consiste em registrar a produção de uma fábrica através de 8 teclas vamos inserilas e colocar os respectivos rótulos em cada uma Para isso clique neste ícone localizado no ponto 1 mostrado na imagem abaixo Coloque 8 teclas alinhadas conforme a imagem Logo após coloque os rótulos para saber qual tecla corresponde a qual número clicando no ícone indicado como o ponto 2 na imagem Verifique se a sua montagem está igual à imagem abaixo 3º Passo Vamos inserir o Codificador de Prioridade Esse codificador mostra na sua saída a maior entrada selecionada Para inserilo siga a sequência numerada de cliques indicada na figura Depois ligue as outras 7 teclas no codificador conforme a figura 4º Passo Insira a entrada de Enable no codificador de prioridade Para isso siga a sequência numerada de cliques na imagem e verifique se a sua montagem está igual a da imagem 5º Passo Agora vamos inserir a saída Esta saída vai exibir o valor binário de 0 a 7 8 possibilidades dependendo de qual entrada estiver habilitada ele sempre exibirá a de valor mais alto Para inserir a saída siga a sequência numerada de cliques indicada na imagem 6º Passo Agora vamos simular o funcionamento do codificador de prioridade Para isso siga a sequência indicada de cliques Preencha a tabela abaixo com entradas e saídas do codificador de Prioridade Enable Tecla Acionada Saída 0 Tecla de 1 a 8 acionada 1 Nenhuma tecla acionada 1 1 000 1 2 1 3 1 4 1 5 1 6 1 7 Note que a primeira tecla é ligada na entrada 0 o codificador tem entradas de 0 a 7 então a saída exibe o valor 0 em binário 000 mesmo que a primeira tecla esteja acionada E 8ª tecla exibirá a saída 7 em binário na saída 111 7º Passo Iniciaremos agora a inserção do decodificador Para executar este passo siga a sequência de cliques onde você vai adicionar o decodificador no circuito clique 1 e 2 no clique 3 você vai definir quantos bits ele receberá na entrada o mesmos 3 bits de saída do Codificador de Prioridade Nos cliques de 4 a 7 são feitas as conexões do circuito 8º Passo Neste passo vamos inserir as saídas do decodificador Para inserilas siga a sequencia de cliques da imagem e repita para as saídas 1 a 7 9º Passo Neste passo vamos testar todas as possibilidades do circuito digital que já está pronto Clique em todas as teclas de entrada e perceba quais saídas acionam e complete a tabela Enable Tecla Acionada Saída do Decodificador 0 Tecla de 1 a 8 acionada 1 Nenhuma tecla acionada 1 1 1 2 1 3 1 4 1 5 1 6 1 7 10º Passo Faça um resumo explicando suscintamente a lógica de funcionamento do circuito escolha 3 combinações de chaves diferentes e explique o resultado obtido na saída Checklist Codificador de prioriade funcionando pelas entradas e saídas Decodificador funcionando pelas entradas do codificador e pelas saídas do decodificador Tabelas preenchidas através da simulação Prints do circuito montado com 3 combinações diferentes de chaves e sua respectiva explicação 10º Passo escrito RESULTADOS Resultados de Aprendizagem Utilizar o Logisim para executar o codificador de prioriade funcionando pelas entradas e saídas 11 ROTEIRO DE AULA PRÁTICA 2 NOME DA DISCIPLINA SISTEMAS DIGITAIS E MICROPROCESSADORES Unidade CIRCUITOS LÓGICOS COMBINACIONAL E SEQUENCIAL Seção FLIPFLOPS E CIRCUITOS CORRELATOS OBJETIVOS Definição dos objetivos da aula prática Projetar simular e montar circuitos lógicos INFRAESTRUTURA Instalações Materiais de consumo Equipamentos LABORATÓRIO DE INFORMÁTICA Equipamentos Desktop Engenharia Positivo Master D3400 1 para cada 2 alunos SOLUÇÃO DIGITAL LOGISIM Simulador LogiSim Software para simulação digital de circuitos lógicos EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI Não se aplica PROCEDIMENTOS PRÁTICOS ProcedimentoAtividade nº 1 Físico e Virtual Atividade proposta Aprendendo a usar a ferramenta Logisim Contador binário de 4 bits e contador de década BCD Procedimentos para a realização da atividade Exercício 1 O Logisim permite projetar e simular circuitos digitais Foi planejado como ferramenta educacional para ajudar você a aprender como os circuitos funcionam Para praticar o uso do Logisim vamos construir um circuito com uma porta NAND Figura 1a e verificar sua equivalência com a porta OR negativa Figura 1b Figura 1 Circuito lógico a porta NAND b porta OR negativa Após baixar e executar o Logisim o primeiro passo será acrescentar as portas lógicas no ambiente de simulação Para isso clique na pasta Portas Figura 2a assim a lista de portas disponíveis será mostrada Figura 2b Figura 2 Tela inicial do Logisim Clique na porta NAND a quinta da lista e em seguida clicar na área de edição onde você desejar que a primeira porta NAND deva ficar Certifiquese de deixar espaço sufi ciente para outras coisas do lado esquerdo Em seguida clicar na porta OR a quarta da lista e a coloque um pouco mais abaixo adicione duas portas inversoras em frente de cada uma das entradas da porta OR Figura 3 Figura 3 Posicionamento das portas Observar que haverá cinco pontos do lado esquerdo de cada porta Esses serão os pontos onde os fios poderão ser conectados Acontece que nós iremos usar apenas dois deles para o nosso circuito mas para outros circuitos você poderá achar mais útil ter mais de duas conexões em uma porta lógica Agora queremos adicionar as duas entradas A e B no diagrama Selecione uma entrada e coloque os pinos voltados para baixo utilizando o atributo posição da entrada Você também deverá colocar uma saída junto a cada uma das portas usando Figura 4 Figura 4 Posicionamento das entradas e saídas Depois de ter todos os componentes colocados na área de desenho tela você estará pronto para começar a adicionar as conexões Selecionar a ferramenta Editar Quando o cursor estiver sobre um ponto que receberá uma extremidade do fio um pequeno círculo verde será desenhado em torno dele Pressione o botão do mouse e arraste até onde você quiser que a outra extremidade do fio vá As conexões fios em Logisim deverão ser horizontais ou verticais Figura 5 Figura 5 Conexão entre as portas O passo final será testar o circuito para garantir que ele realmente realiza o que pretendemos O Logisim já está simulando o circuito Se olharmos atentamente para o nosso circuito da Figura 5 veremos que para as entradas A 0 e B 0 tanto a saída da porta NAND quanto a da porta OR negativa estão no nível lógico 1 Agora tentaremos outra combinação das entradas Selecione a ferramenta Testar Poke e altere as entradas clicando sobre elas Cada vez que fizer isso sobre a entrada seu valor será alternado Quando você mudar o valor de entrada o Logisim irá mostrarlhe que os valores seguirão pelos fios marcandoos com a cor verdeclaro para indicar um valor 1 ou verde escuro quase preto para indicar um valor 0 Com isso preencha a tabela verdade para as duas portas em questão Lembrando que uma maneira de verificar a equivalência entre dois circuitos lógicos é verificar se suas tabelas verdade são iguais Agora que o já sabemos como usar o Logisim vamos projetar e simular um circuito meio somador Projete e simule um circuito lógico para um meio somador binário com duas entradas A e B e duas saídas Uma para o bit da soma S e outra para o bit vai um C como indicado na Figura 6 Figura 6 Circuito meio somador de 2 bits Para iniciar o seu projeto preencha a tabela verdade para cada uma das saídas de acordo com as regras da aritmética binária para a soma Feito isso use as portas lógicas que você já conhece AND OR NOT NAND NOR XOR e XNOR e projete o circuito lógico do meio somador Dica o circuito do meio somador é bastante simples e pode ser executado apenas com duas portas lógicas Uma vez que o seu circuito foi projetado simule ele na ferramenta Logisim e verifique se ele executa exatamente as operações esperadas na tabela verdade do meio somador Exercício 2 Os contadores são circuitos lógicos projetados encadeando flipflops eles podem ser classificados como assíncronos ou síncronos de acordo com a forma que eles recebem os pulsos de o clock Nos contadores assíncronos o primeiro flipflop recebe um sinal de clock externo e cada flip flop subsequente recebe o clock através da saída do flipflop anterior Nos contadores síncronos o mesmo sinal de clock é fornecido para todos os flipflops de forma que eles recebem o clock simultaneamente Projete um contador de 4 bits assíncrono e simule no Logisim Os contadores também podem ser projetados de modo a ter um número de estados menor em sua sequência que o valor máximo de Esse tipo de sequência é chamada de sequência truncada Para se obter uma sequência truncada é preciso forcar que o contador recicle seu estado antes que ele passe por todos os estados possíveis e isso pode ser feito de forma simples utilizando um contador assíncrono Projete um contador de década BCD que conta de 0 0000 até 9 1001 Checklist Faça o download do Logisim Preencha a tabela verdade para o meio somador verifique se ela está realmente correta Essa etapa é fundamental para o projeto de um circuito lógico Revise as tabelas verdade das portas lógicas que você conhece a resposta para o seu projeto está nestas portas Execute a sua simulação e verifique se o circuito se comportou como esperado Explore o ambiente do Logisim os flipflops estão localizados na pasta Memória e o sinal de clock está localizado na pasta conexão Simule os pulsos de clock clicando com a ferramenta testar RESULTADOS Resultados de Aprendizagem Para essa aula prática esperase que o aluno se familiarize com a ferramenta Logisim e seja capaz de projetar e simular circuitos lógicos simples com poucas portas lógicas Além disso se espera que o aluno consiga simular circuitos contadores síncronos e assíncronos ROTEIRO DE AULA PRÁTICA 3 NOME DA DISCIPLINA SISTEMAS DIGITAIS E MICROPROCESSADORES Unidade PROGRAMAÇÃO DE MICROPROCESSADORES E MICROCONTROLADORES Seção MICROCONTROLADOR ARDUINO OBJETIVOS Definição dos objetivos da aula prática Compreender o funcionamento de um microcontrolador realizando a programação de algoritmos básicos em um Arduino INFRAESTRUTURA Instalações Materiais de consumo Equipamentos SISTEMAS ELÉTRICOS ELETRÔNICOS E AUTOMAÇÃO Materiais de consumo ARDUINO UNO R3 CABO USB 1 por grupo KIT JUMPER MACHOMACHO PARA PROTOBOARD 1 por grupo LED VERMELHO 5 MM 5 por grupo POTENCIOMETRO 0 100 OHM 1 por grupo PROTO BOARD 2420 PONTOS 1 por grupo RESISTOR 220 OHM 5 por grupo SOLUÇÃO DIGITAL ARDUINO SOFTWARE IDE Software Arduino Software IDE ambiente de desenvolvimento integrado IDE para a plataforma Arduino permitindo a criação de programas para controlar dispositivos eletrônicos TINKERCAD Software Programa de modelagem tridimensional online gratuito que roda em um navegador da web conhecido por sua simplicidade e facilidade de uso EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI Não se aplica PROCEDIMENTOS PRÁTICOS ProcedimentoAtividade nº 1 Somente Físico Atividade proposta Conhecendo o Arduino Sistemas de controle simples Procedimentos para a realização da atividade 11 Crie um programa para Arduino Uno que repete qualquer caractere recebido pela porta serial semelhante a um eco Envie seu programa para o Arduino e teste seu funcionamento 12 Crie um programa para Arduino Uno que faz com que 5 LEDs pisquem sequencialmente de forma cíclica simulando um registrador de deslocamento Nesse programa cada um dos LEDs deverá ficar aceso por 200 ms um de cada vez Portanto o LED 1 acende passado o tempo ele se apaga e o LED 2 é aceso e assim sucessivamente Envie seu programa para o Arduino e teste seu funcionamento ligando 5 LEDs nos pinos de 8 a 12 do Arduino Não se esqueça de colocar um resistor de 220 O em série com cada LED para limitar a corrente 21 Crie um programa para Arduino Uno para o controle da luminosidade de um LED ligado no pino 10 por meio de um potenciômetro com seu pino central ligado no pino A0 e suas extremidades ligadas em 5 V e GND Conforme mudança da posição do potenciômetro a luminosidade do LED deve aumentar ou diminuir Por exemplo se ele estiver na metade de sua excursão o LED deverá estar com 50 de sua luminosidade Envie seu programa para o Arduino e teste seu funcionamento Não se esqueça de colocar um resistor de 220 O em série com o LED para limitar a corrente 22 Crie um programa para Arduino Uno para o controle da luminosidade de um LED ligado no pino 10 por meio da comunicação serial O comando a ser enviado deverá ser em ASCII sempre com 3 caracteres entre 000 e 255 indicando do brilho do LED mínimo e máximo respectivamente Envie seu programa para o Arduino e teste seu funcionamento Não se esqueça de colocar um resistor de 220 O em série com o LED para limitar a corrente Checklist Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários para que seja possível testar os algoritmos elaborados Envie o programa para o arduino e realize diversos testes de funcionamento Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários para que seja possível testar os algoritmos elaborados Envie o programa para o arduino e realize diversos testes de funcionamento ProcedimentoAtividade nº 2 Somente Virtual Atividade proposta A proposta da atividade é desenvolver o conhecimento para aplicar o Arduino a um projeto real utilizando a linguagem de programação C desenvolvendo um projeto completo Monitor de Umidade do Solo aplica os conhecimentos adquiridos para utilizar o Arduino e suas saídas Digitais e analógicas abrindo um mundo de possibilidades Procedimentos para a realização da atividade Para realizar o desenvolvimento Monitor de Umidade do Solo com o Arduino vamos precisar separar os componentes necessários para a construção do circuito separando seus componentes e realizando suas conexões e por fim vamos construir o algoritmo de programação para realizar a operação Todo esse processo deve ser realizado no Tinkercad criando um novo projeto do tipo Circuito 1 Componentes para o Projeto Para construir este projeto precisamos dos seguintes componentes 1 ARDUINO 1 PROTOBOARD 5 LEDS sendo 1 VERMELHO 1 AMARELO 1 LARANJA 1 AZUL e 1 VERDE 5 resistores de 220 Ohms MÓDULO SENSOR DE UMIDADE DO SOLO Separeos para realizar as conexões 2 Conexões a serem realizadas a Conecte as saídas 91011 12 e 13 ao ânodo do LED b Crie a conexão do catodo dos LEDS para os Resistor de 220 Ohms c Conecte o outro terminal dos Resistores ao GND Negativo do Arduino d Crie as conexões de forma organizada e limpa e Conecte o Pino VCC do Sensor de Umidade de Solo na porta A0 f Conecte o Pino GND do Sensor de Umidade de Solo no GND do Arduino g Conecte o Pino SIG do Sensor de Umidade na Porta A1 3 Algoritmo na linguagem C Ao iniciar o desenvolvimento de código texto você terá as duas funções padrões do Arduino a Setup e a Loop a Defina as variáveis antes do bloco void setup Crie uma variável para armazenar o valor do Sinal de Umidade chamado umidade com valor 0 Crie a variável ledvermelho com a porta 13 Crie a variável ledamarelo com a porta 12 Crie a variável ledlaranja com a porta 11 Crie a variável ledazul com a porta 10 Crie a variável ledverde com a porta 9 Crie uma variável pinvcc com a porta A0 Crie uma variável pinsensor com a porta A1 As variáveis com nome inicial led realizará o controle para acender cada LED à medida que o valor da variável umidade for alterado já o pinvcc e pinsensor serão os de controle do sensor de umidade b No bloco void setup crie as definições para as portas utilizeas da seguinte forma Defina as variáveis com inicio led como saída Defina o pinvcc como saída Defina o pinsensor como entrada Defina Serialbegin9600 para que possamos verificar no meio do processo os valores gerados pelo sensor de umidade c E por fim construa a execução das ações do seu código dentro do bloco void loop utilizando as funções digitais e analógica do arduino Inicie o código aplicando tensão no pinvcc Aplique a variável umidade criada os valores do pinsensor com a função AnalogRead Crie uma linha com o código Serialprintlnumidade para verificar os valores da variável umidade no monitor serial Defina que todos os leds estarão desligados ainda neste momento Crie os blocos de verificação para acender cada led em um determinado parâmetro utilize as seguintes regras Se menor que 200 acenderá o ledvermelho Se menor que 400 acenderá o ledamarelo Se menor que 600 acenderá o ledlaranja Se menor que 800 acenderá o ledazul Se for diferente destes valores acenda o ledverde Após seguir todas as etapas execute a simulação para ver a operação O Projeto deve ligar o ledvermelho quando a variável umidade estiver menor que 200 e a medida que é aplicado os valores controlados pela barra de controle no simulador do sensor de umidade irá acender os leds na sequência de amarelo laranja azul e verde O circuito será um loop infinito e manterá a luz acesa conforme os valores recebidos na variável umidade Checklist Realizar as separações dos componentes necessários para o projeto Realizar as conexões do circuito eletrônico Realizar a elaboração do código de programação C Executar o projeto Verificar se o projeto segue o escopo planejando Resultados de Aprendizagem RESULTADOS Compreender como é o processo de desenvolvimento de firmware para microcontroladores utilizando a plataforma Arduino para o projeto de sistemas de controle variados que podem ser reproduzidos facilmente utilizando todas as funcionalidades existentes em um microcontrolador ROTEIRO DE AULA PRÁTICA 4 NOME DA DISCIPLINA SISTEMAS DIGITAIS E MICROPROCESSADORES Unidade PROGRAMAÇÃO DE MICROPROCESSADORES E MICROCONTROLADORES Seção NOVAS ARQUITETURAS E TENDÊNCIAS OBJETIVOS Definição dos objetivos da aula prática Compreender o funcionamento de um microcontrolador realizando a programação de algoritmos em um Arduino INFRAESTRUTURA Instalações Materiais de consumo Equipamentos SISTEMAS ELÉTRICOS ELETRÔNICOS E AUTOMAÇÃO Materiais de consumo ARDUINO UNO R3 CABO USB 1 por grupo KIT JUMPER MACHOMACHO PARA PROTOBOARD 1 por grupo MODULO DS1302 RELOGIO TEMPO REAL ARDUINO 1 por grupo PROTO BOARD 2420 PONTOS 1 por grupo RESISTOR 1000000 OHM 1 por grupo SENSOR DHT11 DE TEMPERATURA E UMIDADE PARA ARDUINO 1 por grupo SOLUÇÃO DIGITAL ARDUINO SOFTWARE IDE Software Arduino Software IDE ambiente de desenvolvimento integrado IDE para a plataforma Arduino permitindo a criação de programas para controlar dispositivos eletrônicos EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI Não se aplica PROCEDIMENTOS PRÁTICOS ProcedimentoAtividade nº 1 Somente Físico Atividade proposta Relógio em tempo real e sensor de temperatura e umidade Estação meteorológica Procedimentos para a realização da atividade 1 Crie um programa para Arduino Uno que realiza a leitura de data e hora do módulo relógio em tempo real DS1302 e a envia na serial juntamente com a temperatura e umidade medidas pelo sensor DHT11 a cada 1 minuto Saiba que o sensor demora alguns segundos para realizar a medida então leia a data e hora do módulo para fazer a amostragem com precisão 1 min Não utilize a função delay Envie seu programa para o Arduino e teste seu funcionamento Não se esqueça de colocar um resistor de pullup no pino de dados do DHT11 2 Crie um programa para Arduino Uno que simula uma estação meteorológica utilizando o módulo relógio em tempo real DS1302 e o sensor de temperatura e umidade DHT11 A cada 1 min deve ser feita uma medida de umidade e temperatura que deve ser enviada via porta serial juntamente com data e hora da medida Saiba que o sensor demora alguns segundos para realizar a medida então leia a data e hora do módulo para fazer a amostragem com precisão 1 m Não utilize a função delay Salve os dados de data e hora na memória EEPROM do Arduino juntamente com o valor de temperatura e umidade Para a data utilize 1 byte para o dia um para o mês um para o ano considere apenas os dígitos decimais um para hora e um para os minutos totalizando 5 bytes Utilize mais dois bytes um para a temperatura em ºC e um para a umidade em desconsiderando as casas decimais Faça uma lógica para evitar o estouro da EEPROM e faça com que ao receber o caractere L via serial o microcontrolador retorne todos os dados armazenados No momento que os dados forem lidos eles podem ser apagados ou escritos novos dados sobre eles Envie seu programa para o Arduino e teste seu funcionamento Obs A memória EEPROM do Arduino Uno possui 1024 posições 0 a 1023 de 1 byte cada Checklist Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários para que seja possível testar os algoritmos elaborados Envie o programa para o arduino e realize diversos testes de funcionamento Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários para que seja possível testar os algoritmos elaborados Envie o programa para o arduino e realize diversos testes de funcionamento RESULTADOS Resultados de Aprendizagem Compreender como é o processo de desenvolvimento de firmware para microcontroladores utilizando a plataforma Arduino para o projeto de sistemas de controle variados que podem ser reproduzidos facilmente utilizando todas as funcionalidades existentes em um microcontrolador ROTEIRO DE AULA PRÁTICA 5 NOME DA DISCIPLINA SISTEMAS DIGITAIS E MICROPROCESSADORES Unidade PROGRAMAÇÃO DE MICROPROCESSADORES E MICROCONTROLADORES Seção APLICAÇÕES PARA PROCESSADORES ARM OBJETIVOS Definição dos objetivos da aula prática Compreender o funcionamento de um microcontrolador realizando a programação de algoritmos em um Arduino INFRAESTRUTURA Instalações Materiais de consumo Equipamentos SISTEMAS ELÉTRICOS ELETRÔNICOS E AUTOMAÇÃO Materiais de consumo ARDUINO UNO R3 CABO USB 1 por grupo KIT JUMPER MACHOMACHO PARA PROTOBOARD 1 por grupo PROTO BOARD 2420 PONTOS 1 por grupo RESISTOR 220 OHM 3 por grupo LED RGB 5 MM 1 por grupo SENSOR HCSR04 MEDIDOR DE DISTÂNCIA POR ULTRASOM PARA ARDUINO 1 por grupo SOLUÇÃO DIGITAL 2 ARDUINO SOFTWARE IDE Software Arduino Software IDE ambiente de desenvolvimento integrado IDE para a plataforma Arduino permitindo a criação de programas para controlar dispositivos eletrônicos TINKERCAD Software Programa de modelagem tridimensional online gratuito que roda em um navegador da web conhecido por sua simplicidade e facilidade de uso EQUIPAMENTO DE PROTEÇÃO INDIVIDUAL EPI Não se aplica PROCEDIMENTOS PRÁTICOS ProcedimentoAtividade nº 1 Somente Físico Atividade proposta Sensor ultrassom com LED RGB Sensor ultrassom com timer Procedimentos para a realização da atividade 1 Crie um programa para Arduino Uno que indica por meio de um LED RGB a distância medida pelo sensor ultrassônico Para esse experimento quando um objeto estiver a mais de 50 cm a cor do LED deve ser totalmente verde Com a redução da distância a cor do LED deve ir ficando amarela até a distância de 25 cm quando se torna totalmente amarela A partir desse ponto o LED deve ir se tornando vermelho com a aproximação do objeto e se tornar totalmente vermelho quando a distância for inferior a 5 cm Envie seu programa para o Arduino e teste seu funcionamento Para ligar o LED RGB utilize os pinos 9 10 e 11 do Arduino que possuem saídas PWM Não se esqueça de colocar um resistor em série com cada cor do LED para limitar a corrente que passa por ele 2 Crie um programa para Arduino Uno que realiza a leitura da distância medida pelo sensor ultrassônico e a envie via serial a cada 1 s 3 A medida deve estar em centímetros Programe também o LED ligado ao pino 13 do Arduino para piscar com velocidade proporcional a distância Assim quando a distância medida pelo sensor for de 50 cm ou mais o LED deverá mudar seu estado a cada 1 s Com a redução da distância esse período deve mudar proporcionalmente Perceba que você deve ter duas bases de tempo nesse programa uma para amostragem e envio da distância via serial e outra para o LED para isso utilize uma interrupção do timer para te ajudar Envie seu programa para o Arduino e teste seu funcionamento Checklist Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários para que seja possível testar os algoritmos elaborados Envie o programa para o arduino e realize diversos testes de funcionamento ProcedimentoAtividade nº 1 Somente Virtual Atividade proposta Sensor ultrassom com LED RGB Procedimentos para a realização da atividade Para realizar essa simulação será necessário criar um novo projeto do tipo Circuito no Tinkercad Feito isso adicione os seguintes elementos na montagem 1 Arduino Uno R3 1 Placa de ensaio pequena 1 LED RGB 3 Resistores de 220 Ohms 1 Sensor de distância ultrassônico Adicionados o elementos posicione os resistores LED e sensor na protoboard corretamente realizando as ligações necessárias no Arduino Para ligar o LED RGB utilize os pinos 9 10 e 11 do Arduino que possuem saídas PWM O sinal do sensor de distância pode ser ligado no pino de sua preferência evitando os pinos 0 1 e 13 além dos já utilizados para o LED O procedimento a ser realizado é o seguinte Crie um programa para Arduino Uno que indica por meio de um LED RGB a distância medida pelo sensor ultrassônico Para esse experimento quando um objeto estiver a mais de 50 cm a cor do LED deve ser totalmente verde Com a redução da distância a cor do LED deve ir ficando amarela até a distância de 25 cm quando se torna totalmente amarela A partir desse ponto o LED deve ir se tornando vermelho com a aproximação do objeto e se tornar totalmente vermelho quando a distância for inferior a 5 cm Elaborado o código realize a simulação no Tinkercad clicando sobre o sensor ultrassônico para ajustar a distância que ele estará medindo Não se esqueça de colocar um resistor de 220 Ohms em série com cada cor do LED para limitar a corrente que passa por ele Para que o circuito funcione no Tinkercad faça uma pesqusia sobre como fazer que o sensor de distância ultrassônico funcione Com isso será possivel elaborar a lógica necessária para que o sistema funcione como o desejado Checklist Realize a elaboração dos códigos conforme orientado Monte os circuitos necessários no simulador para que seja possível testar os algoritmos elaborados Realize a simulação a fim de verificar o funcionamento da montagem RESULTADOS Resultados de Aprendizagem Compreender como é o processo de desenvolvimento de firmware para microcontroladores utilizando a plataforma Arduino para o projeto de sistemas de controle variados que podem ser reproduzidos facilmente utilizando todas as funcionalidades existentes em um microcontrolador UNIVERSIDADE PITÁGORAS UNOPAR ANHANGUERA CURSO NOME DO ALUNO ATIVIDADE PRÁTICA SISTEMAS DIGITAIS E MICROPROCESSADORES CIDADE 2025 ATIVIDADE PRÁTICA SISTEMAS DIGITAIS E MICROPROCESSADORES Trabalho apresentado à Universidade como requisito parcial para a obtenção de média semestral nas disciplinas norteadoras do semestre letivo Tutor a SUMÁRIO 1 INTRODUÇÃO5 2 ATIVIDADE PRÁTICA 17 2 ATIVIDADE PRÁTICA 218 3 ATIVIDADE PRÁTICA 328 4 ATIVIDADE PRÁTICA 443 5 ATIVIDADE PRÁTICA 551 CONCLUSÃO69 REFERÊNCIAS BIBLIOGRÁFICAS71 1 1 INTRODUÇÃO O presente portfólio descreve uma série de atividades práticas realizadas no âmbito do curso de Sistemas Digitais e Microprocessadores visando proporcionar uma compreensão aprofundada dos conceitos fundamentais relacionados a circuitos digitais e microcontroladores O conjunto de atividades abrange desde a implementação de circuitos simples até a programação avançada de microcontroladores Arduino Na Aula Prática 1 se projetou e implementou um circuito capaz de registrar a produção de uma fábrica por meio de 8 teclas cada uma representando uma quantidade específica de itens produzidos Utilizando o simulador Logisim explorase o uso de entradas e saídas bem como os conceitos de codificador de prioridade e decodificador O objetivo principal foi simular o funcionamento do circuito digital e compreender seu impacto na produção A Aula Prática 2 expandiu o escopo concentrandose no projeto simulação e montagem de circuitos lógicos mais complexos Se utilizou a ferramenta Logisim para criar um contador binário de 4 bits e um contador de década BCD consolidando habilidades na manipulação de circuitos digitais A Aula Prática 3 introduziu ao universo dos microcontroladores com foco no Arduino Além de compreender o funcionamento básico do Arduino programouse algoritmos simples iniciando uma jornada no desenvolvimento de sistemas de controle A Aula Prática 4 aprofundou ainda mais o conhecimento em microcontroladores abordando a programação de algoritmos para criar um relógio em tempo real e uma estação meteorológica integrando sensores de temperatura e umidade Por fim a Aula Prática 5 explorou a aplicação prática de microcontroladores Arduino em cenários específicos como a implementação de um sensor ultrassom com LED RGB e um sensor ultrassom com timer Ao longo dessas atividades adotase uma abordagem prática e handson consolidando conceitos teóricos aprendidos em sala de aula O portfólio reflete não 2 apenas a evolução das habilidades técnicas mas também a capacidade de resolver problemas complexos no contexto dos sistemas digitais e microprocessadores 2 ATIVIDADE PRÁTICA 1 A execução da primeira atividade prática no simulador Logisim envolveu uma série de passos cruciais para a implementação bemsucedida de um circuito destinado a registrar a produção de uma fábrica por meio de 8 teclas Abaixo estão detalhados os passos seguidos durante essa atividade Abertura do Software Simulador Logisim Inicialmente abriuse o software simulador Logisim a plataforma escolhida para a simulação de circuitos digitais Inserção de Teclas e Rótulos Para representar as 8 teclas correspondentes à produção foram inseridas teclas alinhadas e rotuladas adequadamente para indicar qual número cada tecla representava Figura 1 Inserção de Teclas e Rótulos Fonte O Autor Inserção do Codificador de Prioridade 3 Foi adicionado o Codificador de Prioridade ao circuito um componente que ao receber várias entradas exibe na saída o valor da entrada mais alta As outras 7 teclas foram conectadas ao codificador Inserção da Entrada de Enable Uma entrada de Enable foi incorporada ao codificador de prioridade para habilitar seu funcionamento Figura 2 Inserção da Entrada Fonte O Autor Inserção da Saída Uma saída foi inserida para exibir o valor binário correspondente à entrada habilitada de 0 a 7 4 Figura 3 Inserção da Saída Fonte O Autor Simulação do Codificador de Prioridade Foi realizada a simulação do codificador de prioridade preenchendo uma tabela com entradas e saídas Observouse que a saída representava o valor binário mais alto da entrada habilitada Conforme tabela abaixo Tabela 1 Simulação Codificador Enable Tecla Acionada Saída 0 Tecla de 1 a 8 Acionada 111 1 Nenhuma Tecla Acionada xxx 1 1 000 1 2 001 1 3 010 1 4 011 1 5 100 1 6 101 1 7 110 Fonte O Autor 5 Inserção do Decodificador Foi inserido o decodificador no circuito definindo o número de bits na entrada e estabelecendo as conexões necessárias Figura 4 Inserção do Decodificador Fonte O Autor Inserção das Saídas do Decodificador As saídas do decodificador foram incorporadas ao circuito Figura 5 Saídas do Decodificador Fonte O Autor 6 Testes de Possibilidades Foram realizados testes abrangentes para todas as possibilidades do circuito registrando quais saídas eram acionadas em diferentes combinações de teclas Conforme tabela abaixo Tabela 2 Simulação Decodificador Enable Tecla Acionada Saída 0 Tecla de 1 a 8 Acionada 8 1 Nenhuma Tecla Acionada xxx 1 1 1 1 2 2 1 3 3 1 4 4 1 5 5 1 6 6 1 7 7 1 8 8 Fonte O Autor Resumo da Lógica de Funcionamento O circuito apresenta um codificador de prioridade seguido por um decodificador O codificador de prioridade tem a função de identificar a tecla de maior prioridade que está acionada ligada e gerar uma saída binária correspondente O decodificador por sua vez recebe essa saída binária e a converte de volta para a representação decimal indicando qual tecla foi acionada A lógica de funcionamento pode ser resumida da seguinte forma Codificador de Prioridade O circuito tem 8 entradas cada uma representando uma tecla numerada de 1 a 8 O codificador de prioridade identifica qual tecla tem a maior prioridade entre as acionadas habilitadas A saída do codificador fornece a representação binária do número da tecla de maior prioridade 7 Decodificador O decodificador recebe a saída binária do codificador Ele converte a representação binária de volta para decimal indicando qual tecla foi acionada Exemplos de Comportamento Combinação 1 Enable 1 Habilitado Tecla Acionada 3 Saída do Codificador 010 correspondente a 3 em binário Saída do Decodificador 3 Resultado A tecla 3 está acionada e a saída correta é 3 Combinação 2 Enable 1 Habilitado Tecla Acionada 1 Saída do Codificador 000 correspondente a 1 em binário Saída do Decodificador 1 decimal Resultado A tecla 1 está acionada e a saída correta é 1 Combinação 3 Enable 1 Habilitado Tecla Acionada 7 Saída do Codificador 110 correspondente a 6 em binário Saída do Decodificador 7 Resultado A tecla 7 está acionada e a saída correta é 7 8 2 ATIVIDADE PRÁTICA 2 A segunda atividade prática envolveu a utilização do software Logisim para projetar e simular circuitos lógicos mais complexos com destaque para a implementação de um meio somador binário e um contador assíncrono de 4 bits A seguir estão detalhados os passos realizados durante essa atividade 1 Implementação do Meio Somador Inserção de Componentes Inicialmente foi necessário adicionar portas lógicas ao ambiente de simulação incluindo portas NAND e OR bem como duas portas inversoras As entradas A e B foram inseridas e as portas foram devidamente posicionadas Figura 6 Portas Fonte O Autor Conexões e Testes Foram realizadas as conexões entre os componentes considerando a lógica do meio somador Testes foram efetuados alternando os valores das entradas A e B para observar as saídas da porta NAND e OR 9 Figura 7 Conexões Fonte O Autor Os resultados foram registrados em uma tabela verdade a seguir Tabela 3 Tabela Verdade da Porta NAND A B S 0 0 1 0 1 1 1 0 1 1 1 0 Fonte O Autor Tabela 4 Tabela Verdade da Porta OR Negativa A B S 0 0 1 0 1 1 1 0 1 1 1 0 Fonte O Autor 10 Projeto do Circuito Meio Somador Utilizando as portas lógicas disponíveis no Logisim foi projetado o circuito lógico para um meio somador binário Figura 8 Meio Somador Fonte O Autor Simulação e Verificação O circuito projetado foi simulado no Logisim para verificar se ele executava corretamente as operações esperadas conforme a tabela verdade do meio somador As entradas foram alternadas e as saídas foram analisadas para garantir a precisão do circuito conforme tabelas abaixo Tabela 5 Tabela Verdade Meio Somador Entradas Saídas A B S Co 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Fonte O Autor 11 2 Projeto do Contador Assíncrono de 4 Bits Entendimento dos Contadores Assíncronos No conceito de contadores assíncronos onde o primeiro flipflop recebe um sinal de clock externo e cada flipflop subsequente recebe o clock através da saída do anterior Projeto do Contador de 4 Bits Assíncrono Com base no conhecimento adquirido sobre contadores assíncronos foi projetado um contador de 4 bits Flipflops foram encadeados e as conexões foram estabelecidas conforme as características desse tipo de contador Figura 9 Contador de 4 Bits Assíncrono Fonte O Autor 3 Projeto do Contador de Década BCD Entendimento dos Contadores de Década BCD No conceito de contadores de década BCD que contam de 0 0000 até 9 1001 Esses contadores podem ser projetados para ter uma sequência truncada Projeto do Contador de Década BCD Foi projetado um contador de década BCD considerando a sequência de 0 a 9 Flipflops foram utilizados para representar cada dígito e as conexões foram estabelecidas de acordo com a lógica BCD 12 Figura 10 Contador de Década Fonte O Autor 13 3 ATIVIDADE PRÁTICA 3 Etapa 1 Na primeira etapa da Atividade 3 foram desenvolvidos programas para Arduino Uno utilizando a plataforma Arduino IDE com o objetivo de realizar operações específicas Abaixo estão os detalhes dos passos realizados para cada parte da atividade Parte 1 Programa de Eco para Arduino Uno Desenvolvimento do Programa Foi criado um programa que implementa a funcionalidade de eco ou seja repete qualquer caractere recebido pela porta serial O código incluiu a leitura de caracteres da porta serial e a retransmissão desses caracteres de volta para a porta O seguinte código foi desenvolvido e utilizado void setup Serialbegin9600 Inicializa a comunicação serial com taxa de 9600 bps void loop if Serialavailable 0 Verifica se há dados disponíveis na porta serial char receivedChar Serialread Lê o caractere recebido SerialprintVocê digitou Envia uma mensagem indicando o caractere recebido SerialprintlnreceivedChar Envia o caractere recebido de volta pela porta serial Envio e Teste 14 O programa foi enviado para o Arduino Uno através da Arduino IDE Após o upload do programa o Arduino foi conectado ao computador e a comunicação serial foi estabelecida Testes foram realizados enviando caracteres pela porta serial e o Arduino respondeu repetindo os caracteres recebidos Parte 2 Programa de Piscar LEDs em Sequência para Arduino Uno Desenvolvimento do Programa Foi desenvolvido um programa que simula um registrador de deslocamento com 5 LEDs Cada LED acende sequencialmente por 200 ms de forma cíclica O código incluiu a configuração dos pinos dos LEDs a lógica de acendimento sequencial e o uso de delay para controlar o tempo de cada LED aceso O seguinte código foi desenvolvido e utilizado const int numLEDs 5 Número de LEDs const int pinLEDs 8 9 10 11 12 Pinos dos LEDs const int tempoAceso 200 Tempo em milissegundos que cada LED ficará aceso void setup for int i 0 i numLEDs i pinModepinLEDsi OUTPUT Configura os pinos dos LEDs como saída void loop for int i 0 i numLEDs i digitalWritepinLEDsi HIGH Acende o LED atual delaytempoAceso Aguarda o tempo configurado digitalWritepinLEDsi LOW Apaga o LED atual Montagem e Teste 15 Cinco LEDs foram conectados aos pinos de 8 a 12 do Arduino com resistores de 220 Ω em série para limitar a corrente O programa foi enviado para o Arduino e os LEDs foram observados piscando de forma sequencial conforme a lógica implementada Parte 3 Controle de Luminosidade de um LED com Potenciômetro Desenvolvimento do Programa Foi criado um programa que controla a luminosidade de um LED conectado ao pino 10 do Arduino por meio de um potenciômetro O código incluiu a leitura da posição do potenciômetro no pino A0 e o ajuste da luminosidade do LED proporcionalmente à posição do potenciômetro O seguinte código foi desenvolvido e utilizado const int pinoPotenciometro A0 Pino analógico onde o potenciômetro está conectado const int pinoLED 10 Pino digital onde o LED está conectado void setup pinModepinoLED OUTPUT Configura o pino do LED como saída void loop int valorPotenciometro analogReadpinoPotenciometro Lê o valor do potenciômetro 0 a 1023 int luminosidade mapvalorPotenciometro 0 1023 0 255 Mapeia o valor para a faixa de brilho do LED analogWritepinoLED luminosidade Define a luminosidade do LED Montagem e Teste 16 Um LED foi conectado ao pino 10 do Arduino e um potenciômetro foi conectado ao pino A0 com suas extremidades ligadas em 5V e GND Um resistor de 220 Ω foi utilizado em série com o LED O programa foi enviado para o Arduino e o teste foi realizado ajustando o potenciômetro para observar as variações na luminosidade do LED Parte 4 Controle de Luminosidade de um LED por Comunicação Serial Desenvolvimento do Programa Foi desenvolvido um programa que controla a luminosidade de um LED no pino 10 do Arduino por meio da comunicação serial O programa espera receber comandos em ASCII representando valores de brilho entre 000 e 255 A luminosidade do LED é ajustada de acordo com os valores recebidos O seguinte código foi desenvolvido e utilizado const int pinoLED 10 Pino digital onde o LED está conectado char comandoSerial4 Array para armazenar o comando recebido via serial void setup Serialbegin9600 Inicializa a comunicação serial pinModepinoLED OUTPUT Configura o pino do LED como saída void loop if Serialavailable 3 Verifica se há pelo menos 3 bytes disponíveis na serial SerialreadBytescomandoSerial 3 Lê os 3 bytes do comando comandoSerial3 0 Adiciona o caractere nulo ao final para formar uma string int luminosidade atoicomandoSerial Converte a string para um valor inteiro Limita a luminosidade entre 0 e 255 17 luminosidade constrainluminosidade 0 255 analogWritepinoLED luminosidade Define a luminosidade do LED Montagem e Teste Um LED foi conectado ao pino 10 do Arduino e a comunicação serial foi estabelecida O programa foi enviado para o Arduino e testes foram realizados enviando comandos válidos três caracteres entre 000 e 255 pela porta serial para ajustar a luminosidade do LED O resistor de 220 Ω foi utilizado em série com o LED para limitar a corrente Etapa 2 Na segunda etapa da Atividade 3 foi realizado o desenvolvimento de um projeto no Tinkercad para criar um monitor de umidade do solo com o Arduino Abaixo estão os detalhes dos passos realizados para essa atividade Parte 1 Monitor de Umidade do Solo com Arduino Componentes para o Projeto Para a construção deste projeto foram necessários os seguintes componentes 1 Arduino 1 Protoboard 5 LEDs Vermelho Amarelo Laranja Azul e Verde 5 resistores de 220 Ohms Módulo sensor de umidade do solo Conexões Realizadas 18 As seguintes conexões foram feitas no Tinkercad Conectouse as saídas 9 10 11 12 e 13 do Arduino aos ânodos dos LEDs Criouse a conexão do cátodo dos LEDs para os resistores de 220 Ohms Conectouse o outro terminal dos resistores ao GND negativo do Arduino Fezse as conexões de forma organizada e limpa Conectouse o pino VCC do sensor de umidade do solo à porta A0 Conectouse o pino GND do sensor de umidade do solo ao GND do Arduino Conectouse o pino SIG do sensor de umidade à porta A1 Algoritmo em Linguagem C Ao iniciar o desenvolvimento do código foram definidas as seguintes variáveis Variável umidade para armazenar o valor do sinal de umidade inicializada com 0 Variáveis ledvermelho ledamarelo ledlaranja ledazul e ledverde para controlar os LEDs conectados aos pinos 13 12 11 10 e 9 respectivamente Variáveis pinvcc e pinsensor para controle do sensor de umidade Configuração no Setup No bloco void setup foram realizadas as seguintes definições Definição das variáveis led como saída Definição da variável pinvcc como saída Definição da variável pinsensor como entrada Inicialização da comunicação serial com Serialbegin9600 Loop de Execução No bloco void loop as seguintes ações foram programadas Aplicação de tensão no pino VCC do sensor de umidade 19 Leitura da variável umidade usando analogReadpinsensor Impressão do valor da variável umidade no monitor serial Desligamento de todos os LEDs Verificação para acender cada LED com base nas regras fornecidas Conforme o seguinte código const int ledvermelho 13 const int ledamarelo 12 const int ledlaranja 11 const int ledazul 10 const int ledverde 9 const int pinvcc A0 const int pinsensor A1 int umidade 0 void setup pinModeledvermelho OUTPUT pinModeledamarelo OUTPUT pinModeledlaranja OUTPUT pinModeledazul OUTPUT pinModeledverde OUTPUT pinModepinvcc OUTPUT pinModepinsensor INPUT Serialbegin9600 void loop digitalWritepinvcc HIGH umidade analogReadpinsensor Serialprintlnumidade digitalWriteledvermelho LOW 20 digitalWriteledamarelo LOW digitalWriteledlaranja LOW digitalWriteledazul LOW digitalWriteledverde LOW if umidade 200 digitalWriteledvermelho HIGH else if umidade 400 digitalWriteledamarelo HIGH else if umidade 600 digitalWriteledlaranja HIGH else if umidade 800 digitalWriteledazul HIGH else digitalWriteledverde HIGH delay1000 Aguarda 1 segundo antes da próxima leitura Execução e Teste Após seguir todas as etapas a simulação foi executada para verificar a operação do projeto O circuito foi projetado para acender os LEDs na sequência vermelho amarelo laranja azul e verde dependendo dos valores controlados pela barra de simulação do sensor de umidade O circuito foi configurado como um loop infinito mantendo a luz acesa conforme os valores recebidos na variável umidade 21 4 ATIVIDADE PRÁTICA 4 Na Atividade 4 foram desenvolvidos dois programas para o Arduino Uno cada um realizando uma funcionalidade específica relacionada ao módulo relógio em tempo real DS1302 e ao sensor de temperatura e umidade DHT11 Abaixo estão os detalhes dos passos realizados para essa atividade 1 Programa para Leitura de Data Hora Temperatura e Umidade a Cada 1 Minuto Criouse um programa que realiza a leitura da data e hora do módulo DS1302 e a medida de temperatura e umidade do sensor DHT11 a cada 1 minuto Evitouse o uso da função delay para garantir a precisão da amostragem Os dados data hora temperatura e umidade foram enviados pela porta serial a cada minuto O seguinte código foi desenvolvido e utilizado include Wireh include RTClibh include DHTh define DHTPIN 2 Pino de dados do sensor DHT11 define DHTTYPE DHT11 Tipo do sensor DHT RTCDS1302 rtc DHT dhtDHTPIN DHTTYPE void setup Serialbegin9600 if rtcbegin SerialprintlnNão foi possível encontrar o módulo RTC while 1 if rtcisrunning 22 SerialprintlnConfigurando a hora rtcadjustDateTimeF DATE F TIME dhtbegin void loop DateTime now rtcnow float temperature dhtreadTemperature float humidity dhtreadHumidity SerialprintData e Hora Serialprintnowyear DEC Serialprint Serialprintnowmonth DEC Serialprint Serialprintnowday DEC Serialprint Serialprintnowhour DEC Serialprint Serialprintnowminute DEC Serialprint Serialprintlnnowsecond DEC SerialprintTemperatura Serialprinttemperature Serialprint C Umidade Serialprinthumidity Serialprintln delay60000 Aguarda 1 minuto antes da próxima leitura 23 2 Programa para Simulação de Estação Meteorológica com Armazenamento na EEPROM Desenvolveuse um programa que simula uma estação meteorológica realizando medidas de umidade e temperatura a cada 1 minuto Utilizouse o módulo DS1302 para obter a data e hora com precisão Os dados de data hora temperatura e umidade foram armazenados na EEPROM do Arduino Evitouse o uso da função delay para garantir a precisão da amostragem Implementouse uma lógica para evitar o estouro da EEPROM considerando suas limitações 1024 posições de 1 byte cada Ao receber o caractere L pela porta serial o microcontrolador retornou todos os dados armazenados possibilitando a leitura e se desejado a exclusão ou substituição dos dados O seguinte código foi desenvolvido e utilizado include Wireh include RTClibh include DHTh include EEPROMh define DHTPIN 2 Pino de dados do sensor DHT11 define DHTTYPE DHT11 Tipo do sensor DHT RTCDS1302 rtc DHT dhtDHTPIN DHTTYPE void setup Serialbegin9600 if rtcbegin SerialprintlnNão foi possível encontrar o módulo RTC while 1 if rtcisrunning SerialprintlnConfigurando a hora 24 rtcadjustDateTimeF DATE F TIME dhtbegin void loop DateTime now rtcnow float temperature dhtreadTemperature float humidity dhtreadHumidity SerialprintData e Hora Serialprintnowyear DEC Serialprint Serialprintnowmonth DEC Serialprint Serialprintnowday DEC Serialprint Serialprintnowhour DEC Serialprint Serialprintnowminute DEC Serialprint Serialprintlnnowsecond DEC SerialprintTemperatura Serialprinttemperature Serialprint C Umidade Serialprinthumidity Serialprintln Armazena dados na EEPROM int address 0 EEPROMwriteaddress nowday EEPROMwriteaddress nowmonth 25 EEPROMwriteaddress nowyear 100 EEPROMwriteaddress nowhour EEPROMwriteaddress nowminute EEPROMputaddress temperature address sizeoffloat EEPROMputaddress humidity address sizeoffloat delay60000 Aguarda 1 minuto antes da próxima leitura void readAndPrintStoredData int address 0 while address EEPROMlength byte day EEPROMreadaddress byte month EEPROMreadaddress byte year EEPROMreadaddress byte hour EEPROMreadaddress byte minute EEPROMreadaddress float temperature EEPROMgetaddress temperature address sizeoffloat float humidity EEPROMgetaddress humidity address sizeoffloat SerialprintData e Hora Serialprintyear Serialprint Serialprintmonth Serialprint Serialprintday Serialprint 26 Serialprinthour Serialprint Serialprintminute Serialprintln SerialprintTemperatura Serialprinttemperature Serialprint C Umidade Serialprinthumidity Serialprintln void serialEvent while Serialavailable char command Serialread if command L SerialprintlnRecuperando dados armazenados readAndPrintStoredData Os dados podem ser apagados após serem lidos Descomente a linha abaixo se desejar apagar os dados após a leitura EEPROMwrite0 0 27 5 ATIVIDADE PRÁTICA 5 Etapa 1 Na Etapa 1 da Atividade 5 foram desenvolvidos dois programas para o Arduino Uno cada um cumprindo uma função específica relacionada ao sensor ultrassônico e ao LED RGB Abaixo estão os detalhes dos passos realizados para esta etapa 1 Programa para Indicação de Distância por Meio de um LED RGB Criouse um programa que utiliza um LED RGB para indicar a distância medida pelo sensor ultrassônico O LED RGB foi conectado aos pinos 9 10 e 11 do Arduino que possuem saídas PWM para permitir controle de intensidade luminosa Um resistor foi colocado em série com cada cor do LED para limitar a corrente Definiuse que quando um objeto estiver a mais de 50 cm a cor do LED deve ser totalmente verde Com a redução da distância a cor do LED deve transitar para amarela até a distância de 25 cm tornandose totalmente amarela A partir desse ponto o LED deve transitar para vermelho com a aproximação do objeto e tornarse totalmente vermelho quando a distância for inferior a 5 cm O programa foi enviado para o Arduino e testado para verificar o correto funcionamento da indicação de distância por meio do LED RGB O seguinte código foi desenvolvido e utilizado const int trigPin 2 Pino de controle do trigger do sensor ultrassônico const int echoPin 3 Pino de controle do echo do sensor ultrassônico const int redPin 9 Pino PWM para a cor vermelha do LED RGB const int greenPin 10 Pino PWM para a cor verde do LED RGB const int bluePin 11 Pino PWM para a cor azul do LED RGB const int maxDistance 50 Distância máxima para a cor verde em cm const int minDistance 5 Distância mínima para a cor vermelha em cm const int yellowDistance 25 Distância para a transição de verde para amarelo em cm 28 void setup Serialbegin9600 pinModetrigPin OUTPUT pinModeechoPin INPUT pinModeredPin OUTPUT pinModegreenPin OUTPUT pinModebluePin OUTPUT void loop long duration int distance Gera um pulso no pino de trigger digitalWritetrigPin LOW delayMicroseconds2 digitalWritetrigPin HIGH delayMicroseconds10 digitalWritetrigPin LOW Lê a duração do pulso no pino de echo duration pulseInechoPin HIGH Converte a duração para distância distance duration 0034 2 Imprime a distância no monitor serial SerialprintDistancia Serialprintlndistance Atualiza a cor do LED com base na distância medida updateLEDColordistance 29 delay500 Aguarda 500 milissegundos antes da próxima leitura void updateLEDColorint distance if distance maxDistance setColor0 255 0 Cor verde else if distance maxDistance distance yellowDistance Interpolação linear para obter a intensidade da cor amarela int greenIntensity mapdistance yellowDistance maxDistance 255 0 setColor255 greenIntensity 0 Cor amarela else if distance yellowDistance distance minDistance Interpolação linear para obter a intensidade da cor vermelha int redIntensity mapdistance minDistance yellowDistance 0 255 setColorredIntensity 255 0 Cor vermelha else setColor255 0 0 Cor vermelha distância abaixo do mínimo void setColorint red int green int blue analogWriteredPin red analogWritegreenPin green analogWritebluePin blue 2 Programa para Leitura de Distância e Piscar de LED Proporcional à Distância Criouse um programa que realiza a leitura da distância medida pelo sensor ultrassônico e a envia via porta serial a cada 1 segundo A leitura da distância foi feita em centímetros O LED conectado ao pino 13 do Arduino foi programado para piscar com uma velocidade proporcional à distância medida Utilizouse uma interrupção do timer para gerenciar as duas bases de tempo no programa uma para amostragem e envio da distância via serial e outra para o LED 30 Definiuse que quando a distância medida for de 50 cm ou mais o LED deverá mudar seu estado a cada 1 segundo Com a redução da distância esse período deve mudar proporcionalmente O programa foi enviado para o Arduino e testado para verificar a correta leitura da distância e o piscar do LED de acordo com a distância medida O seguinte código foi desenvolvido e utilizado const int trigPin 2 Pino de controle do trigger do sensor ultrassônico const int echoPin 3 Pino de controle do echo do sensor ultrassônico const int ledPin 13 Pino para o LED no Arduino volatile unsigned long pulseWidth volatile unsigned long startTime volatile boolean echoReceived false void setup Serialbegin9600 pinModetrigPin OUTPUT pinModeechoPin INPUT pinModeledPin OUTPUT Configuração da interrupção do timer cli Desabilita interrupções durante a configuração TCCR1A 0 TCCR1B 0 TCNT1 0 OCR1A 15624 Valor para 1 segundo com prescaler de 256 TCCR1B 1 WGM12 TCCR1B 1 CS12 TIMSK1 1 OCIE1A sei Habilita interrupções após a configuração void loop 31 long duration Gera um pulso no pino de trigger digitalWritetrigPin LOW delayMicroseconds2 digitalWritetrigPin HIGH delayMicroseconds10 digitalWritetrigPin LOW Aguarda o início do pulso de echo while echoReceived Calcula a duração do pulso de echo duration pulseWidth 0034 2 Imprime a distância no monitor serial SerialprintDistancia Serialprintlnduration Envia a distância via serial SerialprintDistancia cm Serialprintlnduration Atualiza o estado do LED com base na distância medida updateLEDStateduration Aguarda 1 segundo para a próxima leitura delay1000 void updateLEDStatelong distance Calcula o período do piscar do LED com base na distância unsigned long period mapdistance 0 50 1000 100 Configura o timer para controlar o LED 32 cli Desabilita interrupções durante a configuração TCNT1 0 OCR1A period 2 Valor para o período de piscar sei Habilita interrupções após a configuração ISRTIMER1COMPAvect Inverte o estado do LED quando ocorre a interrupção do timer digitalWriteledPin digitalReadledPin ISRTIMER1CAPTvect Lê o valor do contador no início do pulso de echo startTime micros ISRTIMER1COMPAvect Calcula a largura do pulso de echo pulseWidth micros startTime echoReceived true Etapa 2 Na Etapa 2 da Atividade 5 o objetivo foi criar um programa para o Arduino Uno que indicasse por meio de um LED RGB a distância medida pelo sensor ultrassônico Abaixo estão os passos e detalhes do procedimento realizado 1 Procedimento Montagem do Circuito no Tinkercad Criouse um novo projeto do tipo Circuito no Tinkercad Adicionouse os seguintes elementos na montagem 1 Arduino Uno R3 33 1 Placa de ensaio pequena 1 LED RGB 3 Resistores de 220 Ohms 1 Sensor de distância ultrassônico Posicionou os resistores LED e sensor na protoboard realizando as ligações necessárias no Arduino Para ligar o LED RGB utilizaramse os pinos 9 10 e 11 do Arduino que possuem saídas PWM O sinal do sensor de distância foi conectado a um pino disponível no Arduino evitando os pinos 0 1 e 13 além dos já utilizados para o LED Criação do Programa Arduino Elaborouse um programa para o Arduino Uno que indicava a distância medida pelo sensor ultrassônico por meio do LED RGB Estabeleceuse a lógica de controle das cores do LED com base na distância medida pelo sensor Quando um objeto estava a mais de 50 cm a cor do LED era totalmente verde Com a redução da distância até 25 cm a cor do LED tornavase amarela A partir de 25 cm o LED ia se tornando vermelho com a aproximação do objeto e ficava totalmente vermelho quando a distância era inferior a 5 cm Incluiuse no código as instruções necessárias para a leitura e interpretação dos dados do sensor ultrassônico O seguinte código foi desenvolvido e utilizado const int trigPin 2 Pino de controle do trigger do sensor ultrassônico const int echoPin 3 Pino de controle do echo do sensor ultrassônico const int redPin 9 Pino do LED RGB para a cor vermelha const int greenPin 10 Pino do LED RGB para a cor verde const int bluePin 11 Pino do LED RGB para a cor azul void setup Serialbegin9600 34 pinModetrigPin OUTPUT pinModeechoPin INPUT pinModeredPin OUTPUT pinModegreenPin OUTPUT pinModebluePin OUTPUT void loop long duration Gera um pulso no pino de trigger digitalWritetrigPin LOW delayMicroseconds2 digitalWritetrigPin HIGH delayMicroseconds10 digitalWritetrigPin LOW Aguarda o início do pulso de echo while digitalReadechoPin LOW Inicia o tempo no início do pulso de echo long startTime micros Aguarda o fim do pulso de echo while digitalReadechoPin HIGH Calcula a duração do pulso de echo long travelTime micros startTime Calcula a distância com base no tempo de viagem do ultrassom Considerando velocidade do som de 343 metros por segundo 34300 cms duration travelTime 2 Serialprintlnduration Atualiza a cor do LED RGB com base na distância medida 35 updateLEDColorduration Aguarda um curto intervalo antes da próxima leitura delay100 void updateLEDColorlong distance Define os valores limites de distância para cada cor int greenDistance 50 int yellowDistance 25 int redDistance 5 Atualiza as cores do LED RGB com base na distância if distance greenDistance analogWriteredPin 0 analogWritegreenPin 255 analogWritebluePin 0 else if distance yellowDistance analogWriteredPin 255 analogWritegreenPin 255 analogWritebluePin 0 else if distance redDistance analogWriteredPin 255 analogWritegreenPin 165 analogWritebluePin 0 else analogWriteredPin 255 analogWritegreenPin 0 analogWritebluePin 0 Simulação no Tinkercad 36 Realizouse a simulação no Tinkercad ajustando a distância medida pelo sensor ultrassônico clicando sobre ele Colocouse um resistor de 220 Ohms em série com cada cor do LED para limitar a corrente que passava por ele Pesquisouse sobre como fazer o sensor de distância ultrassônico funcionar corretamente no Tinkercad ajustando as configurações necessárias para garantir a simulação adequada O resultado final foi um circuito simulado que indicava visualmente a distância medida pelo sensor ultrassônico por meio das cores do LED RGB seguindo as especificações estabelecidas no programa Arduino Esse experimento proporcionou a prática da integração de sensores e atuadores bem como a simulação de circuitos complexos no ambiente virtual do Tinkercad 37 CONCLUSÃO Ao longo deste portfólio cada atividade foi cuidadosamente planejada e executada proporcionando uma imersão significativa nos fundamentos e práticas essenciais relacionados a Sistemas Digitais e Microprocessadores Cada etapa teve como objetivo principal fortalecer habilidades específicas desde o uso de ferramentas de simulação até o desenvolvimento de firmware para microcontroladores utilizando a plataforma Arduino Na Atividade 1 explorouse o Logisim para a execução do codificador de prioridade um componente crucial em circuitos digitais A compreensão detalhada das entradas e saídas desse codificador foi alcançada permitindo uma visão aprofundada sobre sua aplicação prática em projetos mais complexos Na Atividade 2 o foco voltouse para a familiarização com o Logisim estimulando a projetar e simular circuitos lógicos simples Além disso a atividade abordou o desenvolvimento de circuitos contadores síncronos e assíncronos fornecendo uma compreensão mais ampla das possibilidades oferecidas por essa ferramenta As Atividades 3 4 e 5 centraramse no desenvolvimento de firmware para microcontroladores utilizando a plataforma Arduino Guiouse desde a criação de programas simples como eco e controle de LEDs até projetos mais elaborados como relógio em tempo real estação meteorológica e monitor de umidade do solo Essas atividades visaram proporcionar uma compreensão abrangente do processo de desenvolvimento de sistemas de controle variados incorporando todas as funcionalidades disponíveis em um microcontrolador Em síntese este portfólio representou um percurso abrangente e progressivo no universo dos Sistemas Digitais e Microprocessadores Cada atividade contribuiu para a formação sólida capacitando não apenas com conhecimentos teóricos mas também com habilidades práticas essenciais para enfrentar desafios no campo da eletrônica digital e sistemas embarcados O domínio adquirido ao longo dessas atividades certamente se refletirá na capacidade de conceber e implementar soluções inovadoras em contextos futuros 38 REFERÊNCIAS BIBLIOGRÁFICAS Arduino Libraries Disponível em httpswwwarduinoccenReferenceLibraries GitHub Arduino Temperature Control Library Disponível em httpsgithubcommilesburtonArduinoTemperatureControl Library IDOETA I V CAPUANO F G Elementos de Eletrônica Digital Sl Editora Erica 1984 39