Projeto 03 - Código Modificado

// 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);
}
}
Código
Semáforo

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 - Semáforo
// 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);
}
}
Código - Semáforo

Sequencial de LEDs

#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)
}
Código - Sequencial de LEDs
Código - Sequencial de LEDs - Exercício 01
Sabendo que a sequência dos LEDs é: Vermelho, Amarelo, Verde, Azul e Branco, e que cada LED depende do seu antecessor estar ligado (aceso) para ficar ligado, 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);
}
}
// resposta
if (digitalRead(ledVERD) == HIGH)
{
digitalWrite(ledAZUL,HIGH);
}
// fim-resposta
Passe o mouse ou toque a tela
#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);
}
}
Instruções: Analisar o próximo código; Modificar a sua estrutura utilizando a SELEÇÃO COMPOSTA.
Código - Sequencial de LEDs - Exercício 02
#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 - Passe o mouse ou toque na tela
Controle de Cancela
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).

#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);
}
}
Código - Cancela


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.
Sistema de Segurança (Gás e Temperatura)

Diagrama de Blocos - Sistema de Segurança (Gás e Temperatura)
#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);
}
}
Código - Sistema de Segurança (Gás e Temperatura)
