- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 43

Thema: strukturen, ein- und ausstieg

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Hi,
    was verstehst Du denn unter träge ? Natürlich muss erst einmal z.B. case 1 abgearbeitet sein bevor er auf z.B. auf case 2 reagieren kann. Wenn alles steht sollte aber auf Tastendruck die Servos loslegen.
    Benutze doch mal die Taster der M32, hast Du da das gleiche Gefühl ? Ich bin nämlich meinen MIO Tastern nicht so zufrieden, ich will schon seit x-Wochen die Werte in der Lib anpassen. Ich hatte das schon mal gemacht, danach war ich dann zufrieden. Aber mit irgendeinem Update, oder rumkopiererei war die Version dann weg.
    Ich habe bei meinen Test Programm die Tastenabfrage als Funktion geschrieben (ich weiß garnicht ob man das so nennt ) und rufe diese dann aus der Main While Schleife aus. Auch habe ich keine Pausen wie Du in den einzelnen Servoschritten. Auch das ständige zu und abschalten der Servospannung habe ich nicht weil meine Servos mit der Last umfallen wenn die Spannung weg ist. Ich kann nicht sagen das da was träge reagiert. Wenn es dich interessiert kann ich ja mal das Programm mit der alten Servolib raussuchen. Bin z.Zt aber im Krankenhaus bis vorraussichtlich Donnerstag.
    Gruß TrainMen

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    jetzt zu allererst gute besserung...

    Zitat Zitat von TrainMen Beitrag anzeigen
    was verstehst Du denn unter träge ? Natürlich muss erst einmal z.B. case 1 abgearbeitet sein bevor er auf z.B. auf case 2 reagieren kann. Wenn alles steht sollte aber auf Tastendruck die Servos loslegen.
    mit "träge" meine ich, dass das programm auf den taster, der die servobewegung beenden soll, erst nach dem zweiten/dritten bewegungsablauf reagieren...

    dass man direkt von case1 zu case2 wechseln könnte wäre mir neu? das geht doch erst nach dem neustart des programms, oder? Deshalb Suche ich ja nach einer routine/funktion, die es mir möglich macht den programmablauf z.b. in case2 zu unterbrechen, ohne das ganze programm zu stoppen. Das was ich mi dem code

    Code:
                do
                    {
    //                    mSleep(50);
                        releasedMultiIOButtonNumber = checkMultiIOReleasedButtonEvent();
                        task_I2CTWI();
                        if (releasedMultiIOButtonNumber == 2)
                        main();
                    }
                while (releasedMultiIOButtonNumber);
    erreiche ist ja auch nur das stoppen des programms und neustart...

    Zitat Zitat von TrainMen Beitrag anzeigen
    Benutze doch mal die Taster der M32, hast Du da das gleiche Gefühl ?
    die taster habe ich seit ich die IO habe noch nicht benutzt, sie sitzen auch recht ungünstig...

    Zitat Zitat von TrainMen Beitrag anzeigen
    Ich bin nämlich meinen MIO Tastern nicht so zufrieden, ich will schon seit x-Wochen die Werte in der Lib anpassen. Ich hatte das schon mal gemacht, danach war ich dann zufrieden. Aber mit irgendeinem Update, oder rumkopiererei war die Version dann weg.
    an dieser änderung hätte ich auch interesse...

    Zitat Zitat von TrainMen Beitrag anzeigen
    Ich habe bei meinen Test Programm die Tastenabfrage als Funktion geschrieben (ich weiß garnicht ob man das so nennt ) und rufe diese dann aus der Main While Schleife aus.
    wie hast du diese funktion geschrieben?

    Zitat Zitat von TrainMen Beitrag anzeigen
    Auch habe ich keine Pausen wie Du in den einzelnen Servoschritten.
    die habe ich nur deshalb, weil die Servos sonst (zumindest zum testen) zu schnell sind...

    Zitat Zitat von TrainMen Beitrag anzeigen
    Auch das ständige zu und abschalten der Servospannung habe ich nicht weil meine Servos mit der Last umfallen wenn die Spannung weg ist. Ich kann nicht sagen das da was träge reagiert. Wenn es dich interessiert kann ich ja mal das Programm mit der alten Servolib raussuchen. Bin z.Zt aber im Krankenhaus bis vorraussichtlich Donnerstag.
    wäre net...
    gruß inka

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.11.2010
    Beiträge
    773
    Hi!
    Ich weiß, die Taster sind mir nicht wirklich gelungen... Das hätte man auch anders machen können, um vor allem auch mehrere Taster gleichzeitig zu detektieren.
    Sorry dafür! Wenn es eine V2 gibt, wird das natürlich geändert...
    Eine Variante, die man aber versuchen könnte, wäre, eine passende Widerstandskaskade mit Tastern (beliebig vielen) auf einer Lochrasterplatine selbst aufbauen und dann mit drei Litzen (5V, GND und ADC) an die MultiIO anzustecken - den Stecker dafür habe ich ja bereits vorbereitet.

    Lg

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Hi,
    @fabqu
    also an der miesen Lösung mit den Tastern haben wir ja auch ein Anteil, die Platine und ihre Möglichkeiten haben wir den ja hier besprochen. Keiner hat eine bessere Lösung gedacht.
    Der Hinweis mit dem vorbereiteten Stecker bringt ja nichts, denn auch hier ist ja nur eine Abfrage wie mit den 4 Tastern der MIO oder der 5 Taster der M32 möglich. Ich habe da manchmal eine 4x4 Matrix Tastatur dran, aber der ständige Wechsel der Lib nervt dann.
    Wenn dann eine Matrix wie beim Asuro, aber da braucht man dann freie 2 Ports. Ich glaube Mic wollte da mal was machen.

    @inka
    Ja Danke für die Genesungs Wünsche, irgendwann habe ich die Scheiss Dinger besiegt.
    Ich muss mich gleich mal endschuldigen, ich komme hier mit dem Touchpad nicht klar und habe auch nur eine Hand wirklich frei, Antworte also mal ohne zu zitieren.
    Ja ich kann mich erinnern Du hast Deine Platinen gegenüber, schon klar dann kommst du nicht an die Taster der M32.
    Die Änderung der Taster Abfrage musst Du alleine machen, es wär ja möglich dass Du andere Werte hast. Messe einfach mal am ADC Port nach und passe die Werte an.
    Abgefragt wird ja in etwa so: if(keys <100)
    return 1;
    if(keys < 700)
    return 2; u.s.w
    ich bilde mir ein besseres Ergebnis gehabt zu habe wenn ich das Eingrenze. Also >90 und < wie 105 zum Beispiel. Aber bin mir nicht wirklich sicher.
    Ich verstehe nicht warum Du da ein Stop in Deinem Programm brauchst.
    Ein Programm läuft doch ständig durch. Das Programm startet und "guckt" ob Du eine Taste gedrückt hast. Ja Du hast Button 1 gedrückt. Der Servo fährt also in der genannten Position. Fertig und schon ist das Programm wieder an der Tastaturabfrage und Du hast Button 2 gedrückt der Servo fährt zurück oder eine LED geht an oder was weiss ich und Du weisst was jetzt kommt, Dein Programm steht wieder an der Tastaturabfrage........
    Ich versteh nicht wirklich Dein Problem, aber ich bin selber noch Azubi in diesen Dingen. Vielleicht kann dir unser Guru - Hallo Dirk - das besser erklären.
    So jetzt gibts Abendbrot, haha ans Bett gebracht, schönen Abend noch.
    Gruß TrainMen

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    @TrainMen:
    Vielleicht kann dir unser Guru - Hallo Dirk Bild hier   - das besser erklären.
    Guru??? GURU???
    Sei froh, dass du krank bist,- sonst würde ich ...

    Nein, besser hätte ich das auch nicht erklären können.

    Gute Besserung!
    Gruß
    Dirk

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2009
    Ort
    Berlin
    Beiträge
    450
    Hi inka,
    wie versprochen hier das Programm zur Tasterabfrage der M32.
    Du musst das natürlich anpassen, ich habe es nur schnell überflogen und überflüssiges gelöscht. So das es deutlich wird was ich in meinte.
    Angehängte Dateien Angehängte Dateien
    Gruß TrainMen

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    danke TrainMen,

    die nächste frage:

    die abfrage taucht mehrmals in meinem programm auf, kann ich diese abfrage zu einer funktion "void abbruch (void)" machen, oder wird es wegen der schleife und der if abfrage nicht funktionieren?

    Code:
    do
    {
      pressedMultiIOButtonNumber = checkMultiIOPressedButtonEvent();
      task_I2CTWI();
      if (pressedMultiIOButtonNumber == 4)
      main();
     }
    while (pressedMultiIOButtonNumbe
    gruß inka

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    danke erstmal für die antworten...

    hier mein problem noch einmal (etwas detailierter):

    RP6Control_08_I2CMaster.c , auskommentierter bereich:
    /** * This is a new Event Handler and it gets called when the Battery Voltage
    * is getting low! The Parameter isVoltageLow is true, when the voltage
    * is low and false, when the voltage is OK.
    */
    /*
    void batteryVoltageLow(uint8_t isVoltageLow)
    {
    if(isVoltageLow)
    {
    writeString_P("\nBattery Voltage low: ");
    // Send Battery voltage to UART:
    writeIntegerLength((((adcBat/102.4f)+0.1f)), DEC, 2);
    writeChar('.');
    writeIntegerLength((((adcBat/1.024f)+10)), DEC, 2);
    writeString_P("V\n");
    }
    else
    {
    writeString_P("\nBattery Voltage is OK!\n");
    }
    }
    */

    standard.c, funktion hinzugefügt:


    /************battery_voltage_low******************* ******/



    void batteryVoltageLow(uint8_t isVoltageLow)
    {
    if(isVoltageLow)
    {

    writeString_P("\nBattery Voltage low: ");
    // Send Battery voltage to UART:
    writeIntegerLength((((adcBat/102.4f)+0.1f)), DEC, 2);
    writeChar('.');
    writeIntegerLength((((adcBat/1.024f)+10)), DEC, 2);
    writeString_P("V\n");
    }
    else
    {
    writeString_P("\nBattery Voltage is OK!\n");
    }
    }


    standard.h, deklaration (die zeile, die moniert wird hervorgehoben):


    //void receiveRC5Data(void (RC5data_t) (rc5data));

    //void batteryVoltageLow(void);
    void batteryVoltageLow (uint8_t isVoltageLow);
    //void printAllSensorValues(void);
    //void task_LCDHeartbeat(void);
    //void watchDogRequest(void);


    erstellungsprotokoll beim kompilieren:


    -------------- Erstellen: RP6Control_08_I2CMaster in m32_samples ---------------


    Compiliere: ../../RP6Lib/RP6common/RP6I2CmasterTWI.c
    ../../RP6Lib/RP6common/RP6I2CmasterTWI.c: In function ‘I2CTWI_requestedDataReady_DUMMY’:
    ../../RP6Lib/RP6common/RP6I2CmasterTWI.c:55:46: warning: unused parameter ‘requestID’
    ../../RP6Lib/RP6common/RP6I2CmasterTWI.c: In function ‘I2CTWI_transmissionError_DUMMY’:
    ../../RP6Lib/RP6common/RP6I2CmasterTWI.c:62:45: warning: unused parameter ‘requestID’
    Compiliere: ../../RP6Lib/RP6common/RP6uart.c
    Compiliere: ../../RP6Lib/RP6control/RP6ControlLib.c
    Compiliere: ../../RP6Lib/RP6control/RP6Control_I2CMasterLib.c
    ../../RP6Lib/RP6control/RP6Control_I2CMasterLib.c: In function ‘IRCOMM_RC5dataReady_DUMMY’:
    ../../RP6Lib/RP6control/RP6Control_I2CMasterLib.c:62:42: warning: unused parameter ‘rc5data’
    ../../RP6Lib/RP6control/RP6Control_I2CMasterLib.c: In function ‘BATTERY_lowVoltage_DUMMY’:
    ../../RP6Lib/RP6control/RP6Control_I2CMasterLib.c:93:39: warning: unused parameter ‘isVoltageLow’
    Compiliere: ../../RP6Lib/RP6mio/RP6Control_MultiIOLib.c
    Compiliere: ../../RP6Lib/standard/standard.c
    In file included from ../../RP6Lib/standard/standard.c:1:0:
    ../../RP6Lib/standard/standard.h:38:33: error: expected ‘)’ before ‘isVoltageLow’

    Prozess wurde mit Status 1 beendet. (0 Minuten, 0 Sekunden)
    1 Fehler, 4 Warnungen
    ich kann keinen fehler erkennen, wüsste ich auch nicht wo ich dort die ")" hinzufügen soll?
    gruß inka

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hallo,

    ich versuche nun bestimmte funktionen, die ich in unterschiedlichen programmen verwenden möchte in eine lib "standard" (c & h) auszulagern...

    mit solchen z.b. klappt es einwandfrei:

    void accuspannung(void)
    sobald der funktion als rückgabewert z.b. eine variable zugeordnet wird wie hier:

    void batteryVoltageLow(uint8_t isVoltageLow)
    - in der standard.h steht dann:

    void batteryVoltageLow(void)
    funktioniert es nicht, die fehlermeldunge lautet:
    ../../RP6Lib/standard/standard.h|37|note: previous declaration of ‘batteryVoltageLow’ was here|
    wobei der eintrag in der standard.h moniert wird. Muss dort bei der deklaration auch die variable rein? wenn ich es dann mache:

    void batteryVoltageLow(uint8_t isVoltageLow)
    wird eine klammer verlangt:

    ../../RP6Lib/standard/standard.h|38|error: expected ‘)’ before ‘isVoltageLow’|
    seltsammerweise funktioniert es hier:

    standard.c:
    void I2C_transmissionError(uint8_t errorState)
    standard.h: steht nichts, da die funktion in der "RP6Control_I2CMasterLib.h" deklariert wird, und zwar so:

    void I2C_transmissionError(uint8_t errorState);
    könnte bitte jemand versuchen mir das zu erklären?
    gruß inka

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    Wenn es eine Funktion void batteryVoltageLow(uint8_t isVoltageLow) gibt, muss sie auch im Header (.h) so deklariert werden. Dabei reicht es auch, nur void batteryVoltageLow(uint8_t) anzugeben.
    Was man oft vergißt, ist auch, dass hinter den Funktionsdeklarationen im Header jeweils ein ; stehen muss.
    Gruß
    Dirk

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 23.03.2012, 22:36
  2. Probleme feine Strukturen zu drucken für Platine
    Von Hellmut im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 12
    Letzter Beitrag: 20.12.2010, 13:35
  3. Antworten: 11
    Letzter Beitrag: 07.09.2008, 16:56
  4. Probleme bei Strukturen (Projekt Funkuhr)
    Von Wasserkäfer im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 19.07.2008, 15:10
  5. Ein Quarz für ein ATMEGA8 und ein ATMEGA16
    Von boeseTURBO-CT im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 14.06.2004, 16:07

Berechtigungen

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

Solar Speicher und Akkus Tests