Advertisement
Guest User

Füllstandsmessung einer Zisterne auf OLED-Display 1,3 “

a guest
Sep 12th, 2020
765
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.45 KB | None | 0 0
  1. #include
  2. #include "U8g2lib.h"
  3. #include "HCSR04.h"
  4. U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset= */ U8X8_PIN_NONE);         // für Display
  5. u8g2_uint_t offset;
  6. u8g2_uint_t width;
  7. #define ECHOPIN 12
  8. #define TRIGPIN 13
  9. UltraSonicDistanceSensor Abstandssensor(TRIGPIN,ECHOPIN);       //Das Objekt "Abstandsensor" vom Typ "UltraSonicDistanceSensor" repräsentiert
  10.                                                                                      //den Ultraschallsensor. Zur Initialisierung werden nacheinander die Pins für
  11.                                                                                      //das Trigger- und Echosignal übergeben.                                            
  12. float INHALT = 0;                                                       //nutzbarer Zisterneninhalt                                          
  13. float MengeJeCM = 47.14;                                      //gibt die Menge in Liter je cm an (Durchmesser = 2,45 m, Pi = 3,14159)
  14. float MinAbst = 32.40;                                             //gibt den Mindestabstand des Ultraschallgebers zur max. Füllhöhe in cm an
  15. float UschMessWert = 0.00;                                   //gibt den Ultraschallmesswert der Sonde in cm an
  16. int UMW = 0;
  17. int INH = 0;
  18. void setup(){  
  19.   u8g2.begin();
  20.   u8g2.setFont(u8g2_font_luRS12_tf);                  //u8g2_font_luRS12_tf, gibt die Zeichentyp an
  21.   u8g2.setFontMode(0);                                           // original = 0          
  22.   Serial.begin(9600);                                                 // 9600 Baud für die serielle Monitor-Anzeige
  23. }
  24. void loop() {
  25.     UschMessWert = (Abstandssensor.measureDistanceCm());  //die Funktion "measureDistanceCm()" gibt den Abstand in cm als Fließkomma-
  26.                                                                                                               //wert an die Variable "UschMessWert" (Ultraschallmesswert) weiter
  27.     UMW = UschMessWert * 10;                                 //cm werden in mm umgewandelt und die Kommastellen gestrichen (Integer)
  28.     delay(9000);                                                           //verzögert weitere Messungsweitergaben um (xxxx Millisekunden)                
  29.     INHALT = MengeJeCM * (120 - (UschMessWert - MinAbst));      //berechnet den nutzbaren Zisterneninhalt in Liter      
  30.     INH = INHALT;                                                        //Kommastellen werden gestrichen und in einen Integerwert umgewandelt
  31.   if (UschMessWert > 0) {                                         //unterdrückt fehlerhafte, negative Messwerte                                  
  32.     Serial.print("Höhe :  ");                                        //Ansteuerung des internen Monitors, z.Z. nur zur Kontrollr
  33.     Serial.print(UMW);                                               //UschMessWert
  34.     Serial.println(" mm");
  35.     Serial.print("Menge: ");
  36.     Serial.print(INH);                                                   //INHALT
  37.     Serial.println(" Ltr.");
  38.    
  39.     u8g2.firstPage();                                                    //Ansteuerung des OLED-Displays 1,3 Zoll
  40.     u8g2.drawUTF8(0,25,"Höhe :");
  41. //    u8g2.drawUTF8(54,25,"1376");                      //nur zum testen
  42.     u8g2.drawUTF8(55,25,UMW);                          
  43.     u8g2.drawUTF8(98,25,"mm");
  44.     u8g2.drawUTF8(0,55,"Inhalt:");
  45.     u8g2.drawUTF8(55,55,INH);
  46.     u8g2.drawUTF8(99,55,"Ltr.");
  47.     u8g2.nextPage();
  48.     u8g2.clearBuffer();
  49.     }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement