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
Encoder: Zahl mit einer Nachkommastelle erzeugen
12.08.2014, 22:07
Beitrag #41
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
(12.08.2014 22:01)Thorsten Pferdekämper schrieb:  Na wenn beim Übersetzen schon ein Fehler kommt, dann landet der Sketch auch nicht auf dem Arduino.

"Solltemperatur" was not declared in this scope
...bedeutet genau das, was es sagt: Wo auch immer Du es verwendest ist es dem System nicht bekannt. Deklariere es mal außerhalb von allem anderen.

Ok Fehler ist weg, aber der Encoder funktioniert nicht. Es bleibt 0.00
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.08.2014, 09:45
Beitrag #42
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
Um Dir helfen zu können, brauchen wir Dein Coding.
...aber so wie ich Dich inzwischen kenne, hast Du wahrscheinlich die vorherige Deklaration so gelassen, wie sie war und damit das globale Solltemperatur mit einer lokalen Version verdeckt.
Code:
double Solltemperatur = erzeugteZahl/10;
Lass mal da das "double" weg.
Das nächste Mal helfe ich nur noch, wenn ich Coding sehe.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.08.2014, 15:24
Beitrag #43
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
(13.08.2014 09:45)Thorsten Pferdekämper schrieb:  Um Dir helfen zu können, brauchen wir Dein Coding.
...aber so wie ich Dich inzwischen kenne, hast Du wahrscheinlich die vorherige Deklaration so gelassen, wie sie war und damit das globale Solltemperatur mit einer lokalen Version verdeckt.
Code:
double Solltemperatur = erzeugteZahl/10;
Lass mal da das "double" weg.
Das nächste Mal helfe ich nur noch, wenn ich Coding sehe.

Hi,
der Encoder erzeugt nur 0.00, trotz Deines Vorschlags.
Hier mein Code:

#include <Encoder.h>
#include <Sensirion.h>
#include <LiquidCrystal.h>


const uint8_t dataPin = 13;
const uint8_t clockPin = 11;

float Temperatur;
float Luftfeuchte;
float Taupunkt;
double Solltemperatur;



Sensirion Temperatursensor = Sensirion(dataPin, clockPin);

/*Display-Pinbelegung (RS, R/W, ENABLE, D4, D5, D6, D7)*/
LiquidCrystal lcd(8, 9, 10, 2, 3, 4, 7);

Encoder myEnc(5, 6);

void setup()
{
/*Serielle Verbindung auf 9600 Bits/Sekunde gesetzt*/
Serial.begin(9600);
Serial.println("Erzeugte Solltemperatur:");

/*Display-Setup: die anzahl der Zeichen, die Anzahl der Zeilen*/
lcd.begin(16, 2);
}

long oldPosition = -999;

void loop()
{
long newPosition = myEnc.read()/4;
if (newPosition != oldPosition) {
oldPosition = newPosition;
double erzeugteZahl = newPosition;
Solltemperatur = erzeugteZahl/10;
Serial.println(Solltemperatur);
}

Temperatursensor.measure(&Temperatur, &Luftfeuchte, &Taupunkt);

/*Cursor setzen*/
lcd.setCursor(0, 0);
lcd.print("Isttemp:");
lcd.setCursor(9, 0);
lcd.print(Temperatur);

lcd.setCursor(0, 1);
lcd.print("Solltemp:");
lcd.setCursor(10, 1);
lcd.print(Solltemperatur);

/* Ausgabe auf dem SerialMonitor zur Überprüfung der Sensor-Werte während der Programmierphase*/
Serial.print("Temperature: ");
Serial.print(Temperatur);
Serial.print(" C, Luftfeuchte: ");
Serial.print(Luftfeuchte);
Serial.print(" %, Taupunkt: ");
Serial.print(Taupunkt);
Serial.println(" C");
Serial.println(Solltemperatur);

delay(1000);

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.08.2014, 16:34
Beitrag #44
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
Hi,
ich nehme mal an, dass das delay(1000) daran Schuld ist. Ich weiß nicht, wie die Encoder-Klasse implementiert ist, aber angenommen Du hast einen Uno oder was ähnliches, dann gibt es keine Interrupts für Pin 5 und 6. D.h. es wird wahrscheinlich irgendwie gepollt.
Lass mal versuchsweise das delay(1000) weg bzw. ersetze es durch Folgendes direkt vor dem Aufruf von Temperatursensor.measure:
Code:
static long last = 0;
   if(last - millis() < 1000) exit;
   last = millis();

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.08.2014, 16:46 (Dieser Beitrag wurde zuletzt bearbeitet: 13.08.2014 16:47 von Cray-1.)
Beitrag #45
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
(13.08.2014 16:34)Thorsten Pferdekämper schrieb:  Hi,
ich nehme mal an, dass das delay(1000) daran Schuld ist. Ich weiß nicht, wie die Encoder-Klasse implementiert ist, aber angenommen Du hast einen Uno oder was ähnliches, dann gibt es keine Interrupts für Pin 5 und 6. D.h. es wird wahrscheinlich irgendwie gepollt.
Lass mal versuchsweise das delay(1000) weg bzw. ersetze es durch Folgendes direkt vor dem Aufruf von Temperatursensor.measure:
Code:
static long last = 0;
   if(last - millis() < 1000) exit;
   last = millis();

Tut sich leider auch nichts. Ich habe einen Arduino Uno. Ich habe das Gefühl, dass der Encoder blockiert wird.

#include <Encoder.h>
#include <Sensirion.h>
#include <LiquidCrystal.h>


const uint8_t dataPin = 13;
const uint8_t clockPin = 11;

float Temperatur;
float Luftfeuchte;
float Taupunkt;
double Solltemperatur;


/*Initialisierung des Temperatursensors*/
Sensirion Temperatursensor = Sensirion(dataPin, clockPin);

/*Display-Pinbelegung (RS, R/W, ENABLE, D4, D5, D6, D7)*/
LiquidCrystal lcd(8, 9, 10, 2, 3, 4, 7);

/*Initialisierung des Inkrementalgebers*/
Encoder myEnc(5, 6);

void setup()
{
/*Serielle Verbindung auf 9600 Bits/Sekunde gesetzt*/
Serial.begin(9600);
Serial.println("Erzeugte Solltemperatur:");

/*Display-Setup: die anzahl der Zeichen, die Anzahl der Zeilen*/
lcd.begin(16, 2);
}

long oldPosition = -999;

void loop()
{
long newPosition = myEnc.read()/4;
if (newPosition != oldPosition)
{
oldPosition = newPosition;
double erzeugteZahl = newPosition;
Solltemperatur = erzeugteZahl/10;
Serial.println(Solltemperatur);
}

static long last = 0;
if(last - millis() < 1000) exit;
last = millis();






Temperatursensor.measure(&Temperatur, &Luftfeuchte, &Taupunkt);

/*Cursor setzen*/
lcd.setCursor(0, 0);
lcd.print("Isttemp:");
lcd.setCursor(9, 0);
lcd.print(Temperatur);

lcd.setCursor(0, 1);
lcd.print("Solltemp:");
lcd.setCursor(10, 1);
lcd.print(Solltemperatur);

/* Ausgabe auf dem SerialMonitor zur Überprüfung der Sensor-Werte während der Programmierphase*/
Serial.print("Temperature: ");
Serial.print(Temperatur);
Serial.print(" C, Luftfeuchte: ");
Serial.print(Luftfeuchte);
Serial.print(" %, Taupunkt: ");
Serial.print(Taupunkt);
Serial.println(" C");
Serial.println(Solltemperatur);

//delay(1000);

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.08.2014, 16:46
Beitrag #46
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
CODING

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.08.2014, 17:14
Beitrag #47
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
(13.08.2014 16:46)Thorsten Pferdekämper schrieb:  CODING

Ich habe die Temperaturmessung auskommentiert. Jetzt funktionierts, Encoder und Zahlen auf dem Display. Könnte der Sensor Timingprobleme verursachen?

#include <Encoder.h>
#include <Sensirion.h>
#include <LiquidCrystal.h>


const uint8_t dataPin = 13;
const uint8_t clockPin = 11;

float Temperatur;
float Luftfeuchte;
float Taupunkt;
double Solltemperatur;


/*Initialisierung des Temperatursensors*/
//Sensirion Temperatursensor = Sensirion(dataPin, clockPin);

/*Display-Pinbelegung (RS, R/W, ENABLE, D4, D5, D6, D7)*/
LiquidCrystal lcd(8, 9, 10, 2, 3, 4, 7);

/*Initialisierung des Inkrementalgebers*/
Encoder myEnc(5, 6);

void setup()
{
/*Serielle Verbindung auf 9600 Bits/Sekunde gesetzt*/
Serial.begin(9600);
Serial.println("Erzeugte Solltemperatur:");

/*Display-Setup: die anzahl der Zeichen, die Anzahl der Zeilen*/
lcd.begin(16, 2);
}

long oldPosition = -999;

void loop()
{
long newPosition = myEnc.read()/4;
if (newPosition != oldPosition)
{
oldPosition = newPosition;
double erzeugteZahl = newPosition;
Solltemperatur = erzeugteZahl/10;
Serial.println(Solltemperatur);
}

static long last = 0;
if(last - millis() < 1000) exit;
last = millis();






//Temperatursensor.measure(&Temperatur, &Luftfeuchte, &Taupunkt);

/*Cursor setzen*/
lcd.setCursor(0, 0);
lcd.print("Isttemp:");
lcd.setCursor(9, 0);
lcd.print(Temperatur);

lcd.setCursor(0, 1);
lcd.print("Solltemp:");
lcd.setCursor(10, 1);
lcd.print(Solltemperatur);

/* Ausgabe auf dem SerialMonitor zur Überprüfung der Sensor-Werte während der Programmierphase*/
/*Serial.print("Temperature: ");
Serial.print(Temperatur);
Serial.print(" C, Luftfeuchte: ");
Serial.print(Luftfeuchte);
Serial.print(" %, Taupunkt: ");
Serial.print(Taupunkt);
Serial.println(" C");
Serial.println(Solltemperatur);

//delay(1000);*/

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.08.2014, 17:18 (Dieser Beitrag wurde zuletzt bearbeitet: 13.08.2014 17:19 von Thorsten Pferdekämper.)
Beitrag #48
RE: Encoder: Zahl mit einer Nachkommastelle erzeugen
Hi,
klar, der Sensor braucht auch eine Weile.
Aber: Kleiner Fehler meinerseits:
Code:
if(last - millis() < 1000) exit;
Das ist natürlich Blödsinn. Es muss so heißen:
Code:
if(millis() - last < 1000) exit;
Probier das mal, dann müsste es auch mit dem Sensor gehen.
Könnte sein, dass es etwas holprig ist, aber dagegen kann man vielleicht auch noch was machen.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Ausschaltverzögerung bei einer PV Heizung Hans_Maulwurf 27 704 29.11.2016 23:38
Letzter Beitrag: georg01
  Mehrstellige Zahl aus Keypad StB 7 222 23.11.2016 03:47
Letzter Beitrag: StB
  Zahl von SD-Card Modul einlesen und Var. zuweisen Nafetz 13 294 28.10.2016 10:12
Letzter Beitrag: hotsystems
  encoder clemens5555 17 385 20.10.2016 15:48
Letzter Beitrag: hotsystems
  Innenwiderstand einer Batterie (Rundzelle 1,5V) Einsteiger94 2 204 24.07.2016 11:42
Letzter Beitrag: SkobyMobil
  LCD Menue mit u8glib und Encoder stefanch 1 355 04.06.2016 21:02
Letzter Beitrag: hotsystems
  Brauche etwas Hilfe bei der Umsetzung einer Idee raspido 3 526 23.04.2016 10:26
Letzter Beitrag: rkuehle
  I2C Ansteuerung einer MSM3 (elv mp3 Box) Voreifel 2 310 09.04.2016 17:56
Letzter Beitrag: Voreifel
  Problem: SDFat - Das Ende einer Datei finden und Schleife beenden MartinK 4 486 01.04.2016 05:49
Letzter Beitrag: MartinK
  Problem: RFID code mit Inhalt einer Textdatei auf einer SD Karte vergleichen MartinK 6 505 29.03.2016 16:45
Letzter Beitrag: MartinK

Gehe zu:


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