Friday, October 28, 2016

5. Semáforo de 4 fases controlado por botão

Nesta atividade será construído um semáforo de 4 fases controlado por botão, utilizando comandos if - else. Assista o vídeo. O correspondente diagrama desenhado tem Tinkercad está mostrado abaixo:



Exercícios

1. Simule este circuito em Tinkercad.
2. Modifique este projeto de modo que tenhamos uma luz verde que pisque antes de fechar.
3. Construa um sistema automático de semáforos de cruzamento,  agora com dois semáforos de pedestres adicionais, um para cada rua, cada um acionado pelo respectivo botão.

Tuesday, October 25, 2016

4. Porta lógica

Assista o vídeo, entenda o funcionamento de uma porta lógica no Arduino e implemente a simulação correspondente, como mostrada abaixo


O circuito simulado em Tinkercad é mostrado abaixo: 



O código para este projeto é dado a seguir:

// the setup routine runs once when you press reset:
void setup() {
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(7, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
  int estado;
  estado = digitalRead(7);
  digitalWrite(10, estado);
  digitalWrite(9, !estado);
}

Quando a chave é acionada o led vermelho se apaga e verde se acende. Notemos que quando a chave está aberta a tensão na porta 7 é zero (o mesmo do terminal terra), de modo que estado = LOW, a porta 10 fica LOW e a 9 fica !LOW = HIGH. Quando a chave fecha a tensão na porta -7 é HIGH.

Uma variação do mesmo projeto, usando o resistor interno do Arduino é mostrada a seguir.



O código é modificado na linha em vermelho:

// the setup routine runs once when you press reset:
void setup() {
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(7, INPUT_PULLUP);
}
// the loop routine runs over and over again forever:
void loop() {
  int estado;
  estado = digitalRead(7);
  digitalWrite(10, estado);
  digitalWrite(9, !estado);
}

A finalidade do comando INPUT_PULLUP é  deixar a porta 7 no estado HIGH quando a chave está aberta. Sem este comando haveria uma flutuação de valores. Veja aqui informações adicionais.

Exercícios:

1. Faça  um diagrama de circuito do segundo projeto .
2. Implemente os projetos na prática.
3. Invente alguma variação dos projetos acima envolvendo mais botões e mais leds.

Monday, October 17, 2016

3. Sistema automático de semáforos de cruzamento

Este é o projeto para um sistema automático de semáforos de cruzamento. Abaixo está o arquivo sketch:

//Dois semaforos
int tempo;

void setup() {
  // put your setup code here, to run once:
  pinMode(13, OUTPUT);  
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);

  tempo=5000;
}

void loop() {
  // put your main code here, to run repeatedly:

  digitalWrite(10,HIGH);
  digitalWrite(9,LOW);
  digitalWrite(8,LOW);

  digitalWrite(13,LOW);
  digitalWrite(12,LOW);
  digitalWrite(11,HIGH);  
  delay(tempo);
  
  digitalWrite(10,LOW);
  digitalWrite(9,HIGH);
  digitalWrite(8,LOW);

  digitalWrite(13,LOW);
  digitalWrite(12,LOW);
  digitalWrite(11,HIGH);  
  delay(tempo-3000);

  digitalWrite(10,LOW);
  digitalWrite(9,LOW);
  digitalWrite(8,HIGH);
  
  digitalWrite(13,HIGH);
  digitalWrite(12,LOW);
  digitalWrite(11,LOW);
  delay(tempo);

  digitalWrite(10,LOW);
  digitalWrite(9,LOW);
  digitalWrite(8,HIGH);

  digitalWrite(13,LOW);
  digitalWrite(12,HIGH);
  digitalWrite(11,LOW);  
  delay(tempo-3000);
}


Este é o projeto simulado em Tinkercad:




Esta é a implementação do projeto:

Sunday, October 16, 2016

2. Semáforo

Nesta atividade construiremos um semáforo. Inicialmente é interessante assistir este vídeo, entender como definir variáveis e implementar o projeto sugerido. Uma pequena modificação gerou o projeto de um semáforo usual. Abaixo está o programa que faz a luz verde acender por 5 segundos, a amarela por 2s e a verde por 7s.

//Semaforo
int tempo;

void setup() {
  // put your setup code here, to run once:
  pinMode(10, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);

  tempo=5000;
}

void loop() {
  // put your main code here, to run repeatedly:

  digitalWrite(10,HIGH);
  digitalWrite(9,LOW);
  digitalWrite(8,LOW);
  delay(tempo);

  digitalWrite(10,LOW);
  digitalWrite(9,HIGH);
  digitalWrite(8,LOW);
  delay(tempo-3000);

  digitalWrite(10,LOW);
  digitalWrite(9,LOW);
  digitalWrite(8,HIGH);
  delay(tempo+200);
}

O hardware é mostrado abaixo:



Aqui, um esboço do circuito:


Exercícios:

Em todos os exercícios abaixo construa antes uma simulação em Tinkercad e depois implemente o projeto na prática.

1. Modifique o programa para que o led verde fique aceso por 5s e antes de apagar pisque 3 vezes em 2s.

2. Projete um semáforo que tem um led verde e dois vermelhos. O verde fica aceso por 5s e, depois de apagar os dois vermelhos piscam ao mesmo tempo quatro vezes durante 2s e depois acendem por 6s e piscam novamente três vezes durante 2s antes de apagar.

3. Invente o seu próprio modelo de semáforo.

4. Faça o seu arduíno controlar dois semáforos ao mesmo tempo (usando agora 6 leds). Escolha os tempos adequadamente, como se fossem ser usados num cruzamento.

Saturday, October 15, 2016

1. Introdução: Fazendo o led piscar

A primeira atividade com a placa Arduino Uno consiste em fazer o download da interface, conexão da placa com o computador, composição de um programa que faz um led piscar. É usado aqui um resistor de 100 ohms para reduzir a tensão sobre o led. O terminal longo (+) do led é conectado ao terminal 10 da placa. O terminal curto (-) é conectado, via resistor a um pino terra da placa. Veja este vídeo descritivo.

Aqui está o programa:

void setup() {
  // put your setup code here, to run once:
pinMode(10, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(10, HIGH);
  delay(300);
  digitalWrite(10, LOW);
  delay(1000);
}

Ao contrário do que foi feito no vídeo, usei um breadboard como mostrado abaixo.


Veja como funciona o breadboard na figura abaixo: 


Este é o circuito simulado em Tinkercad: 

Exercícios

1. Modifique os intervalos de tempos nos quais o led fica aceso e apagado. 
2. Desenhe o diagrama do circuito.
3. Registre-se no site do Tinkercad e simule este projeto antes de implementá-lo na prática. 
4. Determine a tensão sobre o led e sobre o resistor, sabendo que o terminal 10 fornece 5V. 
5. Use um multímetro para verificar as diferenças entre medidas e cálculos do item anterior.