Folgende Warnungen sind aufgetreten:
Warning [2] Undefined variable $unreadreports - Line: 34 - File: global.php(961) : eval()'d code PHP 8.2.2 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/global.php(961) : eval()'d code 34 errorHandler->error_callback
/global.php 961 eval
/showthread.php 28 require_once
Warning [2] Undefined property: MyLanguage::$thread_modes - Line: 43 - File: showthread.php(1621) : eval()'d code PHP 8.2.2 (Linux)
File Line Function
/inc/class_error.php 153 errorHandler->error
/showthread.php(1621) : eval()'d code 43 errorHandler->error_callback
/showthread.php 1621 eval




Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
ADC / mehr PWM an PI (Display Helligkeit ua)
#70
Das mache ich ja so aber der sensor wackelt ergo habe ich alle Interval zeit einen INT High.

Jetzt ist es so, zu mindestens beim Lichtsensor, das eine Wert Änderung um 1 für den Mensch keine wahrnehmbare Veränderung ist.
Das zum Beispiel auch so Scheint die Sonne ins Zimmer ist die werte Änderung nicht so stark wie wenn man eine Lampe auf den Sensor hält.

So ist es zur Zeit

Code:
bool readAd(byte adress) {
  bool valueChanged = false;
  if(bitRead(configuration.enableAD, adress) == 1) {
    word adValue = 0x00;
    //AD4 und AD5 Belegt durch I²C
    switch(adress) {
      case 0x00:
        adValue = analogRead(A0);
        break;
      case 0x01:
        adValue = analogRead(A1);
        break;
      case 0x02:
        adValue = analogRead(A2);
        break;
      case 0x03:
        adValue = analogRead(A3);
        break;
      case 0x04:
        adValue = analogRead(A6);
        break;
      case 0x05:
        adValue = analogRead(A7);
        break;
    }
    if(adValue != lastAD[adress]) {
      lastAD[adress] = adValue;
      valueChanged = true;
      DebugPrinter.print(F("AD"));
      DebugPrinter.print(adress, HEX);
      DebugPrinter.print(F(" has Value: "));
      DebugPrinter.print(lastAD[adress], HEX);
      DebugPrinter.println();
    }
  }
}

Jetzt könnte ich auch:

if(ABS(adValue - lastAD[adress]) > mininmal Change )

schreiben dann würde ich das nur mit bekomme wenn der AD sich um X (Minimal Change Ändert)

Oder könnte man auch versuchen:

word roundValue = (adValue + lastAD[adress]) / 2;
if(roundValue != lastAD[adress])

Oder sagen wir mal 5 letzte Messwerte Speichern daraus den Mittelwert bilden und den dann mit dem Letzten mittelwert vergleich und dann Melden.
Das aber ganz schön Komplexe zu lesen später im code. Auch kommen dann so sachen hin zu das erst die 5 Messung saubere werte liefert.
Das dann doof wenn man ad dynamsch ein und aus schaltet.

Mal noch ein bisschen drauf rum denken.
Zitieren


Nachrichten in diesem Thema
RE: ADC / mehr PWM an PI (Display Helligkeit ua) - von Der kleine Punky - 13.01.2020, 21:37

Gehe zu:


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