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
Programmier Hilfe
23.01.2014, 07:20
Beitrag #1
Programmier Hilfe
Guten morgen an alle Rolleyes

ich habe da mal ein Anliegen. Ich würde gerne mein Programm zu Ende bringen aber ich komme einfach nicht weiter.
Denke der Grund ist das ich einfach noch zuwenig erfahrung vom Programmieren haben aber leider habe ich auch nicht mehr viel Zeit, den das Programm sollte bis nächste Woche fertig sein. Ich bin jetzt schon einige Wochen dran doch leider schaffe ich es nicht. Deshalb hoffe ich auf eure Hilfe!

Was soll das Programm könnne, was läuft schon und was fehlt mir noch?

Auf einem 20x4 LCD Display soll die Ist-Temperatur, welche von einem Sensor kommt angezeigt werden. Das klappt auch schon sehr gut.

Dann möchte ich über den Serieller Monitor eine Soll-Temperatur eingeben, welche dann an eine bestimmte Stelle auf dem Display angezeigt werden soll.

Daraus soll der Programm die beiden Werte vergleichen und im falle, dass die IST-Temperatur kleiner wie die Soll-Temperatur dann eine Digitalen Ausgang schalten womit dann ein Relais angesteuert wird.

Wenn die Ist-Temperatur dann den Wert des Soll-Wert erreicht hat soll der Digitaler Ausgang wieder auf low gesetzt werden.

Im Display soll dann auch noch angezeigt werden welchen Zustand der Ausgang hat.

So das war es erst mal. Ich sende euch auch mal meinen Code mit und Bilder wie es mal aussehen soll.


Code:

#include <Wire.h>
#include <OneWire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);

OneWire ds(12);

void setup(void)
{
Serial.begin(9600);

lcd.begin(20,4);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
}
void loop(void)
{
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
{
float celsius;

if ( !ds.search(addr))
{
ds.reset_search();

delay(250);

return;
}
for( i = 0; i < 8; i++)

if (OneWire::crc8(addr, 7) != addr[7])
{
return;
}
switch (addr[0])
{
}
ds.reset();
ds.select(addr);
ds.write(0x44,1);

delay(1000);

present = ds.reset();

ds.select(addr);
ds.write(0xBE);

for ( i = 0; i < 9; i++)
{
data[i] = ds.read();
}
int16_t raw = (data[1] << 8) | data[0];

if (type_s)
{
raw = raw << 3;

if (data[7] == 0x10)
{
raw = (raw & 0xFFF0) + 12 - data[6];
}
}
else
{
byte cfg = (data[4] & 0x60);

if (cfg == 0x00) raw = raw & ~7;

else if (cfg == 0x20) raw = raw & ~3;
else if (cfg == 0x40) raw = raw & ~1;
}
celsius = (float)raw / 16.0;

lcd.setCursor(0,0);
lcd.print("I-Temp:");
lcd.setCursor(8,0);
lcd.print(celsius);
lcd.setCursor(14,0);
lcd.print("Grad C");
lcd.setCursor(0,1);
lcd.print("S-Temp:");
lcd.setCursor(8,1);
lcd.print("23.00");
lcd.setCursor(14,1);
lcd.print("Grad C");
lcd.setCursor(0,3);
lcd.print("Heizung:");
lcd.setCursor(9,3);
lcd.print("AUS");
}
}

Bilder:

   

   

Vielen Danke schon mal im Vorraus. Ich weiss das ist nicht Selbstverständlich aber ich würde mich sehr freuen wenn ihr mir Helfen würdet.

Gruß

Sascha
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.01.2014, 15:06
Beitrag #2
RE: Programmier Hilfe
Hallo Sascha,

in Deinem Programm wird der Code nach return nicht weiter ausgeführt.

Siehe hierzu folgenden Link:
http://arduino.cc/de/Reference/Return

LG
Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.01.2014, 15:09
Beitrag #3
RE: Programmier Hilfe
(23.01.2014 15:06)Georg schrieb:  Hallo Sascha,

in Deinem Programm wird der Code nach return nicht weiter ausgeführt.

Siehe hierzu folgenden Link:
http://arduino.cc/de/Reference/Return

LG
Georg

Hallo Georg,

danke für deine Nachricht :-)

Ich verstehe nicht ganz was du damit meinst. Den so wie der Code hier drin ist läuft er ja eigentlich Huh

Gruß

Sascha
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.01.2014, 15:27
Beitrag #4
RE: Programmier Hilfe
Hallo Sascha,

sorry, der Link oben zeigt auf die falsche Seite. Den entsprechenden Text habe ich deshalb jetzt über die Zwischeneinlage eingefügt:

Der Befehl return eignet sich hervorragend, um bestimmte Code-Abschnitte zu testen, ohne dass möglicherweise fehlerhafter Code auskommentiert werden muss.

void loop(){

// zu testender Code-Abschnitt

return;

// Weiterer fehlerhafter Code steht hier
// Dieser Code wird nicht ausgeführt
}

Wenn in der Funktion loop den Befehl return ausgeführt wird, springt das Programm zurück zur Funktion setup. Vermutlich wird das Programm dann neu
gestartet.

LG
Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.01.2014, 15:38 (Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2014 15:47 von Sascha87.)
Beitrag #5
RE: Programmier Hilfe
Hallo Georg,

Danke schon mal für diesen guten Tipp. Habe den Befehl Return raus genommen.

meinst du, du kannst mir auch weiterhelfen um mein Programm zuende zuschreiben?

Big GrinUndecidedConfused

Gruß

Sascha

Ich habe meinen Code um folgendes erweitert, aber leider habe ich dabei zwei Probleme.

1. Erst nachdem ich eine Eingabe über den Seriellen Monitor gesendet habe zeigt das Display überhaubt was an. Vorher leider nichts :-(

2. Wenn ich den Wert 25.00 eingabe dann steht dort 53.00 was ist das den jetzt?

if (Serial.available())
{
delay(100);

while (Serial.available() > 0)
{
float Soll = Serial.read();


lcd.print(Soll);
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.01.2014, 16:15
Beitrag #6
RE: Programmier Hilfe
Hallo Sascha,

ich habe wenig Zeit um ständig bei einem Projekt am Ball bleiben zu können.
Bei Deinem Programm fehlt noch die Datenübertragung vom seriellen Monitor.
Hier ein Beispiel. Die ACII-Zeichen '1' wird als Integer-Werte (49 Dezimal) vom seriellen Monitor übertragen.

int gesendeterWert = 0;

void setup()
{
Serial.begin(9600); // Konfiguration Serielle Schnittstelle
}

void loop() {
if (Serial.available() > 0) {
gesendeterWert = Serial.read();
if (gesendeterWert == '1')
{
Serial.println("Wert war 1"); // Ausgabe falls Wert = 1
}
else
{
Serial.println("Wert war nicht 1"); // Ausgabe falls Wert <> 1
}
}

LG
Georg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.01.2014, 10:43
Beitrag #7
RE: Programmier Hilfe
Hey,

möchstest du mit dem Setzen des Pins eine Veränderung an der Temperatur (Heizung o.ä.) vornehmen? Falls ja.:
Auch wenn die Temperatur eine vergleichsweise lange Zeitkonstante hat (sie ist träge und ändert sich nur langsam), solltest du zumindest über ein Tiefpassverhalten nachdenken (PT1-Regelung).

Dein Programm wird sonst permanent den Pin auf high und low setzen.
temp < soll --> pin high --> temp > soll --> pin low --> temp < sol l --> pin high.... Je nach Auflösung sehr schnell (ggf. mehrmals pro Sekunde).

Wie gesagt, "falls". Wink

MfG demo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 123 14.10.2016 21:40
Letzter Beitrag: hotsystems
Sad Ich brauche Hilfe Prosac 4 237 09.10.2016 18:39
Letzter Beitrag: Prosac
  at24c256 Hilfe Gandalf 6 249 29.08.2016 18:59
Letzter Beitrag: MKc
Smile Progammier Neuling Codeschloss bittet um Hilfe Donalonso 2 287 27.08.2016 18:23
Letzter Beitrag: Binatone
  Hilfe gesucht. Webserver Statsiche und Dynamische HTMl Seite b3ta 11 454 22.08.2016 08:07
Letzter Beitrag: b3ta
  Hilfe: Mega2560 - ENC 28J60 - MYSQL Gandalf 1 181 28.07.2016 16:30
Letzter Beitrag: Gandalf
  Selbstfahrender Roboter Programm änderung hilfe ? arekklone 11 550 06.07.2016 14:59
Letzter Beitrag: Binatone
  Hilfe beim Arduino Shield reimundko 6 460 05.06.2016 11:28
Letzter Beitrag: rpt007
  Brauche etwas Hilfe bei der Umsetzung einer Idee raspido 3 536 23.04.2016 10:26
Letzter Beitrag: rkuehle
  Hilfe bei RTC und SD baron007 21 1.591 13.03.2016 17:36
Letzter Beitrag: hotsystems

Gehe zu:


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