Boa Tarde!
Estou tentando fazer com que o LED varie o bilho via PWM ao longo de um tempo pré determinado.
Por exemplo: 15:00 o led inicia com PWM em 0 e a cada minuto ganha adiciona 1 chegando a 240 em 4 horas (19:00). Aguarda uma hora em 240 e começa a diminuir 1, chegando a 0 em mais quatro horas.
Já consegui fazer o led ligar e desligar com o RTC mas estou quebrando a cabeça pra fazer está variação do brilho com o tempo.
#include <Wire.h>
#include <DS1307.h>
#include <LiquidCrystal.h>
int rtc[6];
int LED = 10;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
/* Esta sequencia de comandos deve ser escrita apenas uma vez, para
configurar a hora do Shield RTC 3231. Troque os numeros pela hora atual
RTC.stop();
RTC.set(DS1307_SEC,0); //define o segundo rtc[0]
RTC.set(DS1307_MIN,20); //define o minuto rtc[1]
RTC.set(DS1307_HR,2); //define a hora rtc[2]
RTC.set(DS1307_DOW,0); //define o dia da semana rtc[3]
RTC.set(DS1307_DATE,24); //define o dia rtc[4]
RTC.set(DS1307_MTH,1); //define o mes rtc[5]
RTC.set(DS1307_YR,16); //define o ano rtc[6]
RTC.start();*/
}
void loop()
{
RTC.get(rtc,true);
//Acende led
if (rtc[2] == 16 && rtc[1] == 25) {
digitalWrite(LED,HIGH);
if (rtc[1] == 30){
digitalWrite(LED,LOW);
}}
lcd.setCursor(0, 0);
lcd.print(RTC.get(DS1307_HR,true));
lcd.print(":");
lcd.print(RTC.get(DS1307_MIN,false));
lcd.print(":");
lcd.print(RTC.get(DS1307_SEC,false));
lcd.setCursor(0, 1);
lcd.print (RTC.get(DS1307_DATE,false));
lcd.print ("/");
lcd.print (RTC.get(DS1307_MTH,false));
lcd.print ("/");
lcd.print(RTC.get(DS1307_YR,false)); //
delay (1000);
lcd.clear();
}
alguém tem uma ideia?
abraços
Tags:
Oi EOB, boa noite,
este code deve fazer o que você que com os LEDs.
A versão anterior tinha um erro.
Versão corrigida:
Rui
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por