- Labornetzteil AliExpress         
Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 44

Thema: RP6_M32 - M32 soll das was per uart geschick wird im Display ausgeben !?!

  1. #11
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Anzeige

    Praxistest und DIY Projekte
    Zitat Zitat von RolfD Beitrag anzeigen
    Der Thread heist "RP6_M32 - M32 soll das was per UART geschick wird im Display ausgeben !?!"
    und nicht "Also wenn ich sende "1:100" soll der erste Servo auf 100 und wenn ich "2:50" sende der 2. auf 50,"
    Soll ich den für eine frage nen neuen Thread aufmachen?

  2. #12
    Erfahrener Benutzer Roboter-Spezialist Avatar von RolfD
    Registriert seit
    07.02.2011
    Beiträge
    414
    Les mal noch nen kleines Stück weiter.. da steht meine Empfehlung...
    Sind Sie auch ambivalent?

  3. #13
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Okay habe das so erstmal geschaft, aber es gibt schon wieder ein neues problem.
    Wenn ich es so mache:

    Code:
    void task_befehle(void)
        {
            Eingabe();
            
            long pos = atoi(Buffer);
    
        
                    if(pos < 180 && pos > 0)
                    {
                        servo1_position =  pos;
                    }
                    else
                        if(pos < 360 && pos > 180)
                    {
                        servo2_position =  pos - 180;
                    }
                        else
                            if(pos < 540 && pos > 360)
                        {
                            servo3_position =  pos - 360;
                        }
                            else
                                if(pos == -1)
                                {
                                    I2CTWI_transmitByte(PCF, 0);
                                }
                                else
                                    if(pos == -2)
                                    {
                                        I2CTWI_transmitByte(PCF, 3);
                                    }
            
        }
    
    void task_sensoren(void)
        {
            getAllSensors();
            writeIntegerLength((((adcBat/102.4f)+0.1f)), DEC, 2);
            writeString_P(".\n");
            writeIntegerLength((((adcBat/1.024f)+10)), DEC, 2);
            writeString_P("V\n");
            writeIntegerLength(adcLSL,DEC,4);
            writeString_P("L\n");
            writeIntegerLength(adcLSR,DEC,4);
            writeString_P("R\n");
        }
    
    uint32_t Eingabe(void){
    
                static buffer_pos = 0;
                
                if(getBufferLength())
                {
                    Buffer[buffer_pos]=readChar();
    
                if(Buffer[buffer_pos]=='\n')
                {
                    Buffer[buffer_pos] = '\0';
                    buffer_pos = 0;
    
                return 1;
                }
            
                else if(buffer_pos >= UART_RECEIVE_BUFFER_SIZE) 
                {
                    Buffer[UART_RECEIVE_BUFFER_SIZE] = '\0'; 
                    buffer_pos = 0;
    
                return 2;
                }
                
                buffer_pos++;
            }        
        return 0;
    }
    
    int main(void)
    {  
    
        initRP6Control();
        initLCD();
        initSERVO(SERVO1  |  SERVO2   |   SERVO3);
    
        WDT_setRequestHandler(watchDogRequest); 
    
        I2CTWI_initMaster(100);
        I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady);
        I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
        
        
        setLEDs(0b111111);
        mSleep(500);
        setLEDs(0b000000);
        
        I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT, true);
        I2CTWI_transmit3Bytes(I2C_RP6_BASE_ADR, 0, CMD_SET_WDT_RQ, true);
        I2CTWI_transmitByte(PCF, 0);
    
    
        
        while(true)  
        {
            task_I2CTWI();
            task_befehle();
            task_sensoren();
            task_SERVO();
         }
        return 0;
    }
    Zappeln die Servos nur rum und die Sensordaten ändern sich nicht.

    Empfangen mache ich in Visual C# so :

    Code:
            public void Daten_Empfangen()
            {
                string[] Volt = serialPort1.ReadLine().Split('.');
                string[] LVolt = serialPort1.ReadLine().Split('V');
                string[] Licht = serialPort1.ReadLine().Split('L');
                string[] LLicht = serialPort1.ReadLine().Split('R');
                string Akku = Volt[0] + LVolt[0];
                string Licht_L = Licht[0];
                string Licht_R = LLicht[0];
    
                label9.Text = Volt[0].Replace("0", "") + "." + LVolt[0] + " Volt";
    
                if (Convert.ToInt32(Akku) > progressBar1.Maximum)
                {
                    progressBar1.Maximum = Convert.ToInt32(Akku);
                }
                else
                    progressBar1.Value = Convert.ToInt32(Akku);
    
                if (Convert.ToInt32(Licht_R) > progressBar2.Maximum)
                {
                    progressBar2.Maximum = Convert.ToInt32(Licht_R);
                }
                else
                    progressBar2.Value = Convert.ToInt32(Licht_R);
    
    
                if (Convert.ToInt32(Licht_L) > progressBar3.Maximum)
                {
                    progressBar3.Maximum = Convert.ToInt32(Licht_L);
                }
                else
                    progressBar3.Value = Convert.ToInt32(Licht_L);
    
            }
    
     private void timer2_Tick(object sender, EventArgs e)
            {
                if (checkBox1.Checked)
                {
                    Daten_Empfangen();
                }
            }
    Hoffe ihr könnt mir nochmal helfen.

    mfG
    Philip
    Geändert von AsuroPhilip (29.05.2011 um 16:40 Uhr)

  4. #14

  5. #15
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Zitat Zitat von Fabian E. Beitrag anzeigen
    Und was genau sendest du vom PC aus?
    Senden tuhe ich das :

    Code:
            private void trackBar2_Scroll(object sender, EventArgs e)
            {
                int servo2label = trackBar2.Value - 180;
                label5.Text = servo2label.ToString();
    
                serialPort1.Write(trackBar2.Value.ToString());
                serialPort1.Write("\n\r");
            }
    
            private void trackBar1_Scroll(object sender, EventArgs e)
            {
                label1.Text = trackBar1.Value.ToString();
    
                serialPort1.Write(trackBar1.Value.ToString());
                serialPort1.Write("\n\r");
            }
    
            private void trackBar3_Scroll(object sender, EventArgs e)
            {
                int servo3label = trackBar3.Value - 360;
                label3.Text = servo3label.ToString();
                serialPort1.Write(trackBar3.Value.ToString());
                serialPort1.Write("\n\r");
    
            }

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Naja, bei jedem empfangenen Zeichen wird deine Buffer Position wieder auf Null gesetzt...
    Das kann ja schonmal nicht klappen. Außerdem wertest du auch den Rückgabewert der "Eingabe"-Funktion nicht aus. Das dürfte auch dazu führen, dass das Ganze nicht klappt.

    Das Senden der Werte sieht mir auch etwas seltsam aus, es sieht so aus als ob du denkst, dass die modifizierten TrackBar-Werte gesendet werden ("-360","-180").
    Das werden sie aber sicherlich nicht.

  7. #17
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Zitat Zitat von Fabian E. Beitrag anzeigen
    Das Senden der Werte sieht mir auch etwas seltsam aus, es sieht so aus als ob du denkst, dass die modifizierten TrackBar-Werte gesendet werden ("-360","-180").
    Das werden sie aber sicherlich nicht.
    Nein das ist nur für ein Label, senden tuhe ich ich bei trackbar1 0 - 180 bei trackbar2 180 - 360 und bei trackbar3 360 - 540.

  8. #18
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Zitat Zitat von AsuroPhilip Beitrag anzeigen
    Nein das ist nur für ein Label, senden tuhe ich ich bei trackbar1 0 - 180 bei trackbar2 180 - 360 und bei trackbar3 360 - 540.
    ach dann soll das deine deine Lösung für "1:100" sein, okay. Das ist dann natürlich okay so.

    Allerdings ändert sich an den anderen Punkten nichts, die sind immernoch falsch.

  9. #19
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Zitat Zitat von Fabian E. Beitrag anzeigen
    ach dann soll das deine deine Lösung für "1:100" sein, okay. Das ist dann natürlich okay so.
    Ja mir ist nichts anderes eingefallen ;->


    Zitat Zitat von Fabian E.
    Außerdem wertest du auch den Rückgabewert der "Eingabe"-Funktion nicht aus
    Wie werte ich die denn richtig aus?

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Zitat Zitat von AsuroPhilip Beitrag anzeigen
    Ja mir ist nichts anderes eingefallen ;->
    Wie werte ich die denn richtig aus?
    Hm? Du gibst doch einen Wert zurück aus der Funktion, dann musst du doch auch irgendwas damit machen...
    In deinem Fall eben prüfen, ob die gesamte Zahl übertragen wurde...

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Ähnliche Themen

  1. Asuro soll an Matlab ausgeben
    Von blueyo im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 05.03.2011, 19:14
  2. Antworten: 75
    Letzter Beitrag: 12.12.2010, 21:34
  3. Antworten: 13
    Letzter Beitrag: 21.11.2010, 18:41
  4. Crash Bobby soll Text auf Monitor ausgeben
    Von palermo im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 7
    Letzter Beitrag: 11.12.2006, 14:09
  5. Asuro soll Text ausgeben :D
    Von R3ð_BuLL© im Forum Asuro
    Antworten: 4
    Letzter Beitrag: 09.11.2006, 10:26

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress