Colégio de aplicação-UFPE

9º ano

Grupo 5: Álvaro, Maria Beatriz, Mateus, Vítor Gabriel



Semáforo de trânsito -carros e pedestres-



Introdução

Este projeto irá simular o semáforo de transito, tanto o de carro quanto o de pedestres e ainda será inserido o “botão de pedestre”. O desenvolvimento dessa simulação irá acontecer com a programação no Arduino e a montagem em uma placa protoboard.

A programação em Arduino consiste em 3 fases:

  1. A das variáveis

  2. A do “void setup”

  3. A do “void loop”

Na primeira fase se criam variáveis de diferentes tipos e se dão os seus valores. As variáveis são "palavras" que armazenam uma certa informação que será usada futuramente e, como o próprio nome já diz, é a parte “não-fixa” que pode variar, como por exemplo a variável "LedVerde" que no meu programa eu designei como uma das leds usadas para a criação do semáforo.

A segunda fase é o "void setup" que é usada para adicionar informações às variáveis (além do seu valor), como por exemplo, "pinMode(LedVerde, OUTPUT)". pinMode é um comando que diz ao computador se o sinal será mandado para o programa ou para fora do programa, depois temos nossa variável e OUTPUT, ou seja, é um comando para fora do programa (manda uma informação para fora).

Por fim, na última fase está o "void loop" que consiste na maior parte do programa, essa fase coloca o programa em loop (dando voltas infinitas), onde estão as variáveis:

digitalWrite = diz ao computador o que fazer com variável (ligar/desligar, por exemplo).

Delay = o tempo que vai acontecer algo (em milissegundos).

for = comando que define um ciclo, por exemplo: for (piscada = 0; >= 10; ++), na primeira mostramos uma variável e seu valor, depois representamos seu valor máximo, e colocamos para adicionar 1 a variável (++).





Objetivos

  • Simular um semáforo de carros e pedestres, com o botão de pedestre

  • Compreender os conceitos dentro da programação

  • Compreender a montagem na placa do protoboard



Materiais

  • 1 botão

  • 1 arduino UNO

  • 1 protoboard

  • 5 leds de mesmo tamanho - 2 vermelhos, 2 verdes e 1 amarelo

  • 6 resistores - 4 de mesmo valor e outros 2 de valores diferentes

  • 7 jumpers - 1 para o Gnd, 5 para o seus leds conectados nas suas respectivas portas, 1 para o botão conectado em sua porta (as portas foram definidas na programação)



Montagem Na Placa

Primeiramente, nos últimos pinos (da esquerda para a direita) da parte superior da protoboard foram colocados os cátodos dos LEDs vermelho, amarelo e verde. Em seguida um jumper foi utilizado para interligar a parte superior da protoboard com a parte inferior e na parte inferior os cátodos dos LEDs vermelho e verde e o botão foram colocados nos últimos pinos.

Logo após colocou-se os ânodos dos LEDs em pinos diferentes na protoboard e em seguida colocou-se um resistor em série com cada um dos seus respectivos LEDs e no Botão, de modo que as pernas positivas dos resistores ficassem em pinos diferentes e que as pernas negativas ficassem nos mesmos pinos dos ânodos dos LEDs e do botão. Por fim, foram usados 6 jumpers para ligar os LEDs com os resistores nas suas portas, o botão na sua respectiva porta e um jumper para ligar o gnd da placa Arduino Uno com os cátodos dos LEDs.

Código

// Projeto – Semáforo

int carRed = 12;

carYellow = 11;

int carGreen = 10;

int pedRed = 9;

int pedGreen = 8;

int button = 2;

int crossTime = 5000;

unsigned long changeTime;

void setup() {

pinMode(carRed, OUTPUT);

pinMode(carYellow, OUTPUT);

pinMode(carGreen, OUTPUT);

pinMode(pedRed, OUTPUT);

pinMode(pedGreen, OUTPUT);

pinMode(button, INPUT);

digitalWrite(carGreen, HIGH);

digitalWrite(pedRed, HIGH); }

void loop() {

int state = digitalRead(button);

if (state == HIGH && (millis() - changeTime) > 5000) {

changeLights(); } }

]void changeLights() {

digitalWrite(carGreen, LOW);

digitalWrite(carYellow, HIGH);

delay(2000);

digitalWrite(carYellow, LOW);

digitalWrite(carRed, HIGH);

delay(1000);

digitalWrite(pedRed, LOW);

digitalWrite(pedGreen, HIGH);

delay(crossTime);

for (int x=0; x<10; x++) {

digitalWrite(pedGreen, HIGH);

delay(250);

digitalWrite(pedGreen, LOW);

delay(250); }

digitalWrite(pedRed, HIGH);

delay(500);

digitalWrite(carYellow, HIGH);

digitalWrite(carRed, LOW);

delay(1000);

digitalWrite(carGreen, HIGH);

digitalWrite(carYellow, LOW);

changeTime = millis();