Windrichtung 8 Sektoren pot.-frei

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

hummell
Beiträge: 52
Registriert: 08.03.2019, 12:17
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Windrichtung 8 Sektoren pot.-frei

Beitrag von hummell » 20.02.2021, 08:46

Grrrrr.
das ist scheiße wenn man sich nicht mit Programmierungen auskennt.....
Error.PNG
Error.PNG (17.14 KiB) 619 mal betrachtet

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Windrichtung 8 Sektoren pot.-frei

Beitrag von jp112sdl » 20.02.2021, 21:29

hummell hat geschrieben:
20.02.2021, 08:46
das ist scheiße wenn man sich nicht mit Programmierungen auskennt.....
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();
...

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

hummell
Beiträge: 52
Registriert: 08.03.2019, 12:17
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Windrichtung 8 Sektoren pot.-frei

Beitrag von hummell » 21.02.2021, 10:20

Guten Morgen,
jp112sdl hat geschrieben:
20.02.2021, 21:29
Kannte ich früher auch nicht... hab mich dann energisch dahintergeklemmt ;)
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

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Windrichtung 8 Sektoren pot.-frei

Beitrag von jp112sdl » 21.02.2021, 11:33

Muss da natürlich pcf8574 heißen statt pcf.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

hummell
Beiträge: 52
Registriert: 08.03.2019, 12:17
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Windrichtung 8 Sektoren pot.-frei

Beitrag von hummell » 21.02.2021, 14:06

Das hat es leider nicht gebracht.
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);
}
Ist echt schrecklich wenn man wenig zur Lösungsfindung beisteuern kann... Sorry

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Windrichtung 8 Sektoren pot.-frei

Beitrag von jp112sdl » 21.02.2021, 16:18

Es sollte von der loop() in die Klasse.
Also muss doch das da unten raus. :roll:

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));
}
hummell hat geschrieben:
21.02.2021, 14:06
Ist echt schrecklich wenn man wenig zur Lösungsfindung beisteuern kann... Sorry
Ja ist wirklich anstrengend, wenn man für so 5-Minuten-Tests wochenlang braucht... :cry:

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.

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

hummell
Beiträge: 52
Registriert: 08.03.2019, 12:17
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Windrichtung 8 Sektoren pot.-frei

Beitrag von hummell » 21.02.2021, 18:50

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.
Funktion gegeben.PNG

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Windrichtung 8 Sektoren pot.-frei

Beitrag von jp112sdl » 21.02.2021, 20:06

Und wenn du nun mal P1 gegen P0...P7 ersetzt, klappt das dann bei allen 8 Pins so?

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

hummell
Beiträge: 52
Registriert: 08.03.2019, 12:17
Hat sich bedankt: 7 Mal
Danksagung erhalten: 2 Mal

Re: Windrichtung 8 Sektoren pot.-frei

Beitrag von hummell » 22.02.2021, 11:55

Sehr interessant....
überall das gleiche bei P1 bis P7...
außer bei P0... siehe Bild dort zeigt er zusätzlich "winddir=15"
P0.PNG
Dateianhänge
P2.PNG

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Windrichtung 8 Sektoren pot.-frei

Beitrag von jp112sdl » 22.02.2021, 12:05

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:

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));
}

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“