- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 44

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

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Vielen Dank ;->

    Hat geklappt *happy*

    Könnte ich den auch damit eine Servo steuern?

    Code:

    Code:
    #include "RP6ControlLib.h"
    #include "RP6ControlServoLib.h"
    #include "RP6uart.h"
    
    
        char Buffer[UART_RECEIVE_BUFFER_SIZE + 1];
    
    
        uint8_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;
    }
    
    void Warten(void){
    
    while(!Eingabe());
    
    }
    
    
    
    int main(void)
    {  
    
        initRP6Control();
        initLCD();
    
    
        setLEDs(0b111111);
        mSleep(500);
        setLEDs(0b000000);
        
        initSERVO(SERVO1);
    
        
        while(true)  
        {
            Warten();
            setCursorPosLCD(0, 0);
            writeStringLCD(Buffer);
            
            servo1_position =  Buffer;
    
             
    
    
            task_SERVO();
    
            
            mSleep(3);
        }
        return 0;
    }
    Egal was ich abschicke, der Servo zappelt immer nur kurz hoch.


    mfG
    Philip
    Geändert von AsuroPhilip (22.05.2011 um 10:56 Uhr)

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von AsuroPhilip Beitrag anzeigen
    Vielen Dank ;->

    Hat geklappt *happy*

    Könnte ich den auch damit eine Servo steuern?

    Code:

    Code:
    #include "RP6ControlLib.h"
    #include "RP6ControlServoLib.h"
    #include "RP6uart.h"
    
    
        char Buffer[UART_RECEIVE_BUFFER_SIZE + 1];
    
    
        uint8_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;
    }
    
    void Warten(void){
    
    while(!Eingabe());
    
    }
    
    
    
    int main(void)
    {  
    
        initRP6Control();
        initLCD();
    
    
        setLEDs(0b111111);
        mSleep(500);
        setLEDs(0b000000);
        
        initSERVO(SERVO1);
    
        
        while(true)  
        {
            Warten();
            setCursorPosLCD(0, 0);
            writeStringLCD(Buffer);
            
            servo1_position =  Buffer;
    
             
    
    
            task_SERVO();
    
            
            mSleep(3);
        }
        return 0;
    }
    Egal was ich abschicke, der Servo zappelt immer nur kurz hoch.


    mfG
    Philip
    Mit C kenne ich mich kaum aus, aber aber Du liest ein Char(), die PWM für ein Servo braucht aber einen Zahlen Wert?
    z.B. 0...255 oder täusche ich mich jetzt?

    Gruß Richard

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Ne char ist egal aber

    servo1_position = Buffer;

    das ist böse. Du weist den ZEIGER Buffer als wert für servo1_position zu.

    Du musst auch noch die ASCII Zeichen vom PC umwandeln.
    Schau Dir mal das Selftest Programm an.
    Oh und natürlich die Beispielprogramme zum UART (RP6BASE examples) da ist das auch gezeigt!

    MfG,
    SlyD

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Zitat Zitat von SlyD Beitrag anzeigen
    servo1_position = Buffer;

    das ist böse. Du weist den ZEIGER Buffer als wert für servo1_position zu.

    Du musst auch noch die ASCII Zeichen vom PC umwandeln.
    Wie wandelt man das denn um?

    Weil wenn ich 12 schreibe, steht im LCD auch 12, und diese 12 soll dann die servo1_position sein. Und wenn dan ne 13 kommt soll dann natürlich die servo1_position 13 sein.


    mfG
    Philip

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    > wenn ich 12 schreibe, steht im LCD auch 12,

    Klar, Das LCD versteht ja auch ASCII Codes also muss da nix umgewandelt werden


    s. z.B. RP6Base_Selftest.c ab Zeile 1265

    Code:
            if(getInputLine()) 
            {
    ...
    ...
                { 
                    pwm_tmp = atoi(receiveBuffer); 
                   
    ... fehlercheck ... 
    
                    if(pwm_tmp > 120){pwm_tmp = 120; writeString_P("\n--> Power limited to 120!");} 
                    else if(pwm_tmp < 0) {pwm_tmp = 0;} 
                    pwm = pwm_tmp; 
                     
                    writeString_P("\n--> Change speed to:"); 
                    writeInteger(pwm_tmp,DEC); 
                    writeChar('\n'); 
                                 
                    setMotorPower(pwm,pwm); 
                }


    MfG,
    SlyD

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Danke, hat geklappt ;->

    Kann ich auch mehrere Servos so steuern?

    Also wenn ich sende "1:100" soll der erste Servo auf 100 und wenn ich "2:50" sende der 2. auf 50, oder geht das nicht, bzw. anders?

    mfG
    Philip

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    27.07.2010
    Ort
    Aachen ---- NRW
    Beiträge
    251
    Zitat Zitat von AsuroPhilip Beitrag anzeigen

    Also wenn ich sende "1:100" soll der erste Servo auf 100 und wenn ich "2:50" sende der 2. auf 50, oder geht das nicht, bzw. anders?
    Keiner ne Idee?

Ä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
  •  

Solar Speicher und Akkus Tests