Boa Noite estou desenvolvendo um alarme mas o mesmo nao entra a condição para ativar o alarme 

segue o codigo abaixo

i

int ledPin = 13;
int inPin = 2;
int val = 0;
int senha = 12345; // variável que esta armazenada a senha
int pc; // onde recebemos os codigos


void setup() {
pinMode(ledPin, OUTPUT); // declara-se o LED como saída
pinMode(inPin, INPUT); // declara-se o sensor como entrada
Serial.begin(9600);// Inicia a serial
}

void loop(){
pc = Serial.read();

if(pc == '1'){
Serial.print("Alarme Habilitado:");
Serial.print("\n");
for (pc == '2'){
pc = Serial.read();
val = digitalRead(inPin); // ler o valor de entrada
if (val == HIGH) { //verificar se a entrada é HIGH (interruptor livre)
digitalWrite(ledPin, LOW); // desligar LED
} else {
Serial.print("Alarme disparado ");
for (pc == '123'){
Serial.print("\n ");
pc = Serial.read();
for(int i = 0; i < 10; i++){
digitalWrite(ledPin, HIGH); // ligar LED
delay(150);
digitalWrite(ledPin, LOW);
delay(150);
digitalWrite(ledPin, HIGH);

}
}
Serial.print("Alarme disparado ");
}
}
}else{
delay(5000);
Serial.print("Nenhum Comando Recebido Alarme desabilitado");
Serial.print("\n");

}
}

Exibições: 549

Responder esta

Respostas a este tópico

que isso, amigo? isso não existe

for (pc == '2'){

for (pc == '123'){

Como o amigo imhugo comentou esse código não deve estar compilando. Talvez tenha sido erro de digitação, no caso acredito que queria digitar um if.

Mais eu no seu caso eu testaria se existe algo na serial antes de entrar no código. No Arduino existe um método para fazer esse teste. No caso é o método "Serial.available()", vejo na documentação no site arduio.cc o seu uso. (

https://www.arduino.cc/en/Serial/Available).

bom o for que eu sei é um laço de repetiçao certo ? eu gostaria que ele fica-se rodando dentro do for ate que recebece um 2 na serial nao sei outro metodo de faser isso se alguem souber como poderia faser isso agradeceria

Amigo, de fato o "for" é uma estrutura de repeticão, só que a sua sintaxe é diferente. No caso se usa da seguinte maneira:
for( inicialização; teste; incremento)
Eu acho que você queria usar o "while", que também é uma estrutura de repetiçäo.

Concegui dar uma ageitada aqui agora esta funcionando se alguem tiver alguma dica de como melhorar o codigo agradeço 

int ledPin = 13;
int inPin = 2;
int val = 0;

int pc = 0;


void setup() {
pinMode(ledPin, OUTPUT); // declara-se o LED como saída
pinMode(inPin, INPUT); // declara-se o sensor como entrada
Serial.begin(9600);// Inicia a serial
}

void loop(){
pc=0;
if (Serial.available() > 0) {
pc = Serial.read();

if(pc == '1'){

Serial.print("\n");
Serial.print("Alarme Habilitado:");
Serial.print("\n");
for(int z = 0; z < 10; ){
pc = Serial.read();
val = digitalRead(inPin); // ler o valor de entrada
if (val == HIGH) { //verificar se a entrada é HIGH (interruptor livre)
digitalWrite(ledPin, LOW); // desligar LED
} else {

for(int t = 0; t < 10; ){
Serial.print("\n ");
pc = Serial.read();
for(int i = 0; i < 10; i++){
Serial.print("\n ");
Serial.print("Alarme disparado ");
Serial.print("\n ");

digitalWrite(ledPin, HIGH); // ligar LED
delay(150);
digitalWrite(ledPin, LOW);
delay(150);
digitalWrite(ledPin, HIGH);

pc = Serial.read();
if(pc=='2'){
z=10;
t=10;
i=10;
Serial.print("Alarme desabilitado ");

}

}
pc = Serial.read();
if(pc=='2'){
z=9;
t=9;
}
}


}
if(pc=='2'){
z=9;
}
}
}
}else{
delay(5000);
Serial.print("\n ");
Serial.print("Nenhum Comando Recebido Alarme desabilitado");
Serial.print("\n");

}
}

Não precisa repetir isso tantas vezes:

pc = Serial.read(); 

Basta uma única vez heim:

if (Serial.available() > 0) {
pc = Serial.read();

Outra coisa, esse lance do else:

else{
delay(5000);
Serial.print("\n ");
Serial.print("Nenhum Comando Recebido Alarme desabilitado");
Serial.print("\n");

}

você está atrasando seu código, não tem necessidade disso aí, a não ser que houvesse coisas para o código fazer, ainda mais com o delay de 5 segundos.

Seu código deveria ser apenas assim:

int ledPin = 13;
int inPin = 2;
int val = 0;
boolean alarme = false; // variavel que decide se o alarme está ativado
// ou desativado
void setup()
{
pinMode(ledPin, OUTPUT); // declara-se o LED como saída
pinMode(inPin, INPUT); // declara-se o sensor como entrada
Serial.begin(9600);// Inicia a serial
}

void loop()
{
if (Serial.available()) //verifica se tem dados diponível para leitura
{
switch(Serial.read()) //verifica qual caracter recebido
{
case '1': //caso 'A'

alarme = true;
Serial.println("Alarme habilitado");
break;

case '2':

alarme = false;
Serial.println("Alarme desabilitado");
}
}

if(alarme) { // se o alarme está ativado verifica o sensor
val = digitalRead(inPin); // ler o valor de entrada

if (val == HIGH) { //verificar se a entrada é HIGH (interruptor livre)
digitalWrite(ledPin, LOW); // desligar LED
}
else {
Serial.println("Alarme disparado ");
digitalWrite(ledPin, HIGH); // ligar LED
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
digitalWrite(ledPin, HIGH);
}
}
}

agora com todo respeito, acredito que não tenho muito conhecimento em lógica de programação, isso é uma grande barreira e com certeza não vai deixar você ter exito em sua aplicação futuras.

abraços!

Amigo, esse seu alarme usa algum programa em C para ser os dados do Serial?

colega nao estou iniciando ainda mas a minha ideia é colocar um teclado 4x4 um ethernet shild um moulo rfid e um lcd para faser o acionamento 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço