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
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
parte_dos_examen.ino (2.52 KB)