Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Firmware : Placa Disparo sirene fabrica
- Autoria : Fabio Oliveira
- Placa : FS-1.0
- Microchip : Arduino Nano
- Compilador : Arduino IDE 2.1.0
- Esquemático: FS-1.0
- Aplicação : Disparo de sirene com dias e horas programadas
- Revisões : 01) Projeto do Firmware - 07/06/23 | 16:14
- */
- //Inclusao das bibliotecas
- #include <Wire.h>
- #include "RTClib.h"
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27,16,2); //Inicializa LCD I2C com o endereço
- const int PINO_RELE = 2; //pino definido para conexao com o rele
- int incomingByte;
- int DIA = 0; //Variavel de dia da semana
- int HORA = 0; //variavel de hora
- int MINUTO = 0; //variavel de minuto
- int SEGUNDOS = 0; //variavel de segundos
- RTC_DS1307 rtc; //Objeto rtc da classe DS1307
- char diasDaSemana[7][12] = {"Domingo", "Segunda", "Terca", "Quarta", "Quinta", "Sexta", "Sabado"}; //Dias da semana
- void setup () {
- lcd.init(); // Inicia o Display
- lcd.backlight(); // Inicia o Backlight
- Wire.begin();
- rtc.begin();
- lcd.begin(16, 2); //Defina tamanho do LCD
- Serial.begin(9600); //Inicializa serial
- if (!rtc.begin()) { //Se o RTC nao for inicializado, faz
- lcd.println("RTC COM PROBLEMA"); //Imprime o texto
- while (1); //Trava o programa
- }
- //rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Ajuste Automático da hora e data
- //rtc.adjust(DateTime(2023, 6, 09, 10, 53, 00)); //Ajusta o tempo do RTC para a data e hora definida pelo usuario.
- delay(100); //100 Milissegundos
- pinMode(PINO_RELE, OUTPUT);
- digitalWrite(PINO_RELE, HIGH);
- if (!rtc.isrunning()) {
- }
- }
- /*void printnn(int n) {
- // imprime um numero com 2 digitos
- // acrescenta zero `a esquerda se necessario
- String digitos = String(n);
- if (digitos.length() == 1) {
- digitos = "0" + digitos;
- }
- lcd.print(digitos);
- }*/
- void loop ()
- {
- DateTime agora = rtc.now(); // Faz a leitura de dados de data e hora
- DIA = (agora.dayOfTheWeek());
- HORA = (agora.hour());
- MINUTO = (agora.minute());
- SEGUNDOS = (agora.second());
- lcd.setCursor(0, 0); //Defina linha e coluna do LCD
- lcd.print(diasDaSemana[agora.dayOfTheWeek()]); //Imprime dia da semana
- //lcd.print(' '); //Imprime espaço
- lcd.print(' '); //Imprime espaço
- lcd.print(agora.day(), DEC); //Imprime dia
- lcd.print('/'); //Imprime barra
- lcd.print(agora.month(), DEC); //Imprime mes
- lcd.print('/'); //Imprime barra
- lcd.print(agora.year(), DEC); //Imprime ano
- lcd.setCursor(0, 1); // Defina linha e coluna do LCD
- lcd.print("Horas "); //Imprime texto
- lcd.print(agora.hour(), DEC); //Imprime hora
- lcd.print(':'); //Imprime dois pontos
- lcd.print(agora.minute(), DEC); //Imprime os minutos
- lcd.print(':'); //Imprime dois pontos
- lcd.print(agora.second(), DEC); //Imprime os segundos
- delay(1000);
- // Periodo da manha
- if (DIA == 1,2,3,4,5 && HORA == 1 && MINUTO == 00 && SEGUNDOS == 0) {
- alarme();
- }
- if (DIA == 1,2,3,4,5 && HORA == 2 && MINUTO == 00 && SEGUNDOS == 0) {
- alarme();
- }
- if (DIA == 5 && HORA == 4 && MINUTO == 52 && SEGUNDOS == 0) {
- alarme();
- }
- if (DIA == 1,2,3,4,5 && HORA == 5 && MINUTO == 52 && SEGUNDOS == 0) {
- alarme();
- }
- if (DIA == 1,2,3,4,5 && HORA == 7 && MINUTO == 00 && SEGUNDOS == 00) {
- alarme();
- }
- if (DIA == 1,2,3,4,5 && HORA == 9 && MINUTO == 00 && SEGUNDOS == 00) {
- alarme();
- }
- if (DIA == 1,2,3,4,5 && HORA == 9 && MINUTO == 15 && SEGUNDOS == 20) {
- alarme();
- }
- if (DIA == 1,2,3,4,5 && HORA == 12 && MINUTO == 00 && SEGUNDOS == 0) {
- alarme();
- }
- //periodo da tarde
- if (DIA == 1,2,3,4,5 && HORA == 13 && MINUTO == 00 && SEGUNDOS == 0) {
- alarme();
- }
- if (DIA == 5 && HORA == 16 && MINUTO == 00 && SEGUNDOS == 0) {
- alarme();
- }
- if (DIA == 1,2,3,4 && HORA == 17 && MINUTO == 00 && SEGUNDOS == 0) {
- alarme();
- }
- if (DIA == 1,2,3,4,5 && HORA == 18 && MINUTO == 00 && SEGUNDOS == 0) {
- alarme();
- }
- if (DIA == 1,2,3,4,5 && HORA == 21 && MINUTO == 00 && SEGUNDOS == 0) {
- alarme();
- }
- if (DIA == 1,2,3,4,5 && HORA == 23 && MINUTO == 00 && SEGUNDOS == 0) {
- alarme();
- }
- if (DIA == 1,2,3,4,5 && HORA == 23 && MINUTO == 15 && SEGUNDOS == 0) {
- alarme();
- }
- }
- void alarme() {
- digitalWrite(PINO_RELE, LOW);
- lcd.clear();
- lcd.setCursor(1, 0);
- lcd.print ("PROGRAMACAO");
- lcd.setCursor(2, 1);
- lcd.print ("SIRENE");
- delay(7000);
- digitalWrite(PINO_RELE, HIGH);
- lcd.clear();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement