Table of Contents

 

Exercicios

O objetivo é escrever um programa que é capaz de realizar tarefas descritas abaixo.

Exercicios de aquecimento

*Ao pressionar S1 um LED acende, pressionando S2 dois LEDs acendem e S3 três LEDs acendem.

Para iniciantes

  1. Isto simula semáforos de carros.
  2. Isto simula semáforos manuais para peões. Enquanto nenhum botão seja pressionado um LED verde está aceso para os carros. Depois de pressionar um botão (S1), o LED verde começará a piscar durante 3 segundos, o que é seguido da iluminação do LED amarelo por 3 segundos e vermelho durante 10 segundos, depois desta sequência o LED verde fica aceso novamente. Quando o LED vermelho está aceso, o display de 7 segmentos indica a contagem decrescente dos segundos até que o LED verde se ligue.
  3. Isto conta quantas vezes o botão é pressionado. O resultado é exibido através do piscar dos LEDs. Após cada pressionamento o número de piscar aumentada de um. Um botão aleatório pode ser seleccionado. Para que o LED pisque uma sub função deve ser utilizada, com parâmetros definidos no número de piscadelas.
  4. Apresentar números em sistema hexadecimal aleatóriamente no display de 7 segmentos. A freqüência é de 1 Hz.
  5. Ao pressionar o botão S1, a velocidade intermitente de todos os três LEDs é diminuida duas vezes. Ao pressionar o botão S3, o piscar torna-se 2 vezes mais rápido, e ao pressiona a tecla S2 a frequência do piscar será re-definido para 1 Hz. É necessário usar interruptor (não funções de atraso por software).
  6. Criar três músicas, que são tocadas quando o botão é pressionado. A alteração da música deve ser instantânea quando outro botão for pressionado.

Para avançados

  1. Quando pressionar os botões em sequência S3 - S2 - S1, o LED verde fica aceso. Todas as outras combinações resultam no LED vermelho. Cada vez que algum botão seja premido um LED amarelo irá piscar.
  2. Há um botão para cada LED. O controlador pisca LEDs aleatoriamente e o utilizador tem de repetir a seqüência. A sequência de piscar fica maior - um LED aleatório é adicionado em cada ronda. A sequência é controlada depois de cada utilizador. O intervalo de tempo entre cada entrada é de dois segundos. No caso de uma entrada incorreta todos os LEDs piscam três vezes. (O número de entradas corretas por parte do utilizador pode ser exibido no ecrãn LCD).
  3. Luz em sequência de 6 segmentos de fora circulares sobre o indicador de 7 segmentos com o período de 500 ms.
  4. Faça um programa onde pode mover o símbolo “X” no ecrãn. Use o botão S1 para mover para a esquerda, botão S3 para mover para a direita e S2 para mudar de linha.
  5. Implemente o jogo da cobra no ecrãn LCD. A largura da cobra é de 1 pixel e o comprimento é de 5 pixels. A cobra pode ser programada para virar usando os botões de esquerda ou direita. A cobra deve ser capaz de evitar a colisão com a borda do ecrãn (girando antes). Os pontos de bónus são para a capacidade de apanhar as maças e fazer a cobra crescer. A solução mais simples é desenhar a cobra usando a letra “O”.

Questões

  1. Qual é a diferença entre as operações “=” e “==”? Dê dois exemplos que ilustrem.
  2. Qual é a diferença entre as operações “|” e “||”? Dê dois exemplos que ilustrem.
  3. Escreva uma expressão utilizando a equação “x = x + 1” doze vezes.
  4. Como é que um loop infinito é escrito em linguagem de programação C? Forneça dois exemplos diferentes.
  5. Que tipo de variável pode ser escolhida em linguagem C para apresentar valores positivos entre 7 e 154?
  6. Que tipo de registo determina a direção de uma porta? Dê um exemplo de como configurar as definições de entrada e saída de portos.
  7. Quais são os métodos para eliminar o salto dos contactos e as falsas ligações causados ​​por cintilação? Dê exemplos de soluções usando hardware e software.
  8. O que é um bit shift? Dê um exemplo prático com uma explicação.
  9. Por que motivo são as resistências pull-up usadas ​​em interruptores? Como é a sua resistência determinada?
  10. Calcule a resistência para a regulação da corrente LED, a tensão é de 5 V, tensão para a frente do LED é de 2,7 V e a corrente é 30 mA.
  11. Quantos pinos usa o indicador de números de 7 segmentos (com segmento de ponto), se estiver conectado diretamente ao controlador? Quantos pinos seria necessário se fosse controlado através do registo de deslocamento 74HC595?
  12. O que determina o brilho do indicador de números de 7 segmentos? Como ele pode ser ajustado se o indicador de número é controladao a) diretamente b) através do registo de deslocamento 74HC595?
  13. Como podem os números no sistema decimal ser convertidos em sistema binário (de texto) e vice-versa?
  14. Como é o LCD monocromático (preto e branco) diferente do LCD de cor?
  15. Como é criado o atraso por software? Em que parâmetros depende a duração do atraso de software?
  16. O que nos faz usar atraso de hardware / temporizador com interrupções?
  17. Calcular o período de interrupção de estouro de 8-bit timer, se a velocidade do relógio é de 16 MHz e freqüência de divisão é 1024.
  18. O que pode ser feito com os temporizadores AVR além de contar o tempo?
  19. Qual é a maior duração das interrupções em milissegundos que pode ser alcançado com o microcontrolador ATxmega128A1U que trabalham na frequência de relógio de 32 MHz? Mostrar a fórmula de cálculo.
  20. No caso de o processador estar muito carregado com uma execução de um programa (por exemplo, que controla diversos motores e os valores de vários sensores de uma só vez), isto tem um efeito sobre a precisão do temporizador? Explique sua resposta.