• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ds1307 włącznik czasowy
#1
witam wszystkich. Mam następujący problem . Piszę program do sterowania akwarium .
W programie mam wgrane biblioteki:

Kod:
#include <Time.h>
#include <DS1302.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>   
#include <LiquidCrystal_I2C.h>
ale nie mogę opanować ani znależć sposobu w jaki sposub sterować czasem.
np . chciałbym aby przekaznik złapał o godz 16:00 a o godz 22:00 wyłaczył się.
Pozdrawiam .
I z góry dziekuje za jakie kolwiek pomysły
 
Odpowiedź
#2
Sprawdź ten kod poniżej, same biblioteki nic nie dadzą, nie wiem jaki masz wyświetlacz, pod które piny podpięty przekaźnik, ale myślę, że to ogarniesz, u mnie pod 20x4 działało, jeśli masz 16x2, to tutaj:

Kod:
 lcd.begin(20,4); //rozmiar wyświetlacza

musisz zmienić.

Polecam dołożyć klawiaturę i zrobić parametry czasu ( i nie tylko ) nastawne. Są tutaj tematy na forum które bardzo ładnie opisują jak taki sterownik ugryźć.

Kod:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Time.h>
#include <DS1307RTC.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int wlacznik_1 = 2; // pin przekaźnika

// zmienne przechowujące aktualną godzinę i minutę
int godzina = 0;  
int minuta = 0;

// odświeżanie daty na wyświetlaczu co sekundę
unsigned long previousMillis = 0;  
const long interval = 1000;  


void setup() {

 lcd.begin(20,4); //rozmiar wyświetlacza
 lcd.backlight();
 lcd.clear();
 lcd.setCursor(0,0);
 lcd.print("WLACZNIK");
 lcd.setCursor(2,1);
 lcd.print("AUTOMATYCZNY");

 pinMode(wlacznik_1, OUTPUT);
 digitalWrite(wlacznik_1, HIGH);  
}

void loop() {  
 czas(); // wyświetanie czasu
 wlacznik(); // sterowanie włącznikiem
}

void czas() {  
 tmElements_t tm;

 unsigned long currentMillis = millis();

 if (currentMillis - previousMillis >= interval) {
   previousMillis = currentMillis;

 if (RTC.read(tm)) {
   lcd.setCursor(12,3);
   print2digits(tm.Hour);
   godzina = tm.Hour;
   lcd.print(":");
   print2digits(tm.Minute);
   minuta = tm.Minute;
   lcd.print(":");
   print2digits(tm.Second);

   lcd.setCursor(0,3);
   lcd.print(tm.Day);
   lcd.print("/");
   lcd.print(tm.Month);
   lcd.print("/");
   lcd.print(tmYearToCalendar(tm.Year));

 } else {
   lcd.setCursor(15,3);
   if (RTC.chipPresent()) {
     lcd.print("0x0x0x0x");
   } else {
     lcd.print("error");
   }
 }

 }
}

void print2digits(int number) {  
 if (number >= 0 && number < 10) {
   lcd.print('0');

 }
 lcd.print(number);

}

void wlacznik(){  
 // tutaj ustalamy sobie ramy czasowe tj. od 16:00 do 22:00
 if (godzina >= 16 && minuta >= 00 && godzina < 22 && minuta < 00)
 {
   digitalWrite(wlacznik_1, LOW);
   lcd.setCursor(0,2);
   lcd.print("on ");  
 }
 else {
   digitalWrite(wlacznik_1, HIGH);
   lcd.setCursor(0,2);
   lcd.print("off");
 }
}
 
Odpowiedź
#3
Witam a jak podłączyć kilka czasów włączania i wyłączania bo mam z tym problem
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości