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
Float-Werte mit Bubble-Sort sortieren
25.11.2020, 16:17
Beitrag #1
Float-Werte mit Bubble-Sort sortieren
Hallo,

ich möchte gerne meine gemessenen Stromwerte aus einem Array sortiert anzeigen lassen im seriellen Monitor, jedoch geht es nur wenn es Int, also Ganzzahlen sind und leider irgendwie nicht bei Float also Gleitkommazahlen wie ich es gerne haben möchte, daher meine Frage ob und was ich im Code ändern muss.

Code:
//-------- Bibliotheken --------//
#include <LiquidCrystal_I2C.h>            //Version 1.0.7
#include <Wire.h>
#include <Adafruit_INA219.h>              //Version 1.0.9
#include <Adafruit_BusIO_Register.h>      //Version 1.3.2
#include <MapFloat.h>

//-------- Strommesser INA219 --------//
Adafruit_INA219 ina219;

//-------- LCD-Display --------//
LiquidCrystal_I2C lcd(0x27, 20, 4);

//-------- Millis/Zeiten --------//
unsigned long vorherigeZeit1 = 0;
unsigned long aktuelleZeit1;
const long interval1 = 50;


//-------- Start der Setup-Void --------//
void setup(void)
{
  //-------- Initialisierung und Start des seriellen Monitors und des LCD-Displays --------//
  Serial.begin(115200);
  lcd.init();
  lcd.backlight();

  //-------- Start des Programms und des INA219-Strommesssensors --------//
  while (!Serial)
  {
    delay(10);
  }
  uint32_t currentFrequency;
  Serial.println("Programm-Start!");
  if (! ina219.begin())
  {
    Serial.println("Kein INA219-Strommesssensor gefunden...");
    while (1)
    {
      delay(10);
    }
  }
  Serial.println("Der INA219-Strommesssensor gibt folgende Werte aus:");
}

void loop(void)
{
  {
    //-------- Mittelwert-Variablen --------//
    const int Messungen_Strom = 20;                 // Anzahl Messungen - Strom
    float Array_Strom[Messungen_Strom];             // Array für Messwerte - Strom
    float Durchschnitt_Strom = 0;                   // Durchschnittswert - Strom

    aktuelleZeit1 = millis();
    {
      if (aktuelleZeit1 - vorherigeZeit1 >= interval1)
      {
        vorherigeZeit1 = aktuelleZeit1;

        //-------- Variablen für Strom, Spannung und Leistung --------//
        float Strom_mA = 0;

        //-------- Deklaration der Variablen vom INA219 Strommesssensor --------//
        Strom_mA = ina219.getCurrent_mA();

        //-------- Ausgabe von Daten im seriellen Monitor --------//
        {
          Serial.print("Strom gemessen:       ");
          Serial.print(Strom_mA);
          Serial.println(" mA");
          Serial.println("");
          //-------- Mittelwert bliden - Strom --------//
          //---- Werte einlesen ----//
          for (int i = 0; i < Messungen_Strom; i++)
          {
            Array_Strom[i] = ina219.getCurrent_mA();
          }
          //---- Werte aufaddieren ----//
          for (int i = 0; i < Messungen_Strom; i++)
          {
            Durchschnitt_Strom = Durchschnitt_Strom + Array_Strom[i];
          }
          //---- Summe durch Anzahl ----//
          Durchschnitt_Strom = Durchschnitt_Strom / Messungen_Strom;

          //---- Ausgabe im seriellen Monitor ----//

//          Serial.print("Wert 1: ");
//          Serial.println(Array_Strom[0]);
//          Serial.print("Wert 2: ");
//          Serial.println(Array_Strom[1]);
//          Serial.print("Wert 3: ");
//          Serial.println(Array_Strom[2]);
//          Serial.print("Wert 4: ");
//          Serial.println(Array_Strom[3]);
//          Serial.print("Wert 5: ");
//          Serial.println(Array_Strom[4]);
//          Serial.print("Wert 6: ");
//          Serial.println(Array_Strom[5]);
//          Serial.print("Wert 7: ");
//          Serial.println(Array_Strom[6]);
//          Serial.print("Wert 8: ");
//          Serial.println(Array_Strom[7]);
//          Serial.print("Wert 9: ");
//          Serial.println(Array_Strom[8]);
//          Serial.print("Wert 10: ");
//          Serial.println(Array_Strom[9]);
//          Serial.print("Wert 11: ");
//          Serial.println(Array_Strom[10]);
//          Serial.print("Wert 12: ");
//          Serial.println(Array_Strom[11]);
//          Serial.print("Wert 13: ");
//          Serial.println(Array_Strom[12]);
//          Serial.print("Wert 14: ");
//          Serial.println(Array_Strom[13]);
//          Serial.print("Wert 15: ");
//          Serial.println(Array_Strom[14]);
//          Serial.print("Wert 16: ");
//          Serial.println(Array_Strom[15]);
//          Serial.print("Wert 17: ");
//          Serial.println(Array_Strom[16]);
//          Serial.print("Wert 18: ");
//          Serial.println(Array_Strom[17]);
//          Serial.print("Wert 19: ");
//          Serial.println(Array_Strom[18]);
//          Serial.print("Wert 20: ");
//          Serial.println(Array_Strom[19]);

          sortieren(Array_Strom, Messungen_Strom);
          Serial.print("Sortierte Werte: ");
          for (int i = 0; i < Messungen_Strom; i++) {
            Serial.println(Array_Strom[i]);
            Serial.print("       ");
          }
          Serial.println("");
          Serial.print("Max Number: ");
          Serial.print(Array_Strom[19]);
          Serial.println("");
          Serial.print("Min Number: ");
          Serial.print(Array_Strom[0]);
          Serial.println("");
        }
      }
    }
  }
}

void sortieren(int a[], int size)
{
  for (int i = 0; i < (size - 1); i++)
  {
    for (int o = 0; o < (size - (i + 1)); o++)
    {
      if (a[o] > a[o + 1])
      {
        int t = a[o];
        a[o] = a[o + 1];
        a[o + 1] = t;
      }
    }
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2020, 16:25 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2020 16:27 von MicroBahner.)
Beitrag #2
RE: Float-Werte mit Bubble-Sort sortieren
(25.11.2020 16:17)süffi1234 schrieb:  
Code:
float Array_Strom[Messungen_Strom];             // Array für Messwerte - Strom
....
          sortieren(Array_Strom, Messungen_Strom);
....
void sortieren(int a[], int size)
}
Es reicht nicht, dein Array_Strom als float zu deklarieren. Du musst dann schon auch den Übergabeparameter in der Funktion 'sortieren' als float deklarieren:
Code:
void sortieren(float a[], int size)

P.S. Einschalten der Warnungen dürfte helfen Wink

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2020, 16:36
Beitrag #3
RE: Float-Werte mit Bubble-Sort sortieren
Danke dir, ich kam da nicht drauf irgendwie obwohl ich in die Fehlermeldung geschaut habe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  String in einzelne Werte teilen Manny 34 2.854 24.04.2021 15:12
Letzter Beitrag: Tommy56
  Werte von IR-Abstandssensor glätten Tonio 15 1.452 29.03.2021 07:54
Letzter Beitrag: SpaghettiCode
  char return Werte sind komplett falsch flowmotion 8 1.432 12.02.2021 22:27
Letzter Beitrag: Tommy56
  Werte im Display per Taster wechseln bmxruler 8 1.086 27.01.2021 11:22
Letzter Beitrag: bmxruler
  Float Werte im EEPROM speichern Kein Progammierer 10 1.621 22.12.2020 21:20
Letzter Beitrag: Tommy56
  Ausgabe von formatierten Float-Werten auf LCD Herby007 7 982 10.12.2020 21:47
Letzter Beitrag: Tommy56
  Werte sortieren süffi1234 2 613 26.11.2020 16:35
Letzter Beitrag: GuaAck
  Werte im Sketch in Variablen speichern Bitklopfer 4 1.268 06.09.2020 10:25
Letzter Beitrag: Bitklopfer
  Serielle Werte in String einlesen um damit zu rechnen 425t 2 1.263 26.08.2020 13:19
Letzter Beitrag: 425t
  Float über I2C zwischen 2 Arduinos UNO Marduino_UNO 23 12.297 18.08.2020 11:53
Letzter Beitrag: hotsystems

Gehe zu:


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