• 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
problem z DS1307
#1
Sad 
Witam szanownych forumowiczów !
Zaczynam dopiero zabawę z Adrduino i od razu mam pod górkę :/ z większością problemów sobie poradziłem ale tu nie wiem co mam zrobić , mianowicie chcę zrobić sterownik do lampki nad akwarium z funkcją świtu i zmierzchu / i to mniej więcej mi się udało / ale DS1307 wskazuje zły czas / jak w załączniku / jak go naprostować żeby pokazywał czas rzeczywisty ?


Kod:
#include <DS1307.h>                      
#include <Wire.h>                    

#define DS1307_ADDRESS 0x68                

byte zero = 0x00;                    


int LED1 = 11;                        

int GODZ;                                
int MIN;                                  
int SEC;                                  

void setup()
{
 Wire.begin();
 pinMode(LED1, OUTPUT);                
 Serial.begin(9600);                
}

void loop()
{

 int CZAS = (GODZ * 60 + MIN);            

 int dzienG = 2;                      
 int dzienM = 52;                      

 int nocG = 13;                        
 int nocM = 50;                        

 int maxD1 = 100;                      

 int ZMIANA = 60;                    
 int STEP = 1;                      

 int czas1 = (dzienG * 60 + dzienM);          
 int czas2 = (nocG * 60 + nocM);            

 GODZ = (RTC.get(DS1307_HR, true));            
 MIN = (RTC.get(DS1307_MIN, true));          
 SEC = (RTC.get(DS1307_SEC, true));          

 static int D1;                      

 int mocD1[61] =                      
 {
   240, 230, 220, 210, 200, 195, 190, 185, 180, 175,
   170, 165, 160, 155, 150, 145, 140, 135, 130, 125,
   120, 115, 110, 105, 100, 95, 90, 85, 80, 75,
   70, 65, 60, 55, 50, 45, 40, 35, 30, 25,
   20, 19, 18, 17, 16, 15, 14, 13, 12, 11,
   10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
   0
 };

 if (CZAS < czas1)                       //noc
 {
   D1 = 0;
   Serial.print("noc ");
 }
 if ((czas1 <= CZAS) && (CZAS < (czas1 + ZMIANA)))  
 {
   D1 = ((CZAS - czas1) / STEP);
   Serial.print("swit ");
 }
 if (((czas1 + ZMIANA) <= CZAS) && (CZAS < (czas2 - ZMIANA)))
 {
   D1 = maxD1;
   Serial.print("dzien ");
 }
 if (((czas2 - ZMIANA) <= CZAS) && (CZAS < czas2))
 {
   D1 = ((czas2 - CZAS) / STEP);
   Serial.print("zmrok ");
 }
 if (czas2 <= CZAS)                    
 {
   D1 = 8;
   Serial.print("noc ");
 }

 analogWrite(LED1, mocD1[D1]);

 Serial.print("LED:");
 Serial.print((D1 * 100) / maxD1);
 Serial.print(" ");
 Serial.print(GODZ);
 Serial.print(":");
 Serial.print(MIN);
 Serial.print(":");
 Serial.print(SEC);
 Serial.println(" ledy ");
 delay (1000);
}

z góry dziękuję za odp , dla Was to pewnie pestka a ja się juz 2 dzien z tym męczę Sad


Załączone pliki Miniatury
   
 
Odpowiedź
#2
A dałeś rezystor 4.7k ohma miedzy 1w a vcc.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#3
(25-11-2016, 19:57)adix napisał(a): A dałeś rezystor 4.7k ohma miedzy 1w a vcc.

Mam u siebie ten sam układ i na początku musiałem ustawić zegar (w załączniku jak ja to zrobiłem) później wgrałem program ten co w 1 poście i ruszyło bez problemu. Żadnych rezystorów nie dawałem


Załączone pliki Miniatury
   
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości