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
Monitor spuckt nur Fragezeichen aus
28.11.2018, 08:31
Beitrag #1
Question Monitor spuckt nur Fragezeichen aus
Hallo zusammen,
ich sitze gerade an meinem ersten großen Arduino-Projekt.
So eben habe ich einen Durchbruch geschafft und meinen Programmcode mit eigenen Header-Dateien und ohne Fehler kompilliert. Doch dann das nächste Problem: der serielle Monitor der mir eigentlich ein paar Textzeilen anzeigen sollte spuckt nach jedem Neuaufruf nur Fragezeichen aus Huh . Ich arbeite mit einem Arduino Mega und spam euch jetzt einfach mal mit allem zu was ich habe (tut mir leid wenn es zu unübersichtlich ist).

Schonmal jetzt Danke für eure Hilfe Heart

Hauptcode:
Code:
#include <Servo.h>
#include <Arduino.h>
#include "eingabe.h"
#include "koordtrans.h"

Servo baserot;                     //Servos als solche deklarieren
Servo baseknicka;
Servo baseknickb;
Servo midknick;
Servo topknick;
Servo toprot;

eingabe abfrage(0);

void setup()
{
Serial.begin(9600);                  //Baud-Rate: 9600 Symbole pro Sekunde
baserot.attach(2);
baseknicka.attach(3);
baseknickb.attach(4);
midknick.attach(5);
topknick.attach(6);
toprot.attach(7);

pinMode(LED_BUILTIN, OUTPUT);
// while(!Serial);                      //Programm startet wenn der serielle Monitor geöffnet wird von vorn
}

void loop()
{
  Serial.println("Programmstart");
  Serial.println(abfrage.get_Pos());
  Serial.println(abfrage.get_Sys());
  delay(1000);
}

Eingabe-Header:
Code:
#ifndef eingabe_h
#define eingabe_h
#include "Arduino.h"
#include "koordtrans.h"

#define RMIN 327                 //Wertebereiche der Variablen r[mm], phi[°], teta[°]   -> karthesische Koordinaten müssen erst umgerechnter werden, da deren Wertebereiche die Praxis nicht abbilden
#define RMAX 547
#define TETAMIN -102
#define TETAMAX 102
#define PHIMIN -180
#define PHIMAX 180
#define XYZ 547                  //maximale Reichweite des Arms wird für eine erste Einschränkung genutzt

class eingabe
{
  private:
  int x, y, z, r, phi, teta;          //zum Eingeben der Zielkoordinaten und der Art des Koordinatensystems; bei int aktuell ein Versatz von bis zu 8,6 mm möglich; für genauere Werte float mit Kommazahlen verwenden
  String karthsys, input;
  String zulAnt = "Bitte geben Sie eine zulaessige Antwort ein.";
  
  public:
  eingabe(int a);
  int get_X();
  int get_Y();
  int get_Z();
  int get_R();
  int get_Teta();
  int get_Phi();
  int get_Pos();
  String get_Sys();
};

#endif

Eingabe-cpp:
Code:
#include "eingabe.h"
#include "Arduino.h"
#include "koordtrans.h"

eingabe::eingabe(int a)                                                                                                    
{
  gesamtabfrage:
  Serial.println("Moechten Sie die Zielkoordinaten selbst eingeben? (Ja/Nein)");
  String input = Serial.readString();
  if (input == "Nein")
  {
    r = random(RMIN, RMAX+1);
    teta = random(TETAMIN, TETAMAX+1);
    phi = random(PHIMIN, PHIMAX+1);
  }
  else if (input == "Ja")
  {
    sysabfrage:
    Serial.println("Moechten Sie die Koordinaten im karthesischen eingeben? (Ja/Nein)");
    karthsys = Serial.readString();
    if (karthsys == "Ja")
    {
      xabfrage:
      Serial.println("Geben Sie den Wert für die X-Koordinate ein:");
      x=Serial.read();
      if (abs(x)<=XYZ)
      {
        yabfrage:
        Serial.println("Geben Sie den Wert für die Y-Koordinate ein:");
        y=Serial.read();      
        if (abs(y)<=XYZ)
        {
          zabfrage:
          Serial.println("Geben Sie den Wert für die Z-Koordinate ein:");
          z=Serial.read();    
          if (-118<z<=XYZ)                                    //118 mm ist die Basis hoch
          {
            koordtrans trans(karthsys, x, y, z);
            trans.get_Pos();
            Serial.println("Ihre eingegebenen Werte entsprechen folgenden r, teta und phi Koordinaten im Kugelsystem:");
            Serial.println(r);
            Serial.println(teta);
            Serial.println(phi);
          }
          else
          {
            Serial.println (zulAnt);
            goto zabfrage;
          }
        }
        else
        {
          Serial.println (zulAnt);
          goto yabfrage;
        }
      }
      else
      {
        Serial.println (zulAnt);
        goto xabfrage;
      }
     }
    else if (karthsys =="Nein")
    {
      rabfrage:
      Serial.println("Geben Sie den Wert für die R-Koordinate ein (zwischen 327 und 547 [mm]):");
      r=Serial.read();
      if (RMIN<=r<=RMAX)
      {
        tetaabfrage:
        Serial.println("Geben Sie den Wert für die Teta-Koordinate ein (zwischen -102 und 102 [°]):");
        teta=Serial.read();      
        if (TETAMIN<=teta<=TETAMAX)
        {
          phiabfrage:
          Serial.println("Geben Sie den Wert für die Phi-Koordinate ein (zwischen -180 und 180 [°]):");
          phi=Serial.read();      
          if (PHIMIN<=phi<=PHIMAX)
          {
            Serial.println("Ihre eingegebenen Werte für r, teta und phi sind:");
            Serial.println(r);
            Serial.println(teta);
            Serial.println(phi);
          }
          else
          {
            Serial.println(zulAnt);
            goto phiabfrage;
          }
        }
        else
        {
          Serial.println(zulAnt);
          goto tetaabfrage;
        }
      }
      else
      {
        Serial.println(zulAnt);
        goto rabfrage;
      }
    }
    else
    {
      Serial.println(zulAnt);
      goto sysabfrage;
    }
  }
  else
  {
    Serial.println(zulAnt);
    goto gesamtabfrage;
  }
}
//...........................................oben: Hauptprogramm........................unten:Abfragen.............................​.........................................................
int eingabe::get_X()
{
  return x;
}
int eingabe::get_Y()
{
  return y;
}
int eingabe::get_Z()
{
  return z;
}
int eingabe::get_R()
{
  return r;
}
int eingabe::get_Teta()
{
  return teta;
}
int eingabe::get_Phi()
{
  return phi;
}
int eingabe::get_Pos()
{
  return (r, teta, phi);
}
String eingabe::get_Sys()
{
  return karthsys;
}

Koordtrans-Header:
Code:
#ifndef koordtrans_h
#define koordtrans_h
#include "Arduino.h"

class koordtrans
{
  private:
  int x, y, z, r, phi=0, teta;          //zum Eingeben der Zielkoordinaten und der Art des Koordinatensystems; bei int aktuell ein Versatz von bis zu 8,6 mm möglich; für genauere Werte float mit Kommazahlen verwenden
  String karthsys;
  
  public:
  koordtrans(String sysdum, int rx, int tetay, int phiz);
  int get_Pos();
};

#endif

Koordtrans-cpp:
Code:
#include "koordtrans.h"
#include "Arduino.h"

koordtrans::koordtrans(String sysdum, int rx, int tetay, int phiz)
{
  karthsys=sysdum;
  if (karthsys == "Nein")
  {
   x = rx*sin(tetay)*cos(phiz);
   y = rx*sin(tetay)*sin(phiz);
   z = rx*cos(tetay);
  }
  else if (karthsys == "Ja")
  {
   r = sqrt(sq(rx)+sq(tetay)+sq(phiz));
   teta = 1/(cos(phiz/sqrt(sq(rx)+sq(tetay)+sq(phiz))));
   if (rx != 0)
   {
    phi = 1/(tan(tetay/rx));
   }
  }
}

int koordtrans::get_Pos()
{
  if (karthsys == "Nein")
  {
   return(x,y,z);
  }
  else if (karthsys == "Ja")
  {
   return(r,teta,phi);
  }
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.11.2018, 08:37
Beitrag #2
RE: Monitor spuckt nur Fragezeichen aus
Moin,
...öhm hast du im Monitorfenster unten Rechts auch 9600 Baud eingestellt ?
Das wäre so der erste Griff um das zu fixen...
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.11.2018, 09:06 (Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2018 09:16 von shadowfoxl.)
Beitrag #3
RE: Monitor spuckt nur Fragezeichen aus
Ja habe ich

Ach ja, die Fragezeichen im Monitor sind falschrum dargestellt, also etwa so:
ʕʕʕ
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.11.2018, 09:17
Beitrag #4
RE: Monitor spuckt nur Fragezeichen aus
Und warum müssen es Header-Dateien sein ?
Hat das Projekt denn schon funktioniert, wenn alles in einer ino zusammengefasst ist ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.11.2018, 09:23 (Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2018 09:24 von shadowfoxl.)
Beitrag #5
RE: Monitor spuckt nur Fragezeichen aus
Das ist nur der Anfang vom Projekt, das wird noch viel viel mehr und das würde mir in einer Datei zu unübersichtlich werden.
Außerdem werden später einzelne Klassen öfter aufgerufen wodurch es meiner Meinung nach so sinnvoller ist.

LG Foxl^^
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.11.2018, 09:40
Beitrag #6
RE: Monitor spuckt nur Fragezeichen aus
(28.11.2018 09:23)shadowfoxl schrieb:  Das ist nur der Anfang vom Projekt, das wird noch viel viel mehr und das würde mir in einer Datei zu unübersichtlich werden.
Außerdem werden später einzelne Klassen öfter aufgerufen wodurch es meiner Meinung nach so sinnvoller ist.

LG Foxl^^

Nochmal die Frage:
Hat es denn schon (in einer Datei) funktioniert ?

So wie ich es verstehe, sollten dann in deinem Projekt auch die Verwendung der Register in der IDE reichen. Das wird ebenso übersichtlich und jedes Register landet in einer eigenen Datei. Und du brauchst die nicht explizit "includieren".

Zudem kannst du die einzelnen Dateien jederzeit im Projekt anpassen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.11.2018, 10:10
Beitrag #7
RE: Monitor spuckt nur Fragezeichen aus
seit ich es in einem Tab hatte habe ich einiges geändert, damals ging es nicht
aktuell habe ich die Header-Dateien als Tabs im selben Editor offen wie das Hauptprogramm falls du das meinst (hoffe das Bild wird angezeigt)
   

ich habe mich bei der Erstellung an ein Youtube-Tutorial gehalten was mir erstmals das Arbeiten mit den Klassen nachvollziehbar erklären konnte ( https://www.youtube.com/watch?v=NnYbZAm7...7hfCE10R57 )

lg
foxl
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28.11.2018, 10:53 (Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2018 10:54 von Hilgi.)
Beitrag #8
RE: Monitor spuckt nur Fragezeichen aus
Moin,


also "goto" is sowas wie n nogo, aber davon abgesehen, wenn du Objekte erzeugst mit Instanzen und die verarbeiten willst über deinen Sketch hinweg, kommen wir schnell in die Vererbungsschiene, außerdem muss du Instanzen mit übergeben, wenn du sie außerhalb verarbeiten willst.

Ich habe deinen Code nicht komplett gelesen, aber grundlegend kann das ein Problem sein, dann kommen nämlich ??? oder NaNs schnell zu stande.
Falls du vertraut mit objektorientiertem Programmieren bist, kannst du das evtl ausschliessen, ansonsten der Tip da mal kurz ein zu lesen, Objekte zu übergeben ist nicht schwer.

Goto, da lässt sich streiten, aber ist sehr schwierig zu lesen!


Viel Erfolg, Gruß

Nicht denken,...
...nachdenken... Rolleyes

Smarter - LiveData
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  For-Loop verschluckt Ausgabe am seriellen Monitor TimeMen 5 371 14.04.2019 17:59
Letzter Beitrag: Tommy56
  Serieller Monitor BluPxl 13 2.324 28.05.2018 16:21
Letzter Beitrag: BluPxl
  TFT Monitor und Grafiken Thor Wallhall 10 2.582 16.05.2017 18:15
Letzter Beitrag: Thor Wallhall
  serial monitor, Ausgabe übereinander möglich?? silversurfer123 4 1.244 18.04.2017 19:19
Letzter Beitrag: silversurfer123
  Ausgabe Serial Monitor zu viele Byt`s Hannes 0 1.129 12.11.2016 20:29
Letzter Beitrag: Hannes
  Serial Monitor ASCII 1 schreiben BennIY 11 3.974 01.08.2016 16:42
Letzter Beitrag: Mathias
  Serial Monitor Rudi 5 3.375 02.06.2016 11:37
Letzter Beitrag: Bitklopfer
  Kommunikation Serial Monitor --> Arduino BennIY 7 2.934 24.05.2016 07:48
Letzter Beitrag: hotsystems
  Serial Monitor Eingabe über Code Maxi290997 4 2.092 12.05.2016 18:57
Letzter Beitrag: SkobyMobil
  Alles nur im seriellen Monitor, nicht LCD? malsehen 23 4.143 26.02.2016 19:18
Letzter Beitrag: malsehen

Gehe zu:


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