INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Meerwasser Überwachung mit Arduino-Nano
11.12.2015, 16:27 (Dieser Beitrag wurde zuletzt bearbeitet: 12.01.2016 14:28 von Bitklopfer.)
Beitrag #1
Meerwasser Überwachung mit Arduino-Nano
Hallo!
bin neu hier im Forum und habe auch direkt eine Frage.
Zu mir, ich bin Anfänger im Programmierbereich. Mit dem Arduino kann ich LEDs schalten, dimmen, etc, allerdings hört es bei der Arbeit mit dem Licht- und Temperatursensor dann auch auf.

Habe mir eine LED Lampe selber gebaut mit roten, weißen und blauen LEDS. Diese sind an eine KSQ mit PWM Port angeschlossen. Bisher habe ich nur ein Programm geschrieben, dass die LEDs so hochdimmt, wie und wann ich möchte. Das heißt morgens gehen beispielsweise erst die blauen langsam an, dann kommen die roten dazu, etc. Bisher habe ich somit durch while schleifen (dimmen) und delays einen Tagesablauf simuliert. Der Arduino wird morgens per Zeitschaltuhr eingeschaltet und abends wieder auf. Die Tag-Simulation funktioniert somit einwandfrei.

Was ich allerdings noch realisieren möchte ist folgendes:
- Display, auf dem angezeigt wird:
a) mit welcher Helligkeit die einzelnen Lampen leuchten
b) welche Temperatur das Wasser im Aquarium hat*
c) welche Temperatur die Lampe hat*
d) wie der Füllstand des Aquarium ist (wegen Verdunstung)**

- eine einfache "Tastatur" mit buttons/Touch-Display, sodass ich zu jeder Tageszeit, oder auch wenn die lampen aus sind, eine blaulichtphase einschalten kann: habe mir das so vorgestellt, dass bei betätigen eines Knopfes langsam das blaue licht hochgedimmt werden und die anderen langsam runter (10min) und dann für eine halbe stunde anhält und nach dieser Zeit der "normale" Zustand wieder angenommen wird.

* möchte das mit digitalen Temperatursensorgen machen: http://www.ebay.de/itm/181825425243

**http://www.ebay.de/itm/181803254097

Hoffe es findet sich jemand, der das Projekt interessant ist und mir helfen kann.
Mein aktuelles Problem ist erstmal, da die Lichtschaltung ja mit delays linear durchläuft, dass ich ja nicht gleichzeitig auch eine Temperatur-Messung alle 5 Minuten machen kann..

Viele Grüße
Tim
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.12.2015, 16:54
Beitrag #2
RE: Arduino Meerwasser-Nano Überwachung
Vielen Dank erstmal!
Ja stimmt, das mit der Füllstandsanzeige ist ein guter einwand. Wie könnte man des denn analog mit einem Schwimmer realisieren? oder gibt es auch da schon fertige Prdodukte?
Ja alles klar, werde mir erstmal eine RTC kaufen und dann Schritt für Schritt versuchen weiter zu machen.

Viele Grüße
Tim
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.12.2015, 17:20
Beitrag #3
RE: Arduino Meerwasser-Nano Überwachung
Hallo,

das hier ist ein Widerspruch in sich:
Zitat:da die Lichtschaltung ja mit delays linear durchläuft

Wenn du delays einbaust, läuft nichts mehr. Während eines delays wartet der Controller, bis die Zeit um ist und reagiert auch auf keine weiteren Befehle.

Daher wie auch Lötzinnerhitzer schon schrieb, delays unbedingt ersetzen.

Einen Tipp noch für die Füllstandsanzeige, sowas lässt sich auch mit Ultraschall lösen. Ich habe z.B. eine Wasserzisterne, die per Ultraschall auf "Füllstand" geprüft wird. Funktioniert jetzt seit ca. 4 Monaten.

Wenn du etwas mit der RTC steuern möchtest, solltest du zwingend die DS3231 einsetzen, die hat eine sehr gute Genauigkeit.

Und um das Ganze dann auch richtig zu bedienen, ist eine Menüsteuerung im Display eine wichtige Sache. Diese solltest du rechtzeitig mit einplanen. Im nachhinein wird es schwierig für eine Implementierung.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.12.2015, 17:38
Beitrag #4
RE: Arduino Meerwasser-Nano Überwachung
(11.12.2015 17:24)Lötzinnerhitzer schrieb:  mit den preiswerten US-Wandlern wird das nicht lange halten, da
Zitat:Meerwasser

Steht da was von preiswert?
Es gibt diese Sensoren komplett und Wasserdicht gekapselt.
Die "Spieldinger" sind natürlich dafür nicht geeignet.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.12.2015, 19:25
Beitrag #5
RE: Arduino Meerwasser-Nano Überwachung
Hallo!
habe erstmal eine RTC (RTC DS3231) und einen LCD Display gekauft.
Bin gerade dabei etwas zu testen. Display-Ansteuerung ist soweit kein Problem, die Uhr habe ich auch mittels Sketch von einem Youtuber kalibrieren können und etwas modifiziert.
Ich habe mir das so vorgestellt, dass in der loop Funktion dann ein Term steht der ungefähr folgendes sagt:

while(Uhrzeit zwischen Uhrzeit 1 und Uhrzeit 2)
dimme Lampe hoch

Funktioniert mit meinem Sketch allerdings nicht.. Was mache ich falsch?


#include <Wire.h>
#include "ds3231.h"
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int LCD_Helligkeit = 6;

uint8_t time[8];

unsigned int recv_size = 0;
unsigned long prev, interval = 1000;

void setup()
{

Wire.begin();
DS3231_init(DS3231_INTCN);


lcd.begin(16, 2);
lcd.clear();

pinMode(6,OUTPUT); // PIN 6 ist Helligkeit
}

void loop()
{

analogWrite(LCD_Helligkeit,20); // Helligkeit des Displays

int w=0;

int m;
int h;

unsigned long now = millis();
struct ts t;

// show time once in a while
if ((now - prev > interval) && (Serial.available() <= 0)) {
DS3231_get(&t); //Get time


lcd.setCursor(0,1); //Go to second line of the LCD Screen
lcd.print(t.hour);
lcd.print(":");
if(t.min<10)
{
lcd.print("0");
}
lcd.print(t.min);

t.min = m;
t.hour = h;

}

while(t.min>19 && t.min<22 && h==19)
{
lcd.setCursor(0,0);
lcd.print(w);
w++;
delay(1000);

}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.12.2015, 19:42 (Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015 19:45 von hotsystems.)
Beitrag #6
RE: Arduino Meerwasser-Nano Überwachung
Du solltes die "while-Schleife" durch ein "if-Anweisung" ersetzen.
Eine Schleife in der Loop blockiert die Loop und kann zu Problemen führen.
Die Variable "h" hat hier meiner Ansicht keine Funktion, da sie leer ist.

Du solltest den Sketch hier in Code-Tags einsetzen, damit dieser besser lesbar ist.
Dann können wir evtl. noch mehr finden.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.12.2015, 19:49
Beitrag #7
RE: Arduino Meerwasser-Nano Überwachung
Aber ich möchte die Lampe ja langsam hochdimmen. Zum Beispiel zwischen 15:00 und 15:30, dass die Farbe weiß um 25 von 255 einheiten hochgedimmt wird. Dann müsste ich ja 25 if anweisungen schreiben.

Alles klar, mache ich in Zukunft!

Habe gerade noch was geändert und der integer w wird jetzt auch hochgezählt, allerdingst stoppt dafür die Uhrzeit und geht nicht weiter..

Code:
#include <Wire.h>
#include "ds3231.h"
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

int LCD_Helligkeit = 6;

uint8_t time[8];

unsigned int recv_size = 0;
unsigned long prev, interval = 1000;



void setup()
{
    
    Wire.begin();
    DS3231_init(DS3231_INTCN);
  
    
    lcd.begin(16, 2);
    lcd.clear();

    pinMode(6,OUTPUT);      // PIN 6 ist Helligkeit
}



void loop()
{

  analogWrite(LCD_Helligkeit,20);         // Helligkeit des Displays


   float taq;       //Temperatur AQ
   float tl;        // Temperatur Lampe
   int w=0;  
   int m;
   int h;
  
    unsigned long now = millis();
    struct ts t;

      lcd.setCursor(0,0);
      lcd.print("A:");
      lcd.print(taq,1);
      lcd.print((char)223);
      lcd.print("C  L:");
      lcd.print(tl,1);
      lcd.print((char)223);
      lcd.print("C");

    // show time once in a while
    if ((now - prev > interval) && (Serial.available() <= 0)) {
        DS3231_get(&t); //Get time
        
        
        lcd.setCursor(0,1); //Go to second line of the LCD Screen
        lcd.print(t.hour);
        lcd.print(":");
        if(t.min<10)
        {
          lcd.print("0");
        }
        lcd.print(t.min);  
        
        m = t.min;
        h = t.hour;

    }

   while(t.min>19 && t.min<44 && h==19)
   {
    lcd.setCursor(7,1);
    lcd.print(w);
    w++;
    delay(1000);
    
   }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.12.2015, 19:59
Beitrag #8
RE: Arduino Meerwasser-Nano Überwachung
Die Uhr stoppt, weil der Code in der While-Schleife hängen bleibt.
Auch wegen des delays.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  TimerOne und I²C und Arduino Nano Mathias 0 31 05.12.2016 18:22
Letzter Beitrag: Mathias
  Arduino Nano --> ATtiny 84A Mathias 25 894 15.07.2016 16:26
Letzter Beitrag: hotsystems
  Programme vom UNO auf nano , mini Pro portieren Probleme anwo 19 1.176 17.04.2016 21:12
Letzter Beitrag: hotsystems
  I²C vom NANO zum PI Probleme mit High/Low Bit Tobias1984 4 331 29.02.2016 00:00
Letzter Beitrag: hotsystems
  Problem beim Upload auf Nano (vermutlich allgemein) Lemartes 9 836 01.02.2016 22:24
Letzter Beitrag: Lemartes
  Daten auf SD-Card werden nur geschrieben, wenn Nano am USB-Port hängt Nathea 6 481 24.01.2016 16:42
Letzter Beitrag: Nathea
  16Bit PWM bei Uno bzw. Nano a.part 2 517 23.11.2015 20:32
Letzter Beitrag: a.part
  Arduino nano und ESP8266 Junano 1 1.091 17.11.2015 07:02
Letzter Beitrag: Junano
  Nano dccduino Sketch aufspielen hgpa 9 1.730 26.08.2015 16:06
Letzter Beitrag: hotsystems
  Arduino Nano Arduinoneuling 9 1.801 14.06.2015 16:38
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste