- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Programm säubern mit vielen void()s in eigenen Tabs

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Anzeige

    Powerstation Test
    Ohne geschweifte Klammern:
    Code:
    void loop()
    {
      switch(state)
      {
        case 0:
          lcd.clear();
          lcd.setCursor(0,0) ;
          lcd.print(">>>>>>>Robotik<<<<<<") ;
          lcd.setCursor(0,1) ;
          lcd.print("Projektarbeit2014 by") ;
          lcd.setCursor(0,2) ;
          lcd.print("Kevin Krause") ;
          lcd.setCursor(0,3) ;
          lcd.print("Dominik Loher") ;
    
          delay(10000);        // 10 Sekunden? Ernsthaft?
          state = 1;
                               // kein break -> läuft in den case 1!
        case 1: 
          Teachen_menue();
          Joystick();
          break;
    
        case 2: 
          Automatik();
          break;
    
        case 3: 
          Justage();
          break;
      }//END_SWITCH
    }//END_LOOP

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    28.09.2013
    Beiträge
    49
    Ohje diese Anfängerfehler ... Aber das Problem besteht weiterhin, das Menü funktioniert nicht mehr wenn
    case 1:
    Teachen_menue();
    Joystick();
    break;
    lösche ich Joystick() gehts wieder...

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Klappts denn ohne Auslagern?

    Hier eine vereinfachte Version:
    Code:
    void Joystick()
    {
      int analog_in0 = (512 - analogRead(ANALOG_IN0));
      int analog_in1 = (512 - analogRead(ANALOG_IN1));
      int analog_in2 = (512 - analogRead(ANALOG_IN2));
      int analog_in3 = (512 - analogRead(ANALOG_IN3));
    
      //.......Stepper1..........//
      if ( analog_in0 <= -35 || analog_in0 >= 35)
      {
        Stepper0.setSpeed(exp(analog_in0 / 67)) ;
        Stepper0.runSpeed();
      }  
      //.......Stepper1..........//
      if ( analog_in1 <= -35 || analog_in1 >= 35)
      {
        Stepper1.setSpeed(exp(analog_in1 / 67)) ;
        Stepper1.runSpeed();
      }
      //.......Stepper2..........//
      if ( analog_in2 <= -35 || analog_in2 >= 35)
      {
        Stepper2.setSpeed(exp(analog_in2 / 67)) ;
        Stepper2.runSpeed();
      }  
      //.......Stepper3..........//
      if ( analog_in3 <= -35 || analog_in3 >= 35)
      {
        Stepper3.setSpeed(exp(analog_in3 / 67)) ;
        Stepper3.runSpeed();
      }
      // Ausgabe im Serial Monitor
      Serial.print( analog_in0 ); Serial.print( ' ' );
      Serial.print( analog_in1 ); Serial.print( ' ' );
      Serial.print( analog_in2 ); Serial.print( ' ' );
      Serial.println( analog_in3 ); 
    }

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    28.09.2013
    Beiträge
    49
    Ne dann klappt es leider auch nicht :/

    - - - Aktualisiert - - -

    Es macht den Anschein als wäre joystick() das Problem ...wenn ich aus case 1 das Teaching_menu() lösche und dafür lcd.clear() einsetze . Hängt das display auch bzw es lässt sich nicht durchwählen.

    - - - Aktualisiert - - -

    Fehler gefunden , bzw es ergibt keinen Sinn ... im case 0 hab ich die delay zeit auf 5 Sekunden gesetzt ....jetzt geht alles wie es soll .Kennt wer die Erklärung dafür ?
    Geändert von jok3r (23.03.2014 um 14:28 Uhr)

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Ne, aber manchmal ist das halt so. Vermutung: interrupts.

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    28.09.2013
    Beiträge
    49
    Okay ich weiß nicht was ich getan hab , aber der Fehler ist wieder vorhanden ^^.....Mittwoch kommt der Arduino Mega dann tausche ich den Due dagegen aus, vill wirds besser ...

    - - - Aktualisiert - - -

    So ich hab den Fehler wohl endlich gefunden---> Hinweise

    Die Funktion delay() als Funktion innerhalb des Interrupts funktioniert nicht, ebenso wird millis() die zurückgegebenen Werte nicht hochzählen. Serielle Daten, die während der Funktion eintreffen, werden nicht berücksichtigt und gehen verloren. Jede Variable die innerhalb der eingebetteten Funktion verändert wird sollte als volatile deklariert werden


    ich hab das entprellen entfernt und schon ging es .

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Unklarheit mit void Funktionen
    Von super-robman im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 29.08.2011, 19:01
  2. problem mit erstem eigenen programm
    Von rocketman123 im Forum Asuro
    Antworten: 18
    Letzter Beitrag: 03.10.2007, 18:43
  3. Thermometer mit vielen DS18S20
    Von 1100101 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 09.05.2006, 22:19
  4. anfänger mit vielen fragen =)
    Von chrikumo im Forum Motoren
    Antworten: 8
    Letzter Beitrag: 03.06.2005, 15:12
  5. Vielen, vielen Dank
    Von Weisse1 im Forum Robby CCRP5
    Antworten: 2
    Letzter Beitrag: 07.12.2004, 16:21

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad