Greek Aquarist's Boards - Φόρουμ συζητήσεων γιά το χόμπυ του Ενυδρείου

Επιστροφή   Greek Aquarist's Boards - Φόρουμ συζητήσεων γιά το χόμπυ του Ενυδρείου > Γενικά > DIY . Φτιάχτο μόνος σου

DIY . Φτιάχτο μόνος σου Ο τίτλος τα λέει όλα.

 
 
Εργαλεία Θεμάτων Τρόποι εμφάνισης
Prev Προηγούμενο μήνυμα   Επόμενο Μήνυμα Next
  #7  
Παλιά 12-12-14, 16:49
aquadominus Ο χρήστης aquadominus δεν είναι συνδεδεμένος
Member
 
Εγγραφή: 01-09-2012
Περιοχή: Μαρούσι
Μηνύματα: 69
Προεπιλογή

Λοιπόν τα κατάφερα και το έκανα και δούλεψε, ανοιγοκλείνουν τα Ρελέ μια χαρά βρήκα που είχα κάνει λάθος άλλαξα και λιγάκι τον κώδικα και είναι οκ.

Κώδικας:
#include <LiquidCrystal.h>
#include <math.h>
#include "RTClib.h"
#include <Time.h>
#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is plugged into pin 3 on the Arduino
#define ONE_WIRE_BUS 3

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

// Assign the addresses of your 1-Wire temp sensors.
DeviceAddress WaterTemperatureSensor = { 0x28, 0x62, 0x30, 0xCA, 0x03, 0x00, 0x00, 0xF1 };
DeviceAddress DeviceTemperatureSensor = { 0x10, 0x9A, 0x3E, 0x84, 0x02, 0x08, 0x00, 0x4D };
DeviceAddress RoomTemperatureSensor = { 0x10, 0xA1, 0xFE, 0x83, 0x02, 0x08, 0x00, 0xFC };

float WaterTemperature = 0;
float DeviceTemperature = 0;
float RoomTemperature = 0;

/*
LCD Connections:
rs (LCD pin 4) to Arduino pin 12
rw (LCD pin 5) to Arduino pin 11
enable (LCD pin 6) to Arduino pin 10
LCD pin 15 to Arduino pin 13
LCD pins d4, d5, d6, d7 to Arduino pins 5, 4, 3, 2
*/

LiquidCrystal lcd(12, 11, 4, 5, 6, 7);
RTC_DS1307 RTC;
long previousLCDMillis = 0;    // for LCD screen update
long lcdInterval = 20000;
// screen to show 
int screen = 0;    
int screenMax = 2;
bool screenChanged = true;   // initially we have a new screen,  by definition 
// defines of the screens to show
#define SCREEN1 0
#define SCREEN2 1
#define SCREEN3 2

int ledPinFilter1 = 26;                 // LED connected to digital pin 28 (Filter 1)
int ledPinFilter2 = 27;                 // LED connected to digital pin 31 (Filter 2)
int ledPinHeater = 29;                  // LED connected to digital pin 27 (Heater)
int ledPinFan = 28;
int RelayPinHeater = 24;
int RelayPinFan = 25;

void setup(void) 
{
  //-------( Initialize Pins so relays are inactive at reset)----
  digitalWrite(RelayPinHeater, HIGH); // Set the Heater to HIGH (off)
  
  //---( THEN set pins as outputs )----  
  pinMode(ledPinFilter1, OUTPUT);      // sets the digital pin as output
  pinMode(ledPinFilter2, OUTPUT);
  pinMode(ledPinHeater, OUTPUT);
  pinMode(ledPinFan, OUTPUT);
  pinMode(RelayPinHeater, OUTPUT);
  pinMode(RelayPinFan, OUTPUT);
  delay(4000); //Check that all relays are inactive at Reset

   
  // Start up the library
  sensors.begin();  
  // set the resolution to 10 bit (good enough?)
  sensors.setResolution(WaterTemperatureSensor, 12);
  sensors.setResolution(RoomTemperatureSensor, 11);
  sensors.setResolution(DeviceTemperatureSensor, 11);
  
  Serial.begin(9600);
Wire.begin();
RTC.begin();
lcd.begin(20, 4);
pinMode(8,OUTPUT);
 
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}  
  lcd.begin(20, 4);              // rows, columns.  use 16,2 for a 16x2 LCD, etc.
  showWelcome();  
  delay(4000);   // to show message on screen}
     
}

void showWelcome()
{
  lcd.clear();
  lcd.setCursor(1, 0);           
  lcd.print("My Amazon Aquarium");
  lcd.setCursor(3, 1);          
  lcd.print("initialising...");
  lcd.setCursor(1, 2);          
  lcd.print("Aquarium Controler");  
}

void showScreen1()
{
  lcd.clear();
  lcd.setCursor(1, 0);// set the cursor to column 1, line 0 (first row)
  lcd.print("My Amazon Aquarium");
  lcd.setCursor(0, 1);       
  lcd.print("Water Temp:");
  printTemperature(WaterTemperatureSensor); 
  lcd.print((char)223); 
  lcd.print("C");
  lcd.setCursor(0, 2);
  lcd.print("PH: 6.8");
  lcd.setCursor(0, 3);
  lcd.print("TDS: 150");
  lcd.setCursor(9, 3);
  lcd.print("ms");
}

void showScreen2()
{
  lcd.clear();
  DateTime now = RTC.now();
  lcd.setCursor(1, 0);
  lcd.print("My Amazon Aquarium");
  lcd.setCursor(0, 1);
  lcd.print(now.day(), DEC);
  lcd.print('/');
  lcd.print(now.month(), DEC);
  lcd.print('/');
  lcd.print(now.year(), DEC);
  lcd.setCursor(12, 1);
  if (now.hour()<10)
  lcd.print('0');
  lcd.print(now.hour(), DEC);
  lcd.print(':');
  if (now.minute()<10)
  lcd.print('0');
  lcd.print(now.minute(), DEC);
  lcd.print(':');
  if (now.second()<10)
  lcd.print('0');
  lcd.print(now.second(), DEC);
  lcd.setCursor(0, 2);
  lcd.print("Room Temp:");  
  printTemperature(RoomTemperatureSensor);
  lcd.print((char)223);
  lcd.print("C");
  lcd.setCursor(0, 3);
  lcd.print("PH: 6.8");
  lcd.setCursor(8, 3);
  lcd.print("TDS: 150");
  lcd.setCursor(16, 3);
  lcd.print("ms");
  
}

void showScreen3()
{
  lcd.clear();
  DateTime now = RTC.now();
  lcd.setCursor(1, 0);// set the cursor to column 1, line 0 (first row)
  lcd.print("My Amazon Aquarium");
  lcd.setCursor(6, 1);
  if (now.hour()<10)
  lcd.print('0');
  lcd.print(now.hour(), DEC);
  lcd.print(':');
  if (now.minute()<10)
  lcd.print('0');
  lcd.print(now.minute(), DEC);
  lcd.print(':');
  if (now.second()<10)
  lcd.print('0');
  lcd.print(now.second(), DEC);
  lcd.setCursor(0, 2);
  lcd.print("Water Temp:");
  printTemperature(WaterTemperatureSensor); 
  lcd.print((char)223); 
  lcd.print("C");
  lcd.setCursor(0, 3);
  lcd.print("Device Temp:");  
  printTemperature(DeviceTemperatureSensor);
  lcd.print((char)223);
  lcd.print("C");
 
  
}


void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  float WaterTemperaturetempC = sensors.getTempC(WaterTemperatureSensor);
  float DeviceTemperaturetempC = sensors.getTempC(DeviceTemperatureSensor);
  float RoomTemperaturetempC = sensors.getTempC(RoomTemperatureSensor);
  if (tempC == -127.00) {
  lcd.print("Error");
  } else {
  //lcd.print(tempC, 1);
  WaterTemperature = (WaterTemperaturetempC);
  DeviceTemperature = (DeviceTemperaturetempC);
  RoomTemperature = (RoomTemperaturetempC);
  lcd.print(tempC, 1);
}
}
void loop(void) {
  unsigned long currentLCDMillis = millis();

  // MUST WE SWITCH SCREEN?
  if(currentLCDMillis - previousLCDMillis > lcdInterval)              // save the last time you changed the display 
  {
    previousLCDMillis = currentLCDMillis; 
    screen++;
    if (screen > screenMax) screen = 0;  // all screens done? => start over
    screenChanged = true; 
  }

  // debug Serial.println(screen);


  // DISPLAY CURRENT SCREEN
  {
    screenChanged = false; // reset for next iteration
    switch(screen)
    {
    case SCREEN1: 
      showScreen1(); 
      break;
    case SCREEN2: 
      showScreen2();
      break;
    case SCREEN3:
      showScreen3();
      break;
    default:
      // cannot happen -> showError() ?
      break;
    }
    
    sensors.requestTemperatures();
   
    if(WaterTemperature <= 27.8)
    {
    digitalWrite(RelayPinHeater, LOW);    // sets the Heater on     
    }
      
    if(WaterTemperature >= 28.0)
    {
    digitalWrite(RelayPinHeater, HIGH);    // sets the Heater off 
    }
    delay(500);
    }
    
    if(digitalRead(RelayPinHeater) == LOW)
    {    
    digitalWrite(ledPinHeater, HIGH);      // sets the LED on
    }
    else{
    digitalWrite(ledPinHeater, LOW);       // sets the LED off
    }
}
Τώρα σειρά έχει να προγραμματίσω κάποια Ρελλέ να ανοίγουν συγκεκριμένες ώρες, και μετά να βάλω και κουμπιά on/off για να παρακάμπτω το πρόγραμμα.


To be Continued.........
Απάντηση με παράθεση
 


Συνδεδεμένοι χρήστες που διαβάζουν αυτό το θέμα: 1 (0 μέλη και 1 επισκέπτες)
 

Δικαιώματα - Επιλογές
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας

Που θέλετε να σας πάμε;

Παρόμοια Θέματα
Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
arduino controller ikaria_jim DIY . Φτιάχτο μόνος σου 5 09-02-14 16:21
GHL Profilux aquarium controller aquarius Λοιπός εξοπλισμός 83 12-11-10 18:06
dimming controller με Arduino board aquaman DIY . Φτιάχτο μόνος σου 12 07-04-10 07:39
Arduino aquarium controller chris the trik DIY . Φτιάχτο μόνος σου 33 06-04-10 20:23
Aquarium Controller mitas Εξοπλισμός - Τεχνολογία Γλυκού νερού 16 15-10-03 01:01

No_parrots

Όλες οι ώρες είναι GMT +2. Η ώρα τώρα είναι 18:53.


Forum engine powered by : vBulletin Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright 2000-2016 Greek Aquarists Board
Page generated in 0,06912 seconds with 13 queries