Windrichtung 8 Sektoren pot.-frei
Moderator: Co-Administratoren
-
- Beiträge: 12115
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
Re: Windrichtung 8 Sektoren pot.-frei
Kannte ich früher auch nicht... hab mich dann energisch dahintergeklemmt
Die Zeile muss mit in die Klasse rein.
Code: Alles auswählen
...
uint8_t winddirValue(bool asIndex = false) {
Serial.println(pcf.digitalRead(P2),DEC);
PCF8574::DigitalInput state = pcf8574.digitalReadAll();
...
-
- Beiträge: 52
- Registriert: 08.03.2019, 12:17
- Hat sich bedankt: 7 Mal
- Danksagung erhalten: 2 Mal
Re: Windrichtung 8 Sektoren pot.-frei
Guten Morgen,
Und schonwieder....
C:\Users\humme\Documents\Arduino\Testsketch_Wdir\Testsketch_Wdir.ino: In member function 'uint8_t PCF8574_WindDir<ADDRESS>::winddirValue(bool)':
Testsketch_Wdir:20:22: error: 'pcf' was not declared in this scope
Serial.println(pcf.digitalRead(P2),DEC);
^~~
C:\Users\humme\Documents\Arduino\Testsketch_Wdir\Testsketch_Wdir.ino: In function 'void loop()':
Testsketch_Wdir:48:22: error: 'class PCF8574_WindDir<56>' has no member named 'digitalRead'
Serial.println(pcf.digitalRead(P2),DEC);
^~~~~~~~~~~
exit status 1
'pcf' was not declared in this scope
https://www.dropbox.com/s/6mffrcfe63v6i ... r.ino?dl=0
Mir fehlt da leider die Ruhe für... (Kids) und somit bin ich für Sachen die ich nicht beherrsche auf Hilfe angewiesen.
Und schonwieder....
C:\Users\humme\Documents\Arduino\Testsketch_Wdir\Testsketch_Wdir.ino: In member function 'uint8_t PCF8574_WindDir<ADDRESS>::winddirValue(bool)':
Testsketch_Wdir:20:22: error: 'pcf' was not declared in this scope
Serial.println(pcf.digitalRead(P2),DEC);
^~~
C:\Users\humme\Documents\Arduino\Testsketch_Wdir\Testsketch_Wdir.ino: In function 'void loop()':
Testsketch_Wdir:48:22: error: 'class PCF8574_WindDir<56>' has no member named 'digitalRead'
Serial.println(pcf.digitalRead(P2),DEC);
^~~~~~~~~~~
exit status 1
'pcf' was not declared in this scope
https://www.dropbox.com/s/6mffrcfe63v6i ... r.ino?dl=0
-
- Beiträge: 12115
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
-
- Beiträge: 52
- Registriert: 08.03.2019, 12:17
- Hat sich bedankt: 7 Mal
- Danksagung erhalten: 2 Mal
Re: Windrichtung 8 Sektoren pot.-frei
Das hat es leider nicht gebracht.
Wieder: exit status 1
'pcf8574' was not declared in this scope
Ist echt schrecklich wenn man wenig zur Lösungsfindung beisteuern kann... Sorry
Wieder: exit status 1
'pcf8574' was not declared in this scope
Code: Alles auswählen
#include <PCF8574.h>
template <uint8_t ADDRESS=0x38>
class PCF8574_WindDir {
private:
PCF8574 pcf8574;
public:
PCF8574_WindDir () : pcf8574(ADDRESS) {}
void init () {
for (uint8_t i = 0; i < 8; i++)
pcf8574.pinMode(i, INPUT);
pcf8574.begin();
}
uint8_t winddirValue(bool asIndex = false) {
Serial.println(pcf8574.digitalRead(P1),DEC);
PCF8574::DigitalInput state = pcf8574.digitalReadAll();
if (state.p0) return asIndex ? 0 : 0;
if (state.p1) return asIndex ? 1 : 15;
if (state.p2) return asIndex ? 2 : 30;
if (state.p3) return asIndex ? 3 : 45;
if (state.p4) return asIndex ? 4 : 60;
if (state.p5) return asIndex ? 5 : 75;
if (state.p6) return asIndex ? 6 : 90;
if (state.p7) return asIndex ? 7 : 105;
return 0;
}
};
PCF8574_WindDir<0x38> pcf;
void setup() {
Serial.begin(57600);
Serial.println();
pcf.init();
}
void loop() {
delay(500);
uint8_t winddir = pcf.winddirValue();
Serial.println("winddir="+String(winddir));
Serial.println(pcf8574.digitalRead(P1),DEC);
}
-
- Beiträge: 12115
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
Re: Windrichtung 8 Sektoren pot.-frei
Es sollte von der loop() in die Klasse.
Also muss doch das da unten raus.
Vielleicht solltest du einfach einen anderen Windsensor nehmen und gut ist.
Es mag nur eine Kleinigkeit sein, warum es bei dir nicht auf Anhieb geht.
Aber so kommen wir wirklich nicht voran.
Also muss doch das da unten raus.
Code: Alles auswählen
#include <PCF8574.h>
template <uint8_t ADDRESS=0x38>
class PCF8574_WindDir {
private:
PCF8574 pcf8574;
public:
PCF8574_WindDir () : pcf8574(ADDRESS) {}
void init () {
for (uint8_t i = 0; i < 8; i++)
pcf8574.pinMode(i, INPUT);
pcf8574.begin();
}
uint8_t winddirValue(bool asIndex = false) {
Serial.println(pcf8574.digitalRead(P1),DEC);
PCF8574::DigitalInput state = pcf8574.digitalReadAll();
if (state.p0) return asIndex ? 0 : 0;
if (state.p1) return asIndex ? 1 : 15;
if (state.p2) return asIndex ? 2 : 30;
if (state.p3) return asIndex ? 3 : 45;
if (state.p4) return asIndex ? 4 : 60;
if (state.p5) return asIndex ? 5 : 75;
if (state.p6) return asIndex ? 6 : 90;
if (state.p7) return asIndex ? 7 : 105;
return 0;
}
};
PCF8574_WindDir<0x38> pcf;
void setup() {
Serial.begin(57600);
Serial.println();
pcf.init();
}
void loop() {
delay(500);
uint8_t winddir = pcf.winddirValue();
Serial.println("winddir="+String(winddir));
}
Ja ist wirklich anstrengend, wenn man für so 5-Minuten-Tests wochenlang braucht...
Vielleicht solltest du einfach einen anderen Windsensor nehmen und gut ist.
Es mag nur eine Kleinigkeit sein, warum es bei dir nicht auf Anhieb geht.
Aber so kommen wir wirklich nicht voran.
-
- Beiträge: 52
- Registriert: 08.03.2019, 12:17
- Hat sich bedankt: 7 Mal
- Danksagung erhalten: 2 Mal
Re: Windrichtung 8 Sektoren pot.-frei
Nabend,
ich kann mich nur nochmal entschuldigen, dass es so schwierig mit mir ist...
Also wenn ich P1 gegen VCC(GND) taste, dann wechselt er von "1" auf "0", siehe rot markierter Bereich.
ich kann mich nur nochmal entschuldigen, dass es so schwierig mit mir ist...
Also wenn ich P1 gegen VCC(GND) taste, dann wechselt er von "1" auf "0", siehe rot markierter Bereich.
-
- Beiträge: 12115
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
Re: Windrichtung 8 Sektoren pot.-frei
Und wenn du nun mal P1 gegen P0...P7 ersetzt, klappt das dann bei allen 8 Pins so?
-
- Beiträge: 12115
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2150 Mal
- Kontaktdaten:
Re: Windrichtung 8 Sektoren pot.-frei
Okay... Kann es sein, dass offene Pins bei dir als "HIGH" ausgelesen werden?
Wenn du einen Pin weder auf VCC noch auf GND brückst, kommt dann 1 oder 0 ?
Kannst du mal jeden Pin mit jeweils einem Widerstand, also insgesamt 8 Stück, (10k...100k irgendwas) auf VCC ziehen?
Dann sind die Pins definitiv alle HIGH.
Und dann mal nacheinander gegen GND brücken.
Mit dem Sketch:
Wenn du einen Pin weder auf VCC noch auf GND brückst, kommt dann 1 oder 0 ?
Kannst du mal jeden Pin mit jeweils einem Widerstand, also insgesamt 8 Stück, (10k...100k irgendwas) auf VCC ziehen?
Dann sind die Pins definitiv alle HIGH.
Und dann mal nacheinander gegen GND brücken.
Mit dem Sketch:
Code: Alles auswählen
#include <PCF8574.h>
template <uint8_t ADDRESS = 0x38>
class PCF8574_WindDir {
private:
PCF8574 pcf8574;
public:
PCF8574_WindDir () : pcf8574(ADDRESS) {}
void init () {
for (uint8_t i = 0; i < 8; i++)
pcf8574.pinMode(i, INPUT);
pcf8574.begin();
}
uint8_t winddirValue(bool asIndex = false) {
if (pcf8574.digitalRead(P0) == 0) return asIndex ? 0 : 0;
if (pcf8574.digitalRead(P1) == 0) return asIndex ? 1 : 15;
if (pcf8574.digitalRead(P2) == 0) return asIndex ? 2 : 30;
if (pcf8574.digitalRead(P3) == 0) return asIndex ? 3 : 45;
if (pcf8574.digitalRead(P4) == 0) return asIndex ? 4 : 60;
if (pcf8574.digitalRead(P5) == 0) return asIndex ? 5 : 75;
if (pcf8574.digitalRead(P6) == 0) return asIndex ? 6 : 90;
if (pcf8574.digitalRead(P7) == 0) return asIndex ? 7 : 105;
return 0;
}
};
PCF8574_WindDir<0x38> pcf;
void setup() {
Serial.begin(57600);
Serial.println();
pcf.init();
}
void loop() {
delay(500);
uint8_t winddir = pcf.winddirValue();
Serial.println("winddir=" + String(winddir));
}