- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: RP6 Terminal über PC ansprechen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    RTS setzen mit Eigenschaftsknoten

    RTS kann man mit einem Eigenschaftsknoten jederzeit in LabVIEW setzen. Im Buch "Praxiseinstieg LabVIEW" ISBN 3772340393, ist auf Seite 192 ein Beispiel, wie man mit der RS232 Schnittstelle eine LED ansteuert. Ein, wie oben beschriebener Reset, müsste auf diese Weise möglich sein.

  2. #2
    Thx fritzyyy für die antwort aber ich hab es ehh gewusst wie ich RTS auf Low/High setzten konnte Toll zu sehen das auch noch andere mit LabView da draußen sind....
    Gruß Biohazard

  3. #3
    So die Ansteuerung funktioniert mal fürs erste...
    http://www.youtube.com/watch?v=rOhR0VNoDxY

    Hab sie mit einer Webcam über Labview gesteuert... noch gibt es "Kinderkrankheiten" aber die werden auch noch gelöst: Der Servo wird nicht ständig gepulst sondern nur wenn das Programm einen Befehl sendet; Der Servoarm ist eigentlich nie mit seiner Position zufrieden, deshalb umkreist er die Soll-Position auch bei Stillstand des Lasers.

    Bin für Wünsche, Anregungen und Beschwerden offen

    Gruß Biohazard

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.03.2006
    Ort
    Darmstadt
    Alter
    34
    Beiträge
    522
    Sieht doch schon mal nicht schlecht aus.

    Das ständige Hin- und Herwackeln kommt wegen der Verzögerung der Webcam. Ich würde das einfach so machen, dass das Servo überhaupt nicht bewegt wird, wenn sich der Laserpunkt innerhalb eines bestimmten Umkreises vom Mittelpunkt befindet, z.B. 5% des Bildes.

    Kenn mich mit der Lib des RP6 nicht aus, aber man kann doch bestimmt auch abfragen, ob überhaut ein Zeichen empfangen wurde oder nicht. Damit könnte verhindern, dass das Programm beim warten auf neue Zeichen blockiert, und das Servo ständig mit Impulsen versorgen.

    MfG Mark

  5. #5
    aso... den ausdruck "strcmp" hab ich nicht gefunden. Aber die while schleife macht ja genau das was ich brauche.

    Hab jetzt nur das Problem das er irgendwie nicht zwischen den eingaben unterscheidet...
    Code:
    #include "RP6BaseServoLib.h"
    #include "RP6RobotBaseLib.h"
    
    int8_t deltaX = 0;
    int8_t deltaY = 0;
    char receiveBuffer[UART_RECEIVE_BUFFER_SIZE];
    
    
    uint8_t test = 0;
    
    void getCMD(void)
    {
    	receiveBytesToBuffer(1, &receiveBuffer[0]);
    	
    	test = receiveBuffer[0] - 48;
    	
    	if(receiveBuffer[0] == '0')
    		{
    			deltaX = deltaX;deltaY = deltaY;
    		}
    	else if(receiveBuffer[0] == 'w')
    		{
    			deltaX++;
    		}
    	else if(receiveBuffer[0] == 's')
    		{
    			deltaX--;
    		}
    	else if(receiveBuffer[0] == 'a')
    		{
    			deltaY++;
    		}
    	else if(receiveBuffer[0] == 'd')
    		{
    			deltaY--;
    		}
    
    
    }
    
    int main(void)
    {
       initRobotBase();
       
       writeString_P("\n\n   _______________________\n");
       writeString_P("   \\| RP6  ROBOT SYSTEM |/\n");
       writeString_P("    \\_-_-_-_-_-_-_-_-_-_/\n\n");
    
       writeString_P("################\n");
       writeString_P("<<RP6     Base>>\n");
       writeString_P(" Servo - Test 1 \n");
       writeString_P("  Version 1.20  \n");
       writeString_P("################\n\n");
       mSleep(2500);
    
       setLEDs(0b111111);
       mSleep(500);
       powerON();
       
       initSERVO(SERVO1 | SERVO2);
    
         
       while(true) 
       {
       
       servo1_position = MIDDLE_POSITION+deltaX;
       servo2_position = MIDDLE_POSITION+deltaY;
    	
    	getCMD();
    	
          task_SERVO();
          task_RP6System();
    	  
    	  
       }
       return 0;
    }
    das test = receiveBuffer[0] - 48; hab ich der vollständigkeit halber übernommen.

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Hallo,

    > den ausdruck "strcmp" hab ich nicht gefunden

    Suchfunktion von Texteditor?


    > das test = receiveBuffer[0] - 48; hab ich der
    > vollständigkeit halber übernommen.

    48 ist ASCII für 0
    Das ist nur für die Abfrage nach Zahlen von 0 bis 9 in dem switch case - brauchst Du also nicht.

    Hab leider keine Zeit deinen Code nachzuvollziehen / Fehler zu suchen da musst Du selbst testen woran das liegt.


    MfG,
    SlyD

  7. #7
    tja die eingebaute suchfunktion findet leider nix...
    werde mich aber schon irgendwie durchschlagen...
    Thx SlyD

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    > tja die eingebaute suchfunktion findet leider nix...

    Die Anführungszeichen hast Du aber hoffentlich weggelassen...

    z.B. Zeile 1003

  9. #9
    ja hab ich und bei zeile 1003 steht bei mir mSleep(500);.... hoffentlich reden wir beide von der gleichen datei
    ich habe RP6Base_SELFTEST.c offen

  10. #10
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Vielleicht hast Du eine alte Version?
    Lad mal die aktuelle runter.

    Die stellen in dem Programm sind aber auch per durchscrollen und hinschauen sehr einfach zu finden - ein paar if-then-else konstrukte mit strcmp drin.


Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test