Pessoal bom dia! Quem puder ajudar agradeceria muito!
Estou com um projeto onde o semáforo dos carros e pedestres estariam num looping, porém quando um chaveiro ou cartão RFID for detectado, a próxima programação do semáforo seria com um tempo maior para o verde do pedestre sendo que a pessoa que estaria utilizando poderia ser um cadeirante por exemplo.
Sendo assim, não estou conseguindo inserir um looping na programação e também não sei como interromper com um timer pois não podemos parar a qualquer momento o fluxo semafórico.
No programa abaixo em qualquer lugar que eu coloco o semaforo() só lê uma vez e fica esperando o cartão ou dependendo da onde coloco nem lê:
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 53
#define RST_PIN 5
#define vermelho_pedestre 2
#define verde_pedestre 3
#define vermelho_carro 8
#define amarelo_carro 9
#define verde_carro 10
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
char st[20];
void setup()
{
Serial.begin(9600); // Inicia a serial
SPI.begin(); // Inicia SPI bus
mfrc522.PCD_Init(); // Inicia MFRC522
Serial.println("Aproxime o seu cartao ou chaveiro");
Serial.println();
pinMode(vermelho_pedestre, OUTPUT);
pinMode(verde_pedestre, OUTPUT);
pinMode(vermelho_carro,OUTPUT);
pinMode(amarelo_carro,OUTPUT);
pinMode(verde_carro,OUTPUT);
}
void loop()
{
// Look for new cards
if ( ! mfrc522.PICC_IsNewCardPresent())
{
//return;
}
// Select one of the cards
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
String conteudo= "";
byte letra;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
//Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
//Serial.print(mfrc522.uid.uidByte[i], HEX);
conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
conteudo.concat(String(mfrc522.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Mensagem : ");
conteudo.toUpperCase();
if (conteudo.substring(1) == "7B 10 F0 21") //UID 1 - Cartão
{
Serial.println("Pessoa com mobilidade Reduzida !");
Serial.println();
digitalWrite(verde_pedestre,HIGH);
delay(500);
digitalWrite(verde_pedestre,LOW);
}
if (conteudo.substring(1) == "97 A1 7D 34") //UID 2 - Chaveiro
{
Serial.println("Pessoa com mobilidade Reduzida !");
Serial.println();
digitalWrite(verde_pedestre,HIGH);
delay(500);
digitalWrite(verde_pedestre,LOW);
}
}
void semaforo()
{
//Loop programação padrão
digitalWrite(verde_carro,HIGH);
digitalWrite(verde_pedestre,LOW);
delay(5000);
digitalWrite(verde_carro,LOW);
digitalWrite(amarelo_carro,HIGH);
delay(2000);
digitalWrite(amarelo_carro,LOW);
digitalWrite(vermelho_carro,HIGH);
digitalWrite(verde_pedestre,HIGH);
digitalWrite(vermelho_pedestre,LOW);
delay(3000);
digitalWrite(verde_pedestre,LOW);
//Alerta para o pedestre!
for(int j=0; j<=3; j++)
{
digitalWrite(vermelho_pedestre,LOW);
delay(500);
digitalWrite(vermelho_pedestre,HIGH);
delay(500);
}
digitalWrite(vermelho_carro,LOW);
}
Tags:
Bom dia EJGS,
seja bem vindo à este grupo de amigos conhecido como forum.
Como você está começando agora, vou dar algumas sugestões:
1.a Leia com atenção o tópico: Sugestão;
2a. Se leu, vai entender que não é recomendável colar o código na área de texto do tópico.
portanto, recomento que remova o código que postou na área de texto do seu tópico,
e escolha o arquivo com seu código, e anexe.
Teremos maior boa vontade em tentar ajuda-lo.
RV
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por