- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 255

Thema: IR-bake

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Hi Dirk,

    danke für die korrekturen, es funktioniert nun...

    Würde für mein verstzändnis der stopwatches bedeuten, dass man diese an einer beliebigen stelle im vorderen bereich des programmes startet (einmal) und dann im ersten durchlauf der while(true) schleife auf null stellt und dann im zweiten durchlauf den Ir-empfang prüft...

    zwei dinge haben sich jetzt herausgestellt:
    1) die probleme beim empfang der von der bake gesendeten signale gründeten nicht in der zu kleinen leistung der IR-LEDs, sondern in der schlechten koordination des senders mit dem empfänger. Ich habe jetzt die vorwiderstände der IR-dioden wieder auf 47 ohm erhöht, der empfang funktioniert nach wie vor über ca. 4 meter.
    Im gegenteil: Ich habe nun beim erkennen der richtung aus der die IR-strahlen kommen probleme mit reflektionen, auch über zwei "ecken"! Der bereich um die 5cm über dem boden ist quasi IR-verseucht...
    Da muss ich mir noch etwas einfallen lassen (bündeln des sendestrahls und einengen des empfangskorridors)...

    2) hat zwar mit der IR-bake nur am rande zu tun, ein problem ist es aber:

    das starten der vier teilprogramme über die 4 multiIO taster.

    zwischen diesem
    Code:
    ------------------------------------------
        clearLCD();
        pressedMultiIOButtonNumber = getMultiIOPressedButtonNumber();
    
        setCursorPosLCD(0, 0);
        writeStringLCD("1: test_einzelsignal");
        setCursorPosLCD(1, 0);
        writeStringLCD("2: test_feldvariable");
        setCursorPosLCD(2, 0);
        writeStringLCD("3: Suche der bake");
        setCursorPosLCD(3, 0);
        writeStringLCD("4: test_button_4");
        mSleep(1500);
    
        uint8_t key = getMultiIOPressedButtonNumber();
    ----------------------------------------------
    und diesem
    Code:
    -------------------------------------------------
        uint8_t key_1 = getMultiIOPressedButtonNumber(); //tastenabfrage
        key_1 = getMultiIOPressedButtonNumber();
        if(key_1 != 0) break;
    
    ---------------------------------------------
    liegen jeweils die vier programmteile. Die software reagiert sehr eigenartig auf das drücken der buttons: mal garnicht, mal mit kurzem start mit sofort erfolgtem break, mal richtig. Wie könnte ich da was verbessern? Verzögerungen in der tastenabfrage z.b.?

    ich habe hier wegen der besseren verständlichkeit meiner frage bzw. meines problems den code einer schablobe für die abfrage der vier tasten eingefügt (obwohl das problem hier kaum auftritt) - hängt das mit der dauer des programms, welches ausgeführt wird zusammen?
    btw: die korrekturwerte für die taster sind in der RP6Control_MultiIO.h eingetragen...

    Code:
    #include "RP6ControlLib.h"
    #include "RP6I2CmasterTWI.h"
    #include "RP6Control_MultiIOLib.h"
    #include "RP6Control_I2CMasterLib.h"
    
    #include "RP6ControlServoLib.h"
    #include "standard.h"
    
    #define I2C_RP6_BASE_ADR 10
    
    
    
    /*********************I2C-fehlermeldungen******************/
    /*
    void I2C_transmissionError(uint8_t errorState) //gibt I2C fehlermeldungen über LCD aus
    {
        clearLCD();
        writeStringLCD_P("I2C ERROR -->");
        setCursorPosLCD(1, 0);        // line 2
        writeStringLCD_P("TWI STATE: 0x");
        writeIntegerLCD(errorState, HEX);
    }
    */
    
    /*************** hauptprogramm ***********/
    
    int main(void)
    {
    
    
    initRP6Control();
    multiio_init();
    initLCD();
    //orientation_init();
    
    
    setLEDs(0b1111);
    mSleep(500);
    setLEDs(0b0000);
    
    I2CTWI_initMaster(100);
    I2CTWI_setTransmissionErrorHandler(I2C_transmissionError); //aktiviert I2C fehlermeldungen
    
    showScreenLCD(" RP6Control M32", " schablone", " 4 taster " , " mit ruecksprung ");
    mSleep(2500);
    clearLCD();
    
    
    
    while(true)
    {
    
    /*****************anzeige gedrückter buttons****************/
    //        clearLCD();
    
    //    accuspannung();
    //    mSleep(500);
        clearLCD();
        pressedMultiIOButtonNumber = getMultiIOPressedButtonNumber();
    //    setCursorPosLCD(0, 0);
    //    writeStringLCD("Button: ");
    //    writeIntegerLCD(pressedMultiIOButtonNumber, DEC);
    
        setCursorPosLCD(0, 0);
        writeStringLCD("1 - button_1_test");
        setCursorPosLCD(1, 0);
        writeStringLCD("2 - button_2_test");
        setCursorPosLCD(2, 0);
        writeStringLCD("3 - button_3_test");
        setCursorPosLCD(3, 0);
        writeStringLCD("4 - button_4_test");
        mSleep(1500);
        uint8_t key = getMultiIOPressedButtonNumber();
    
    
    
    /********************funktion der buttons*********************/
        if(key)
        {
        switch(key)
        {
        case 1://
        setLEDs(0b0001);
    
        while(true)
        {
            uint8_t key_1 = getMultiIOPressedButtonNumber();
        clearLCD();
        setCursorPosLCD(0, 0);
        writeStringLCD("test button 1 ");
        mSleep(1500);
        clearLCD();
        writeStringLCD("test break all ");
        mSleep(1500);
        key_1 = getMultiIOPressedButtonNumber();
        if(key_1 != 0) break;
        }
    
        break;
    
        case 2://
        setLEDs(0b0010);
    
        while(true)
        {
            uint8_t key_1 = getMultiIOPressedButtonNumber();
        clearLCD();
        setCursorPosLCD(0, 0);
        writeStringLCD("test button 2 ");
        mSleep(1500);
        clearLCD();
        writeStringLCD("test break all ");
        mSleep(1500);
        key_1 = getMultiIOPressedButtonNumber();
        if(key_1 != 0) break;
        }
    
        break;
    
        case 3://
        setLEDs(0b0100);
    
        while(true)
        {
            uint8_t key_1 = getMultiIOPressedButtonNumber();
        clearLCD();
        setCursorPosLCD(0, 0);
        writeStringLCD("test button 3 ");
        mSleep(1500);
        clearLCD();
        writeStringLCD("test break all ");
        mSleep(1500);
        key_1 = getMultiIOPressedButtonNumber();
        if(key_1 != 0) break;
        }
    
        break;
    
        case 4://
        setLEDs(0b1000);
    
        while(true)
        {
            uint8_t key_1 = getMultiIOPressedButtonNumber();
        clearLCD();
        setCursorPosLCD(0, 0);
        writeStringLCD("test button 4 ");
        mSleep(1500);
        clearLCD();
        writeStringLCD("test break all ");
        mSleep(1500);
        key_1 = getMultiIOPressedButtonNumber();
        if(key_1 != 0) break;
        }
    
        break;
    
        }
        }
    
    
    }
    
    
        return 0;
    }
    Geändert von inka (21.01.2014 um 10:32 Uhr)
    gruß inka

Ähnliche Themen

  1. IR-Bake
    Von tornado im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 05.07.2007, 17:37
  2. IR-Bake
    Von Bernd-das-Brot im Forum Sensoren / Sensorik
    Antworten: 38
    Letzter Beitrag: 13.12.2005, 16:14
  3. ir-bake
    Von pebisoft im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 8
    Letzter Beitrag: 17.01.2005, 13:41
  4. ir-bake
    Von pebisoft im Forum Sensoren / Sensorik
    Antworten: 2
    Letzter Beitrag: 17.01.2005, 07:01
  5. Bake
    Von techboy im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 02.11.2004, 10:17

Berechtigungen

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

12V Akku bauen