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:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Hilfe bei einer Füllstandsanzeige für eine Zisterne
30.05.2015, 18:35 (Dieser Beitrag wurde zuletzt bearbeitet: 30.05.2015 21:27 von jgrothe.)
Beitrag #1
Hilfe bei einer Füllstandsanzeige für eine Zisterne
Hallo,
hat einer von euch mal Lust mir zu helfen
soll eine Füllstandsanzeige für eine Zisterne
werden.
Ausgabe in cm auf TFT_Display und bei niedrigen Stand
Alarm über ein Pin ausgeben.

Leider kein Ultraschall funkt nicht und der Wasserstand
wird nicht eingeblendet.

Code:
// Konstanten
     // Pins fuer USS
    
     int pingPin = 31; // Ping
     int inPin = 33; // Trigger
     //const unsigned int gndPin = 17; // Ground
     // Messintervall in ms
     int messintervall = 100;
     // Alarmpin
     int alarmPin = 39;
     int alarmdistanz = 100; // in cm
     // Variablen
     // Stringvariable für Ausgabe Entfernung
     String numberString = " ";
     // Entfernungswert
     unsigned long cm;

   void setup(){
      
    
    
            //Serial.begin(9600);
            //Serial.println("Display Test..\r\n");
        LCD_Init();
        LCD_SetDisplayDirect(3);
            //LCD_SetOrientation(2);
            //LCD_fillScreen(LCD_GRAY1);
            //LCD_PaintScreen(LCD_BLACK);
              //DisplayDirect = UP2DOWN;
      LCD_DrawString(60,20," cm ",5,LCD_RED);
        LCD_DrawString(20,140," ",5,LCD_BLUE);
        LCD_DrawString(180,40,"Wassertank ",3,LCD_WHITE);
        LCD_DrawString(120,20,"Inhalt in cm ",3,LCD_WHITE);
            
            //LCD_FillRectangle(0,0,239,319,LCD_YELLOW);
        /*
            for(uint8_t x=0;x<200;x++)
        {
            LCD_DrawLine(x,0,x,100,LCD_YELLOW);
        }
            */
        //Read Device ID
        //static uint16_t identifier;
        //uint16_t identifier = LCD_ReadRegister(0x0);
        //Serial.println(identifier,HEX);
    }
    
        
          
    
    
    
    void loop()
  
  {
  // Variablen für Dauer der ping,
      // Und der Abstand Ergebnis in Zoll und Zentimeter:
      long duration, inches, cm;
    
      // Der PING wird mit einem High-Impuls von 2 oder mehr Mikrosekunden ausgelöst.
      // Geben Sie eine kurze LOW Impuls vorher um eine saubere HIGH-Impuls zu gewährleisten:
      pinMode(alarmPin, OUTPUT);
      pinMode(pingPin, OUTPUT);
      digitalWrite(pingPin, LOW);
      delayMicroseconds(2);
      digitalWrite(pingPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(pingPin, LOW);
      // Der gleiche Ping dient dazu, das Signal von der PING)) zu lesen
      // dessen Dauer ist die Zeit (in Mikrosekunden) vom Senden
      // Die Verbindungsgeschwindigkeit mit dem Empfang sein echo off von dem Objekts.
      pinMode(inPin, INPUT);
      duration = pulseIn(inPin, HIGH);
    
      // Hier wird die Zeit in eine entfernung umgewandelt
      cm = microsecondsToCentimeters(duration);
      
       if(cm > 50)
        {
       digitalWrite(alarmPin, HIGH);
        }
       else
       {
       digitalWrite(alarmPin, LOW);
       }
      
    
      delay(100);
    
      }
      
      long microsecondsToInches(long microseconds){
        // Nach Parallax das Datenblatt für den PING))), gibt es
        // 73,746 Mikrosekunden pro Zoll (dh Schall bei 1130 Fuß pro
        // Sekunde). Dies gibt die Wegstrecke vom Ping,
        // Und zurück, so dass wir durch 2 teilen, müssen um den Abstand zum Hindernisses zu bekommen.
        return microseconds / 74 / 2;}
      
      long microsecondsToCentimeters(long microseconds){
        // Die Schallgeschwindigkeit beträgt 340 m / s oder 29 Mikrosekunden pro Zentimeter.
        return microseconds / 29 / 2;}

Ich sage schon mal Danke und hoffe doch auf einen guten Tipp.ConfusedHuh

(30.05.2015 18:35)jgrothe schrieb:  Hallo,
hat einer von euch mal Lust mir zu helfen
soll eine Füllstandsanzeige für eine Zisterne
werden.
Ausgabe in cm auf TFT_Display und bei niedrigen Stand
Alarm über ein Pin ausgeben.

Leider kein Ultraschall funkt nicht und der Wasserstand
wird nicht eingeblendet.

Code:
// Konstanten
     // Pins fuer USS
    
     int pingPin = 31; // Ping
     int inPin = 33; // Trigger
     //const unsigned int gndPin = 17; // Ground
     // Messintervall in ms
     int messintervall = 100;
     // Alarmpin
     int alarmPin = 39;
     int alarmdistanz = 100; // in cm
     // Variablen
     // Stringvariable für Ausgabe Entfernung
     String numberString = " ";
     // Entfernungswert
     unsigned long cm;

   void setup(){
      
    
    
            //Serial.begin(9600);
            //Serial.println("Display Test..\r\n");
        LCD_Init();
        LCD_SetDisplayDirect(3);
            //LCD_SetOrientation(2);
            //LCD_fillScreen(LCD_GRAY1);
            //LCD_PaintScreen(LCD_BLACK);
              //DisplayDirect = UP2DOWN;
      LCD_DrawString(60,20," cm ",5,LCD_RED);
        LCD_DrawString(20,140," ",5,LCD_BLUE);
        LCD_DrawString(180,40,"Wassertank ",3,LCD_WHITE);
        LCD_DrawString(120,20,"Inhalt in cm ",3,LCD_WHITE);
            
            //LCD_FillRectangle(0,0,239,319,LCD_YELLOW);
        /*
            for(uint8_t x=0;x<200;x++)
        {
            LCD_DrawLine(x,0,x,100,LCD_YELLOW);
        }
            */
        //Read Device ID
        //static uint16_t identifier;
        //uint16_t identifier = LCD_ReadRegister(0x0);
        //Serial.println(identifier,HEX);
    }
    
        
          
    
    
    
    void loop()
  
  {
  // Variablen für Dauer der ping,
      // Und der Abstand Ergebnis in Zoll und Zentimeter:
      long duration, inches, cm;
    
      // Der PING wird mit einem High-Impuls von 2 oder mehr Mikrosekunden ausgelöst.
      // Geben Sie eine kurze LOW Impuls vorher um eine saubere HIGH-Impuls zu gewährleisten:
      pinMode(alarmPin, OUTPUT);
      pinMode(pingPin, OUTPUT);
      digitalWrite(pingPin, LOW);
      delayMicroseconds(2);
      digitalWrite(pingPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(pingPin, LOW);
      // Der gleiche Ping dient dazu, das Signal von der PING)) zu lesen
      // dessen Dauer ist die Zeit (in Mikrosekunden) vom Senden
      // Die Verbindungsgeschwindigkeit mit dem Empfang sein echo off von dem Objekts.
      pinMode(inPin, INPUT);
      duration = pulseIn(inPin, HIGH);
    
      // Hier wird die Zeit in eine entfernung umgewandelt
      cm = microsecondsToCentimeters(duration);
      
       if(cm > 50)
        {
       digitalWrite(alarmPin, HIGH);
        }
       else
       {
       digitalWrite(alarmPin, LOW);
       }
      
    
      delay(100);
    
      }
      
      long microsecondsToInches(long microseconds){
        // Nach Parallax das Datenblatt für den PING))), gibt es
        // 73,746 Mikrosekunden pro Zoll (dh Schall bei 1130 Fuß pro
        // Sekunde). Dies gibt die Wegstrecke vom Ping,
        // Und zurück, so dass wir durch 2 teilen, müssen um den Abstand zum Hindernisses zu bekommen.
        return microseconds / 74 / 2;}
      
      long microsecondsToCentimeters(long microseconds){
        // Die Schallgeschwindigkeit beträgt 340 m / s oder 29 Mikrosekunden pro Zentimeter.
        return microseconds / 29 / 2;}

Ich sage schon mal Danke und hoffe doch auf einen guten Tipp.ConfusedHuh

Ach ja das ist für Mega 2560 und HC-SR04


Hallo, wurde noch ´mal überarbeitet leider ohne erfolg
kann einer helfen. Danke
Code:
void setup(){
      
    
    
              //Serial.begin(9600);
              //Serial.println("Display Test..\r\n");
              LCD_Init();
              LCD_SetDisplayDirect(3);
            //LCD_SetOrientation(2);
            //LCD_fillScreen(LCD_GRAY1);
            //LCD_PaintScreen(LCD_BLACK);
              //DisplayDirect = UP2DOWN;
      
            
            //LCD_FillRectangle(0,0,239,319,LCD_YELLOW);
        /*
            for(uint8_t x=0;x<200;x++)
        {
            LCD_DrawLine(x,0,x,100,LCD_YELLOW);
        }
            */
        //Read Device ID
        //static uint16_t identifier;
        //uint16_t identifier = LCD_ReadRegister(0x0);
        //Serial.println(identifier,HEX);
    }
    
        
          
    
    
    
    void loop()
  
  {
  // Variablen für Dauer der ping,
      // Und der Abstand Ergebnis in Zoll und Zentimeter:
      long duration, inches, cm;
    
      // Der PING wird mit einem High-Impuls von 2 oder mehr Mikrosekunden ausgelöst.
      // Geben Sie eine kurze LOW Impuls vorher um eine saubere HIGH-Impuls zu gewährleisten:
      pinMode(alarmPin, OUTPUT);
      pinMode(pingPin, OUTPUT);
      digitalWrite(pingPin, LOW);
      delayMicroseconds(2);
      digitalWrite(pingPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(pingPin, LOW);
      // Der gleiche Ping dient dazu, das Signal von der PING)) zu lesen
      // dessen Dauer ist die Zeit (in Mikrosekunden) vom Senden
      // Die Verbindungsgeschwindigkeit mit dem Empfang sein echo off von dem Objekts.
      pinMode(inPin, INPUT);
      duration = pulseIn(inPin, HIGH);
    
      // Hier wird die Zeit in eine entfernung umgewandelt
      cm = microsecondsToCentimeters(duration);
      
       if(cm > 50)
        {
       digitalWrite(alarmPin, LOW);
        }
       else
       {
       digitalWrite(alarmPin, HIGH);
       }
       {
      LCD_DrawString(60,20,"cm ",5,LCD_RED);
      LCD_DrawString(60,140,"???",4,LCD_YELLOW);
      LCD_DrawString(180,40,"Wassertank ",3,LCD_WHITE);
      LCD_DrawString(120,20,"Inhalt in cm ",3,LCD_WHITE);
            


       }
      
    
      delay(100);
    
      }
      
      long microsecondsToInches(long microseconds){
        // Nach Parallax das Datenblatt für den PING))), gibt es
        // 73,746 Mikrosekunden pro Zoll (dh Schall bei 1130 Fuß pro
        // Sekunde). Dies gibt die Wegstrecke vom Ping,
        // Und zurück, so dass wir durch 2 teilen, müssen um den Abstand zum Hindernisses zu bekommen.
        return microseconds / 74 / 2;}
      
      long microsecondsToCentimeters(long microseconds){
        // Die Schallgeschwindigkeit beträgt 340 m / s oder 29 Mikrosekunden pro Zentimeter.
        return microseconds / 29 / 2;}
CoolHuhUndecided
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.05.2015, 11:18
Beitrag #2
RE: Hilfe bei einer Füllstandsanzeige für eine Zisterne
Hallo,
der Code sieht schon etwas eigenartig aus. Die Befehle für pinMode(...) gehören doch meiner Meinung nach in den Setup-Bereich, da sie nur einmal aufgerufen werden müssen.

(30.05.2015 18:35)jgrothe schrieb:  Leider kein Ultraschall funkt nicht und der Wasserstand
wird nicht eingeblendet.

In welcher Zeile Code steht denn die Ausgabe des Füllstandes auf´s Display? Wink

Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.05.2015, 12:32 (Dieser Beitrag wurde zuletzt bearbeitet: 31.05.2015 12:35 von jgrothe.)
Beitrag #3
RE: Hilfe bei einer Füllstandsanzeige für eine Zisterne
Hallo, die Ausgabe für cm ??? stehe in der dritten Zeile

pinMode() in der Loop wegen Ultraschall.

Danke das Du hilfst es Funkt jest auch schon der Ultraschall nur die Ausgabe macht
Probleme.
[/code] // Konstanten
// Pins fuer USS

int pingPin = 12; // Echo Ping
int inPin = 11; // Trigger
//const unsigned int gndPin = 17; // Ground
// Messintervall in ms
int messintervall = 100;
// Alarmpin
int alarmPin = 10;
int alarmdistanz = 100; // in cm
// Variablen
// Stringvariable für Ausgabe Entfernung
String numberString = " ";
// Entfernungswert
unsigned long cm;[code]

das ist der neue Belegungs Pin-Plan
und es ist ein Uno 3 nicht mehr Mega 2560

Danke Jörg
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.05.2015, 12:53 (Dieser Beitrag wurde zuletzt bearbeitet: 31.05.2015 13:11 von torsten_156.)
Beitrag #4
RE: Hilfe bei einer Füllstandsanzeige für eine Zisterne
Hallo Jörg,
welchen Fehler erhälst du denn?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.05.2015, 14:18
Beitrag #5
RE: Hilfe bei einer Füllstandsanzeige für eine Zisterne
Hi,
ich persönlich würde es erst einmal mit einer Ausgabe auf Serial versuchen. Gib doch einfach mal sowohl die Mikrosekunden als auch die Zentimeter nach dem Messen jeweils über Serial aus. Dann weißt Du zumindest, ob das Ding richtig misst und rechnet.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.05.2015, 15:22
Beitrag #6
RE: Hilfe bei einer Füllstandsanzeige für eine Zisterne
Wenn du mit
Code:
LCD_DrawString(60,20,"cm ",5,LCD_RED);

den Füllstand (cm) ausgeben möchtest, sollte so ja nur der String 'cm ' ausgebene werden. Denn so wird ja nur ein String ( "cm ") ausgegeben und nicht die Var cm.
Also, entferne die beiden " und mal sehen was dann kommt. Vermutlich musst du noch cm vom Datentyp long nach string convertieren. Oder es gibt evt. eine Funktion zum Ausgeben von long-Typen (evt. LCD_DrawLong... oder so).

Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.05.2015, 19:28 (Dieser Beitrag wurde zuletzt bearbeitet: 31.05.2015 19:46 von jgrothe.)
Beitrag #7
RE: Hilfe bei einer Füllstandsanzeige für eine Zisterne
Hallo, danke für die guten Ansätze an euch beiden
das ausgeben am seriellen Monitor habe ich schon gemacht
das so wie der Alarm funktionieren nur die Ausgabe auf den
TFT-LCD macht Probleme und ein Fehler wird nicht ausgegeben.

Danke Jörg

Hallo Torsten,
nach ändern auf " LCD_Drawlong(60,140,"cm ",5,LCD_RED);
leider auch eine Fehler Ausgabe.

Arduino: 1.7.3 (Windows 7), Platine: "Arduino Uno"

sketch_may20Display24vorbereitetmitPing1.ino: In Funktion "Leere Schleife () ':

sketch_may20Display24vorbereitetmitPing1.ino: 820: 42: Fehler: »LCD_Drawlong 'wurde in diesem Gültigkeitsbereich deklariert

Fehler beim kompilieren.

Of this Bericht hätte mehr Informationen mit
"Ausführliche Ausgabe während der Kompilierung"
aktiviert in Datei> Einstellungen

Danke JörgAngryAngryAngry
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.06.2015, 07:06
Beitrag #8
RE: Hilfe bei einer Füllstandsanzeige für eine Zisterne
Hallo Jörg,

du hast da ein Klammernpaar zu viel. Und zwar hier:

Code:
{
      LCD_DrawString(60,20,"cm ",5,LCD_RED);
      LCD_DrawString(60,140,"???",4,LCD_YELLOW);
      LCD_DrawString(180,40,"Wassertank ",3,LCD_WHITE);
      LCD_DrawString(120,20,"Inhalt in cm ",3,LCD_WHITE);
            


      }
Entferne mal die beiden (geschweiften) Klammern.

Ok, LCD_Drawlong(...) gibt es nicht. Dann solltest du aus dem Long-Wert 'cm' einen String-Wert machen (Convertierung). Denn dann kann die Funktion "LCD_DrawString(...)" mit diesem Wert umgehen können. Du solltest im Netzt einige Lösungen dazu finden Wink

Gruß
Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Prüfung eines Drucksensors mit Hilfe des Arduino r4c3 1 49 Gestern 20:21
Letzter Beitrag: Tommy56
Photo Hilfe bei meinem Arduino Projekt Niklas 10 355 23.09.2017 21:05
Letzter Beitrag: Niklas
  Ublox Neo 6M und Nextion ! Bitte um Hilfe. b3ta 19 1.085 13.07.2017 14:52
Letzter Beitrag: Tommy56
  Anfänger sucht erfahrene Hilfe Customizer 21 1.403 11.07.2017 21:37
Letzter Beitrag: Customizer
  Schlagwerk für eine Uhr ist1969 37 2.025 16.06.2017 18:54
Letzter Beitrag: Tommy56
  eine einfache Xor Bitte ? himbeersirup 1 305 08.06.2017 09:15
Letzter Beitrag: MicroBahner
  Bitte um Hilfe Arduino Nano-MAX7219-PIR_Sensor Opa_Klaus 35 2.004 20.05.2017 21:11
Letzter Beitrag: Opa_Klaus
  Brauche Hilfe für meine Abfüllanlage/ millis() Slash96 8 774 10.05.2017 21:04
Letzter Beitrag: MicroBahner
Question Problem beim Hochladen auf AtTiny45. Hilfe -.- Jonas Lindenblatt 17 1.325 16.04.2017 12:58
Letzter Beitrag: Jonas Lindenblatt
  Verständnisfrage: Instanz innerhalb einer Klasse tuxedo0801 6 318 28.03.2017 19:40
Letzter Beitrag: georg01

Gehe zu:


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