Windrichtung 8 Sektoren pot.-frei
Moderator: Co-Administratoren
Re: Windrichtung 8 Sektoren pot.-frei
Grrrrr.
das ist scheiße wenn man sich nicht mit Programmierungen auskennt.....
das ist scheiße wenn man sich nicht mit Programmierungen auskennt.....
-
- Beiträge: 8011
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 436 Mal
- Danksagung erhalten: 970 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();
...
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: 8011
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 436 Mal
- Danksagung erhalten: 970 Mal
- Kontaktdaten:
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: 8011
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 436 Mal
- Danksagung erhalten: 970 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.
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: 8011
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 436 Mal
- Danksagung erhalten: 970 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?
Re: Windrichtung 8 Sektoren pot.-frei
Sehr interessant....
überall das gleiche bei P1 bis P7...
außer bei P0... siehe Bild dort zeigt er zusätzlich "winddir=15"
überall das gleiche bei P1 bis P7...
außer bei P0... siehe Bild dort zeigt er zusätzlich "winddir=15"
-
- Beiträge: 8011
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 436 Mal
- Danksagung erhalten: 970 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));
}