Buenas tardes, abro otro foro para ver quien puede ayudarme, por favor
Utilizo Arduino Uno, tengo un circuito con un sistema anti robo, tiene un sensor pir, ultrasonico, si cualquiera de los 2 detecta una persona, activa un alarma sonando un buzzer
El punto es que me pidieron que tenga unos LEDs, y que yo añada la función para que los LEDs se enciendan dependiendo que hora del día ingreso.
Por ejemplo si quiero que los LEDs enciendan de 5 a 6pm, escribirlo por serial y que se active, espero su ayuda gracias.
Busque en foros, google, pero no me da la solución, he visto algo sobre RTC pero instale una librería que no me funcionó, no se cual sería.
Adjunto código:
int pir = 2;
int trigger = 11;
int led = 8;
int echo = 10;
long duration = 0;
int cm = 0;
int inch = 0;
int buzzer = 3;
void setup()
{
pinMode(13, OUTPUT);
pinMode(pir, INPUT);
pinMode(trigger, OUTPUT);
pinMode(echo, INPUT);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop()
{
pir = digitalRead(2);
digitalWrite(trigger, LOW);
digitalWrite(trigger, HIGH);
digitalWrite(trigger, LOW);
duration = pulseIn(echo, HIGH);
cm = duration * 0.030 / 2;
inch = duration * 0.0133 / 2;
if (pir == HIGH)
{
digitalWrite(13, HIGH);
digitalWrite(buzzer, HIGH);
} else
{
digitalWrite(13, LOW);
digitalWrite(buzzer, LOW);
}
delay(10);
if (inch < 50)
{
digitalWrite(led, HIGH);
digitalWrite(buzzer, HIGH);
}
else {
digitalWrite(led, LOW);
digitalWrite(buzzer, LOW);
}
if (inch < 30) {
Serial.print("CM: ");
Serial.println(cm);
}
delay(500);
}
El problema es que el maestro quiere que implemente eso sin un componente mas
Osea, que haga eso de encender leds a la hora que yo lo ingrese pero con puro codigo, no se si sea posible
Hola @elmamis69 ,
Hay una biblioteca muy buena para simular un RTC. Es TimerOne.h. con él si el arduino tiene un buen cristal tiene muy buena precisión, y para mantener el tiempo que necesita para mantener el arduino encendido. Biblioteca: TimerOne - Arduino Reference
Disculpen pero le añadí un sensor magnético para puertas y ventanas, no se si sepan cuales son, el punto es que cuando se separan los sensores, se enciende la alarma, pero al regresarla, se apaga.
Como podría implementar para que cuando se active el alarma, solamente se apague si le mando por Serial "A" (Apagar alarma).
int led = 13;
int reedswitch = 5;
int buzzer = 2;
int val = 0;
void setup() {
pinMode(led,OUTPUT);
pinMode(reedswitch, INPUT);
pinMode (buzzer, OUTPUT);
}
void loop() {
val = digitalRead(reedswitch);
if(val == LOW){
digitalWrite(led, HIGH);
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(led,LOW);
digitalWrite(buzzer, LOW);
delay(200);
}
}
@elmamis69 por favor detente!!
Debes ordenar tus ideas porque estas tirando cosas y lo mejor es que lo hagas del modo correcto.
Para eso estamos nosotros que tenemos mas experiencia y podemos guiarte.
Sigue el consejo de @anon90500195 o bien el de @J-M-L usando milllis(). Pero para ello debes ir a la librería y estudiarla. Comenzando por instalarla y luego de hacerlo correr alguno de sus ejemplos.
Eso simplemente te pondrá con ALGO que brinde la hora. Luego verás como se ajusta a la hora LOCAL en la que estas.
Una vez que tengas la hora. Estudias como comparar lo que Arduino te dice contra lo que el profesor te ha pedido. Es decir que se encienda o apague en detrminado lapso de tiempo.
Asi que ya sabes que hacer.
En Documentación => Indice de temas tutoriales tienes tutoriales de millis() pero mejor es que uses lo de @anon90500195 considerando que estas empezando.
Uno de los ejemplos de la libreria es swRTCLed.ino
Jaja lo siento @Surbyte, entre un poco de pánico ya que estaba por entregar mi proyecto final y no sabía como hacerle
Mis disculpas sinceras, en serio, perdón
De hecho mi entrega era para ayer pero veré si puedo terminarlo yo
Muchas gracias por sus ayudas, aun no lo logro hacer pero ando en eso, gracias!
Finales de semestre de universidad, mucho estrés, perdonen, aunque se que no tienen la culpa.
Saludos
Hola @anon90500195 ,
tienes razón, me expresé mal.
Yo uso TimerOne.h como generador de tiempo,
Timer1.initialize (1000); // 1000 nosotros,
y luego desarrollo el resto del tiempo cuenta
(segundo, minuto, hora, día, mes y año) en mi boceto.
Te entiendo, yo ni siquiera uso la librería, hago mi propia ISR para el timer, pero para un principiante complicarle habiendo una librería que lo hace me parece que es ponerle piedras en el camino.
Pero, obvio que tu solución también es totalmente válida.