Go Down

Topic: Error en mi programa. (Read 501 times) previous topic - next topic

AdriansitoPalma

May 15, 2018, 01:24 am Last Edit: May 15, 2018, 07:07 pm by surbyte
Tengo que sensar con sensores de temperatura y PIR pero cuando entre al estado uno este deberia de prender el led y quedarse encendido hasta que se presione la tecla b del ordenador.
Si no se presiona nada, el sistema tiene que seguir sensando y capturando datos pero el led no se debe de apagar hasta que se presione una tecla... :(

Les dejo el archivo ino, cargenlo, compilenlo y espero que puedan ayudarme

Code: [Select]
const int sensor = 12;
int valor = 0;

#include <OneWire.h>
#include <DallasTemperature.h>
#define Pin 8
OneWire ourWire(Pin);
DallasTemperature sensors(&ourWire);
int Temp = 24, x = 0, y = 0, a = 0;

const byte ledr = 11, ledv = 10, ledb = 9;

void setup() {
  Serial.begin(9600);
  delay (1000);
  sensors.begin();

  pinMode(ledr, OUTPUT);
  pinMode(ledv, OUTPUT);
  pinMode(ledb, OUTPUT);

}

void loop()
{
  iniciarPir();
  {
    if (valor == HIGH)
    {
      iniciarSen();
      Serial.println("MOVIMIENTO DETECTADO");

      if (Temp <= 24) //estado 1
      {
        while (a == 0)
        {
          digitalWrite(ledb, HIGH);
          digitalWrite(ledr, LOW);
          digitalWrite(ledv, LOW);
          Serial.println("se enciende el led Blanco");
          int tecla;
          tecla = Serial.read();
          if (tecla = 'b')a = 1;
          {
            digitalWrite(ledb, 0);
          }
          else
            a = 0;
        }
      }



      else if (Temp >= 25 && Temp <= 30) //estado2
      {
        digitalWrite(ledb, 0);
        digitalWrite(ledr, 0);
        digitalWrite(ledv, 1);
        Serial.println("Se enciende el led Verde");
      }

      else if (Temp >= 31) //estado3
      {
        digitalWrite(ledb, 0);
        digitalWrite(ledr, 1);
        digitalWrite(ledv, 0);
        Serial.println("Se enciende el led Rojo");
      }
    }

    if (valor == LOW) // si no detecta movimiento, entonces
    {
      iniciarSen();
      Serial.println("NINGUN MOVIMIENTO");

      if (Temp <= 24) //estado 4
      {
        digitalWrite(ledb, LOW);
        digitalWrite(ledr, LOW);
        digitalWrite(ledv, LOW);
        Serial.println("led's apagados");
      }

      else if (Temp >= 25 && Temp <= 30) //estado5
      {
        if (x < 10)
        {
          digitalWrite(ledb, 0);
          digitalWrite(ledr, 0);
          digitalWrite(ledv, 1);
          delay(500);
          digitalWrite(ledv, 0);
          delay(500);
          x++;
          Serial.println("PARPADEA LED VERDE");
        }
      }
    }



    else if (Temp >= 31) //estado 6
    {
      if (y < 10)
      {
        digitalWrite(ledb, 0);
        digitalWrite(ledr, 1);
        digitalWrite(ledv, 0);
        delay(500);
        digitalWrite(ledr, 0);
        delay(500);
        y++;
        Serial.println("PARPADEA LED ROJO");
      }
    }
  }
}
void iniciarPir()
{
  valor = digitalRead(sensor);
}
void iniciarSen()
{
  sensors.requestTemperatures();
  //Temp = sensors.getTempCByIndex(0);
  Serial.print(sensors.getTempCByIndex(0));
  Serial.print(Temp);
}


Moderador: Titulo editado, por contener palabras indicadas como ínútiles "ayuda por favor".
El código debe verse si tiene un tamaño inferior a 9k

johnwasser

I think you mean:
Code: [Select]
          if (tecla == 'b')  //  You had '='.  I think you meant '=='
          {
            a = 1;   // You had this line between the 'if' and the bracket.  I think you want it inside the bracket.

            digitalWrite(ledb, 0);
          }
          else
            a = 0;
Send Bitcoin tips to: 1G2qoGwMRXx8az71DVP1E81jShxtbSh5Hp

AdriansitoPalma

Gracias amigo, me ayudaste a solucionar el problema del 'else' 'if' pero hay otro problema.
quiero que el led quede encendido y apagarlo con el teclado pero cuando la temperatura marca ese estado el led no enciende.

surbyte

Tu código esta mal encarado.. que tiene que ver el PIR con el sensado de temperatura y porque repites para HIGH o LOW del PIR todo el código que corresponde a la temperatura.

Acabo de ver que el título de tu codigo dice "parte_dos_examen.ino"

Asi que mi ayuda se detiene y esperaré a que tu trabajes.
No puedes venir a un foro con un examen.

Plantea tu duda pero no pidas que te lo resolvamos.

AdriansitoPalma

no, yo no trato de que resuelvan mi examen, realmente tenia una duda por que no me permitia dejar encendido un led y er apor error en mi escritura, la pernsona de arriba me ayudo y se elimino el error de else if.

este es un proyecto o examen el cual tengo que determinar con dos tipos de sensores como lo es un sensor pir y uno de temperatura.

si el sensor pir detecta movimiento entonces el sensor de temperatura empesara a censar y si este mide una temperatura menor o igual a 25 entonces se tiene que encender un led de color blanco pero e ahi mi problema por que el led tiene que quedar ensendido y este debe apagarse con el teclado de la computadora; si no se presiona ningun teclado el sistema debera seguir sensando pero no apagar el led.

y mi error estaba en la escritura. realmente no dije que queria me hicieran todo el programa por ya lo tenia.

surbyte

BUeno lo habia hecho y luego leí el nombre del archivo y me detuve.
Igualmente, no dices cual es el error ahora.

Para que lo postee deberás esperar unas horas porque esta en la notebook de mi casa.

Go Up