top of page

Projeto 03 - Código Modificado

Diagrama de Blocos

Exerc03_NEW_CODE.png

Código

// Projeto Buz_Led_Push
int ledVermelho = 10;
int ledAmarelo  = 11;
int ledVerde    = 12;
 
int botaoVermelho = 2;
int botaoAmarelo = 3;
int botaoVerde = 4;
 
int buzzer = 8;
 
void setup() {
  // put your setup code here, to run once:
  pinMode(ledVermelho, OUTPUT);
  pinMode(botaoVermelho, INPUT);

 
  pinMode(ledAmarelo, OUTPUT);
  pinMode(botaoAmarelo, INPUT);

 
  pinMode(ledVerde, OUTPUT);
  pinMode(botaoVerde, INPUT);

 
  pinMode(buzzer, OUTPUT);  
}
 
void loop() {
  // put your main code here, to run repeatedly:
 
 
  if (digitalRead(botaoVermelho)==HIGH) {
      digitalWrite(ledVermelho, !(digitalRead(ledVermelho)) );
      delay(200);     
  }
 
  if (digitalRead(botaoAmarelo)==HIGH) {   
       digitalWrite(ledAmarelo,!(digitalRead(ledAmarelo)) );
       delay(200);     
  } 
   
  if (digitalRead(botaoVerde)==HIGH) {   
       digitalWrite(ledVerde, !(digitalRead(ledVerde)) );
       delay(200);     
   }
   
 
  if (   (digitalRead(ledVermelho) == HIGH && digitalRead(ledAmarelo) == HIGH)
      || (digitalRead(ledVermelho) == HIGH && digitalRead(ledVerde) == HIGH)
      || (digitalRead(ledAmarelo) == HIGH && digitalRead(ledVerde) == HIGH)
     ) 
     {
      digitalWrite(buzzer, HIGH);    
     }
else 
     {    
      digitalWrite(buzzer, LOW);
     }  
}  

Semáforo - P1

imagem_Semaforo_1.png

Código - Semáforo P1

//SEMAFORO DISPOSITIVO SONORO
// para os carros
#define vermelhoCar 13
#define amareloCar 12
#define verdeCar 8

//para os pedestres
#define vermelhoPed 7
#define verdePed 4

int tempo=4000;
int tempoVerdeCarro = 5000;
int tempoVerdePed = 10000;

void setup(){
  pinMode(vermelhoCar, OUTPUT);
  pinMode(amareloCar, OUTPUT);
  pinMode(verdeCar, OUTPUT);
  pinMode(vermelhoPed, OUTPUT);
  pinMode(verdePed, OUTPUT);  
}

void loop(){  
  // o vermelhoCar inicializa com o valor LOW 
  if (digitalRead(vermelhoCar) == LOW){
      digitalWrite(vermelhoCar, HIGH);
      digitalWrite(verdePed, HIGH);      
      delay(tempoVerdePed);
      digitalWrite(vermelhoCar, LOW);
      digitalWrite(verdePed, LOW);
      digitalWrite(vermelhoPed, HIGH);      
  } 
  digitalWrite(verdeCar, HIGH); 
  delay(tempoVerdeCarro * 2);      
  digitalWrite(verdeCar, LOW);  
  digitalWrite(amareloCar, HIGH);  
  delay(tempo);
  digitalWrite(amareloCar, LOW);  
  delay(300);
  digitalWrite(amareloCar, HIGH);  
  delay(300);
  digitalWrite(amareloCar, LOW);  
  delay(300);
  digitalWrite(amareloCar, HIGH);    
  delay(300);
  digitalWrite(amareloCar, LOW);    
  digitalWrite(vermelhoPed, LOW);  
}

CódigoPerdido - CP01 - Controle de LEDs

CodigoPerdido_01.png

Teste do Circuito

#define ledVERM 2
#define ledAMAR 5
#define ledVERD 8
#define ledAZUL 9
#define ledBRAN 10

void setup()
{
  pinMode(ledVERM, OUTPUT);
  pinMode(ledAMAR, OUTPUT);
  pinMode(ledVERD, OUTPUT);
  pinMode(ledAZUL, OUTPUT);
  pinMode(ledBRAN, OUTPUT);  
 
}

void loop()
{
  digitalWrite(ledVERM, HIGH);
  digitalWrite(ledAMAR, HIGH);
  digitalWrite(ledVERD, HIGH);
  digitalWrite(ledAZUL, HIGH);
  digitalWrite(ledBRAN, HIGH);     
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(ledVERM, LOW);
  digitalWrite(ledAMAR, LOW);
  digitalWrite(ledVERD, LOW);
  digitalWrite(ledAZUL, LOW);
  digitalWrite(ledBRAN, LOW);  
  delay(1000); // Wait for 1000 millisecond(s)
}

CP01- FASE 1

Sabendo que a sequência dos LEDs são:  Vermelho, Amarelo, Verde, Azul e Branco, e que cada LED para ficar ligado depende que o seu antecessor esteja ligado (aceso). Pede-se: identificar e corrigir o código a seguir.

#define ledVERM 2
#define ledAMAR 5
#define ledVERD 8
#define ledAZUL 9
#define ledBRAN 10

void setup()
{
  pinMode(ledVERM, OUTPUT);
  pinMode(ledAMAR, OUTPUT);
  pinMode(ledVERD, OUTPUT);
  pinMode(ledAZUL, OUTPUT);
  pinMode(ledBRAN, OUTPUT);   
}
void loop()
{
  digitalWrite(ledVERM, HIGH); 
  if (digitalRead(ledVERM) == HIGH) 
  {
    digitalWrite(ledAMAR, HIGH);
  }
  if (digitalRead(ledAMAR) == HIGH) 
  {
    digitalWrite(ledVERD, HIGH);
  }
 
// resposta
  if (digitalRead(ledVERD) == HIGH)    
  {
    digitalWrite(ledAZUL,HIGH);      
  }  
  // fim-resposta

  if (digitalRead(ledAZUL) == HIGH) 
  {
    digitalWrite(ledBRAN, HIGH);
  } 
}

CP01- FASE 2

Instruções: Analisar o próximo código;  Modificar a sua estrutura utilizando a SELEÇÃO COMPOSTA. 

#define ledVERM 2
#define ledAMAR 5
#define ledVERD 8
#define ledAZUL 9
#define ledBRAN 10

int controle;
void setup()
{
  pinMode(ledVERM, OUTPUT);
  pinMode(ledAMAR, OUTPUT);
  pinMode(ledVERD, OUTPUT);
  pinMode(ledAZUL, OUTPUT);
  pinMode(ledBRAN, OUTPUT);  
 
}

void loop()
{
  digitalWrite(ledVERM, HIGH);
  delay(1000);
 
  if (digitalRead(ledVERM == HIGH)) 
  {
    digitalWrite(ledAMAR, LOW);      
      digitalWrite(ledVERD, HIGH);  
    digitalWrite(ledAZUL, HIGH);      
      digitalWrite(ledBRAN, HIGH);  
    delay(2000);
    digitalWrite(ledVERM, LOW);
    
  }
      
  if (digitalRead(ledVERM == LOW)) 
  {    
    digitalWrite(ledAMAR, LOW);      
      digitalWrite(ledVERD, LOW);  
    digitalWrite(ledAZUL, LOW);      
      digitalWrite(ledBRAN, HIGH); 
    delay(2000);
    digitalWrite(ledVERM, HIGH);
    
  }   
        
}

 utilizando a SELEÇÃO COMPOSTA 

#define ledVERM 2
#define ledAMAR 5
#define ledVERD 8
#define ledAZUL 9
#define ledBRAN 10

void setup()
{
  pinMode(ledVERM, OUTPUT);
  pinMode(ledAMAR, OUTPUT);
  pinMode(ledVERD, OUTPUT);
  pinMode(ledAZUL, OUTPUT);
  pinMode(ledBRAN, OUTPUT);  
  digitalWrite(ledVERM, HIGH); 
}

void loop()
{
  digitalWrite(ledAMAR, LOW);      
  digitalWrite(ledBRAN, HIGH);    
  if (digitalRead(ledVERM) == HIGH)
  {
    digitalWrite(ledVERD, HIGH);  
    digitalWrite(ledAZUL, HIGH);              
    delay(2000);
    digitalWrite(ledVERM, LOW);
  }
  else  
  {
    digitalWrite(ledVERD, LOW);  
    digitalWrite(ledAZUL, LOW);
    delay(2000);
    digitalWrite(ledVERM, HIGH);
  }  
}

 Solução Direta 

#define ledVERM 2
#define ledAMAR 5
#define ledVERD 8
#define ledAZUL 9
#define ledBRAN 10

void setup()
{
  pinMode(ledVERM, OUTPUT);
  pinMode(ledAMAR, OUTPUT);
  pinMode(ledVERD, OUTPUT);
  pinMode(ledAZUL, OUTPUT);
  pinMode(ledBRAN, OUTPUT);  
  digitalWrite(ledVERM, HIGH);   
}

void loop()
{
  digitalWrite(ledAMAR, LOW);      
  digitalWrite(ledBRAN, HIGH);    
 
  digitalWrite(ledVERD, !(digitalRead(ledVERD)));  
  digitalWrite(ledAZUL, !(digitalRead(ledAZUL))); 
  delay(2000);
  digitalWrite(ledVERM, !(digitalRead(ledVERM)));    
}

CódigoPerdido - CP02

Simular a abertura e fechamento de uma cancela (Micro Servo) utilizando um Sensor de Movimento ou Push-Button. Quando a cancela estiver fechando, o sistema deverá emitir um sinal sonoro (Buzzer).

Cancela_PButton.png

Programa

#include <Servo.h>
#define servo1 3 
#define presenca 2
#define ledverm 10
#define ledverd 9

#define buzzer 8

Servo s1;  
int pos1; // posição do servo 1

int botao = 4; //botao para acionar a cancela


void setup() {
  // put your setup code here, to run once:
  Serial.flush();
  pinMode(presenca,INPUT);
  pinMode(ledverm, OUTPUT);
  pinMode(ledverd, OUTPUT);
  digitalWrite(ledverm, HIGH);
  s1.attach(servo1);
  Serial.begin(9600);
  s1.write(0); // Iniciar servo 1 na posição zero
 
pinMode(buzzer, OUTPUT);
  pinMode(botao, INPUT);

}

void loop() {
  // put your main code here, to run repeatedly:
int x = digitalRead(presenca);  

int y = digitalRead(botao); //ler o botao 
if (x == HIGH || y == HIGH) {    
    for (pos1 = 0; pos1 < 90; pos1++) {
        s1.write(pos1);
        delay(40);        
    }
    digitalWrite(ledverd, HIGH);
    digitalWrite(ledverm, LOW);
    delay(10000);
    digitalWrite(ledverd, LOW);
    digitalWrite(ledverm, HIGH);
    digitalWrite(buzzer, HIGH); 
    for(pos1 = 90; pos1 > 0; pos1--)
    {
      s1.write(pos1);
       delay(40);       
    }    
    digitalWrite(buzzer, LOW); 
}
}

tinkercad.png

CP02- FASE 1

Desenvolver o Diagrama de Blocos do CódigoPerdido - CP02

CódigoPerdido - CP03

SensorGasTemperatura.png

Desenvolver um projeto para medir a temperatura e verificar a presença de gás e/ou fumaça em dois ambientes. Utilizar um buzzer para emitir um aviso sonoro se a temperatura atingir um nível alto ou quando detectar gás e/ou fumaça em qualquer ambiente.  Dois LEDs RGB deverão ser utilizados, um para cada ambiente, sinalizando com a cor VERDE se estiver tudo normal, e VERMELHO se detectar o aumento de temperatura ou a presença de gás e/ou fumaça nos ambientes.

Diagrama de Blocos

codigoPerdido03.png

Programa

#define rgb1R 2
#define rgb1B 3
#define rgb1G 4

#define rgb2R 5
#define rgb2B 6
#define rgb2G 7

#define buzzer 8

#define tempAmbiente1 A0
#define tempAmbiente2 A1
char sit_Ambiente1; 
char sit_Ambiente2; 
#define limiteMaxTemp 40

#define sensorGas1 A3
#define sensorGas2 A4
#define limiteMaxGas 600

void setup(){ 
  pinMode(rgb1R, OUTPUT);
  pinMode(rgb1G, OUTPUT);
  pinMode(rgb1B, OUTPUT);
  pinMode(rgb2R, OUTPUT);
  pinMode(rgb2G, OUTPUT);
  pinMode(rgb2B, OUTPUT);
 
  pinMode(buzzer, OUTPUT);
  //inicializar ligado verde ambiente 1
  digitalWrite(rgb1R, LOW);
  digitalWrite(rgb1G, HIGH);
  digitalWrite(rgb1B, LOW);
  //inicializar ligado verde ambiente 2
  digitalWrite(rgb2R, LOW);
  digitalWrite(rgb2G, HIGH);
  digitalWrite(rgb2B, LOW);
 
  Serial.begin(9600);
 
}
 
void loop(){  
  sit_Ambiente1 = 'N';
  sit_Ambiente2 = 'N';
 
  // para o sensor 1
  int sensorTemp1 = analogRead(tempAmbiente1);
  // converter o valor lido
  float valorTemp1 = sensorTemp1 * 5;
  valorTemp1 /=1024;
  // em graus Celsius
  float Temp1CEL = (valorTemp1 - 0.5) * 100;    
  // fim do sensor 1
 
  // para o sensor 2
  int sensorTemp2 = analogRead(tempAmbiente2);
  // converter o valor lido
  float valorTemp2 = (sensorTemp2 * 5);
  valorTemp2 /=1024;
  // em graus Celsius
  float Temp2CEL = (valorTemp2 - 0.5) * 100;    
  // fim do sensor 2
 
  int valorGas1 = analogRead(sensorGas1);
  int valorGas2 = analogRead(sensorGas2); 
 
  Serial.println(valorGas1);
 
 
 
  // = n - normal /  p - perigo
  if (Temp1CEL > limiteMaxTemp || valorGas1>limiteMaxGas) 
  {
      sit_Ambiente1 = 'P';    
  }  
  if (Temp2CEL > limiteMaxTemp|| valorGas2>limiteMaxGas)  
  {
      sit_Ambiente2 = 'P';
  }  

    
  if (sit_Ambiente1 != 'N' || sit_Ambiente2 != 'N')
  {
    digitalWrite(buzzer, HIGH);    
  }
  else
  {
    digitalWrite(buzzer, LOW);    
  }
 
  controle(sit_Ambiente1,sit_Ambiente2 );
 
 
}





void controle(char situacao1, char situacao2 )
{
   if (situacao1 == 'N')
    {
      // verde
          digitalWrite(rgb1R, LOW);
          digitalWrite(rgb1G, HIGH);
          digitalWrite(rgb1B, LOW);
    }
    else
    {  
        // vermelho     
        digitalWrite(rgb1R, HIGH);
        digitalWrite(rgb1G, LOW);
        digitalWrite(rgb1B, LOW);
        delay(150);
        digitalWrite(rgb1R, LOW);
        digitalWrite(rgb1G, LOW);
        digitalWrite(rgb1B, LOW);
        delay(150);
      
    }
    
   if (situacao2 == 'N')
    {
      // verde
          digitalWrite(rgb2R, LOW);
          digitalWrite(rgb2G, HIGH);
          digitalWrite(rgb2B, LOW);
    }
    else
    {  
        // vermelho     
        digitalWrite(rgb2R, HIGH);
        digitalWrite(rgb2G, LOW);
        digitalWrite(rgb2B, LOW);
        delay(150);
        digitalWrite(rgb2R, LOW);
        digitalWrite(rgb2G, LOW);
        digitalWrite(rgb2B, LOW);
        delay(150);
      
    }   
}

tinkercad.png
SensorGasTemperatura_F.png

CódigoPerdido - CP04

Semaforo_SensorLuminosidade.png

Desenvolver um projeto para controlar o tempo de um semáforo através de uma Chave Táctil Push-Button e um sensor de Luminosidade LDR. Quando o botão for pressionado ou o sensor detectar a ausência de luminosidade, o tempo destinado para os carros (sinal verde) deverá ser reduzido. 

Diagrama de Blocos

codigoPerdido04.png

Programa

// para os carros
#define vermelhoCar 13
#define amareloCar 12
#define verdeCar 8
#define buzzer 3
#define botao 2
#define ldr A0

//para os pedestres
#define vermelhoPed 7
#define verdePed 4

int tempoVerdeCarro = 10000;
int tempoAmarelo = 3000;

void setup(){
  pinMode(vermelhoCar, OUTPUT);
  pinMode(amareloCar, OUTPUT);
  pinMode(verdeCar, OUTPUT);
  pinMode(vermelhoPed, OUTPUT);
  pinMode(verdePed, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(botao, INPUT);
  pinMode(ldr, INPUT);
  Serial.begin(9600);
}

void loop(){
  // o vermelhoCar inicializa com o valor LOW 
  //semaforo parte pedestres 
  if (digitalRead(vermelhoCar) == LOW)
  {
    digitalWrite(vermelhoCar, HIGH);
    digitalWrite(verdePed, HIGH);
    sonoro();
    digitalWrite(verdePed, LOW);
    digitalWrite(vermelhoPed, HIGH);
    digitalWrite(vermelhoCar, LOW);
    digitalWrite(verdeCar, HIGH);
    }
  //controle do botao
  int tempo;
  bool pressionou = false;
  while (tempo < tempoVerdeCarro)
  {
  //ldr > 50 pouca luz
  // para verificar o valor do ldr na tela
  //Serial.println(analogRead(ldr));
  if  ((  digitalRead(botao)  ||  analogRead(ldr) > 50) &&  !pressionou)
  {
  tempo = tempo + 2000;
  pressionou = true;
  }
  else
  {
  tempo = tempo + 1000;
  }
  delay(1000);
  }
  //fim do controle do botao 
  digitalWrite(verdeCar, LOW);
  digitalWrite(amareloCar, HIGH);
  delay(tempoAmarelo);  
  for (int y = 0; y <= 2; y++)
  {
  digitalWrite(amareloCar, LOW);
  delay(300);
  digitalWrite(amareloCar, HIGH);
  delay(300);
  }
  digitalWrite(amareloCar, LOW);
  digitalWrite(vermelhoPed, LOW);
}

void sonoro()
{
noTone(buzzer);
for (int x = 1; x<=3; x++){
  tone(buzzer,30);  
  delay(1000);
  noTone(buzzer);
  delay(1000);
}
for (int x = 0; x<=3; x++){
  tone(buzzer,30);
  delay(500);
  noTone(buzzer);
  delay(500);
}
}

tinkercad.png
Semaforo_SensorLuminosidade_2_.png
bottom of page