1
παιδια προσφατα πηρα το arduino uno + ds1307 και θελω να κανω μια ερωτηση το ds1307 δεν θελει button; εννοω κραταει την ωρα η θελει ρυθμιση καθε φορα που μενει εκτος ρευματος; με την αλλαγη ωρας αλλαζει η θελει ρυθμιση; πηρα προσφατα οπως ειπα το
1.arduino uno r3
2.ds1307 AT24C32
3.DHT22
4.lcd 20x4 i2c
λοιπον κατεβασα την πλατφορμα και κατεβασα τις βιβλιοθηκες ειδα τα παραδειγματα και διαβασα μερικες λεπτομεριες στο νετ και τελικα εφτιαξα αυτον τον κωδικα... οποιος θελει μπορει να με διορθωσει! ειμαι καινουργιος και οποια παρατηρηση σιγουρα θα με κανει καλυτερο!!
στο κυκλωμα δεν εχω βαλει καμια αντισταση απλα ειναι ολα συνδεδεμενα μεταξυ τους και τρεχει μια χαρα για την ωρα πανω στο breadboard! οταν ομως μου δωσετε και σεις το οκ οτι ειμαι οκ και παρω απαντησεις οτι δεν ή χρειαζεται καποιο κουμπακι για ρυθμιση ωρας τοτε θα πρεπει να φτιαξω ενα ωραιο κουτακι! θα πρεπει να βγαλω το ολοκληρωμενο (ATmega32 σωστα; αλλα μετα πως θα συνδεσω το ρευμα; η θα πρεπει να το αφησω πανω και να χασω ολη την πλακετα και να παω για καινουργια; ευχαριστω!! γενικα οτι πληροφοριες νομιζετε ειναι παντα ευπροσδεκτες!! ( οι εικονες ειναι χθεσινες ελπιζω να μην σας πειραζει )
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "RTClib.h"
#include <DHT22.h>
#define BACKLIGHT_PIN 3
#define DHT22_PIN 2
LiquidCrystal_I2C lcd(0x27, 2,1,0,4,5,6,7);
RTC_DS1307 RTC;
DHT22 myDHT22(DHT22_PIN);
byte thermometro[8] = //icon for termometer
{
B00100,
B01010,
B01010,
B01110,
B01110,
B11111,
B11111,
B01110
};
byte igrasia[8] = //icon for water droplet
{
B00100,
B00100,
B01010,
B01010,
B10001,
B10001,
B10001,
B01110,
};
void setup(void)
{
Wire.begin();
lcd.backlight();
lcd.begin(20,4);
lcd.createChar(1,thermometro);
lcd.createChar(2,igrasia);
lcd.home();
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(HIGH);
RTC.begin();
RTC.adjust(DateTime(__DATE__, __TIME__));
delay (3000);
}
void loop(void)
{
DateTime now = RTC.now();
DHT22_ERROR_t errorCode;
errorCode = myDHT22.readData();
switch(errorCode)
case DHT_ERROR_NONE:
lcd.setCursor(0,0);
lcd.print("Weather Station");
lcd.setCursor(0,1);
printDigits(now.hour());
lcd.print(":");
printDigits(now.minute());
lcd.print(":");
printDigits(now.second());
delay(1000);
lcd.setCursor(0,2);
int dayOfWeek = now.dayOfWeek();
switch(dayOfWeek){
case 1:
lcd.print("Monday");
break;
case 2:
lcd.print("Tuesday");
break;
case 3:
lcd.print("Wednesday");
break;
case 4:
lcd.print("Thursday");
break;
case 5:
lcd.print("Friday");
break;
case 6:
lcd.print("Saturday");
break;
case 7:
lcd.print("Sunday");
break;
delay(1000);
}
lcd.setCursor(10,2);
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
lcd.setCursor(0,3);
lcd.write(1);
lcd.setCursor(2,3);
lcd.print(myDHT22.getTemperatureC());
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(12,3);
lcd.write(2);
lcd.setCursor(14,3);
lcd.print(myDHT22.getHumidity());
lcd.print("%");
}
void printDigits(int digits){
if(digits < 10)
lcd.print('0');
lcd.print(digits);
}