AJUDA COM TRABALHO

preciso de ajuda para fazer uma programação para o seguinte problema:

Desenvolver um programa e um protótipo para o Arduino para simular o funcionamento de um semáforo.

O programa deve ter 3 leds para representar o semáforo (verde, vermelho, amarelo).

O semáforo deve funcionar temporalmente da seguinte forma:

10 segundos fechado (vermelho), 5 segundos aberto (verde) e 2 segundos no amarelo.

Para simular o fluxo de veículos, devem haver no mínimo 4 ou mais LEDS enfileirados (A, B, C, D em ordem de proximidade com o semáforo), sendo que cada LED irá representar a passagem dos veículos.

Então, quando um veículo se aproxima do semáforo, para representar a chegada desse veículo, um LED intitulado de A, irá acender.

Passado 1 segundo, esse LED irá apagar e um segundo LED intitulado de LED B irá acender. O processo se repete até que o LED intitulado D (mais próximo do semáforo) acenda.

Nesse instante, o programa deve verificar o estado atual do semáforo, caso esteja verde/amarelo, após 1 segundo o LED D deverá ser apagado, caso contrário, deverá aguardar até que o semáforo esteja verde novamente.

Também haverá um botão para representar a entrada de um novo veículo na pista, isto é, ao acionar o botão, um novo LED deve ser aceso respeitando a ordem e a disponibilidade do LED.

Caso o botão seja pressionado enquanto o LED A ainda estiver aceso, nada deve acontecer.

Beleza, você descreveu o problema.
Faltou falar: com o que você precisa de ajuda, quais suas dúvidas?

Nesse programa deve ser a usado a função millis...
poderia me dar um exemplo de como ficaria na resolução desse problema?
Sou iniciante

giova014:
Beleza, você descreveu o problema.
Faltou falar: com o que você precisa de ajuda, quais suas dúvidas?

pode me dar exemplo de como usar a função millis na resolução desse problema?

Sua descrição do problema se parece muito com um trabalho de escola, que tem como objetivo final fazer você aprender.

O objetivo deste fórum é te ajudar em dúvidas com seu código / circuito / projeto, o que quer dizer que raramente lhe escreveremos código do zero.

Nesse programa deve ser a usado a função millis...
poderia me dar um exemplo de como ficaria na resolução desse problema?
Sou iniciante

Difícil responder a esta pergunta, não sei que nível de iniciante você é:

  • Você sabe abrir a IDE do Arduino e criar um sketch básico?
  • Você sabe escrever código básico em C / C++?
  • Você conhece as funções do Arduino e como usá-las?
  • Você sabe como ligar LEDs fisicamente no Arduino e acioná-los no código?
  • Você sabe como controlar tempo usando delay() e/ou millis()?

Veja que cada um desses tópicos produz milhares de resultados no Google, provavalmente você até acha um semáforo pronto (mas qual a graça?).

Agora, para te ajudarmos, escreva um código e monte um circuito baseado nos tópicos acima, o importante é você tentar.
Depois nos traga as dúvidas específicas, que você não entende porque não funciona e mostre o que fez.

Abre o exemplo blink without delay para perceberes como funciona essa função... ela basicamente retorna o tempo actual no relógio interno do Arduino em milisegundos.

Isso permite que vejas quanto tempo passou entre dois momentos no tempo e fazer acções baseadas nisso.