- SF800 Solar Speicher Tutorial         
Ergebnis 11 bis 20 von 20

Thema: Asuro bluetooth

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    02.10.2012
    Beiträge
    12
    Danke für deine Antwort,
    ich habe jetzt zwei programme geschrieben ,allerdings ohne gyro und ich weiss nicht genau wie und was ich integrieren kann um die Daten vom Gyro auszulesen und zum andern Asuro zu senden ??
    //Der Master-ASURO soll nach dem Einschalten einen Meter vor und zurückfahren und sendet ständig das Signal an den Slave-ASURO. Wenn der ASURO-Slave in der Nähe(im Piconetz) ist, dann kann er das Signal empfangen und dreht sich im Kreis. Sobald der Master ausgeht oder nicht mehr in Reichweite ist, stoppt der ASURO-Slave sich bewegen und macht nach zwei Sekunden macht er eine Halbkreis Drehung und bleibt dann Stehen. Der Programmablauf wiederholt sich wenn man den ASURO-Master wieder eingeschalte//

    Das Programmteil für den ASURO-Master:

    Code:
    #include "asuro.h"
    #include "myasuro.h"
    void fahren (
    int distance,
    int speed)
    {
    unsigned  long  enc_count;
    int   tot_count = 0;
    int   diff = 0;
    int   l_speed = speed, r_speed = speed;
    /* stop the motors until the direction is set */
    MotorSpeed (0, 0);
    /* if distance is NOT zero, then take this value to go ... */
    if (distance != 0)
    {
    /* calculate tics from mm */
    enc_count  = abs (distance) * 10000L;
        enc_count /= MY_GO_ENC_COUNT_VALUE;
        if (distance < 0)
          MotorDir (RWD, RWD);
        else
          MotorDir (FWD, FWD);
      }
      EncoderSet (0, 0);
      /* now start the machine */
      MotorSpeed (l_speed, r_speed);
      while (tot_count < enc_count)
      {
    	SerPrint("C\n\r");
        tot_count += encoder [LEFT];
        diff = encoder [LEFT] - encoder [RIGHT];
        if (diff > 0)
        { /* Left faster than right */
          if ((l_speed > speed) || (r_speed > 244))
            l_speed -= 10;
          else
            r_speed += 10;
        }
        if (diff < 0)
        { /* Right faster than left */
          if ((r_speed > speed) || (l_speed > 244))
            r_speed -= 10;
          else
            l_speed += 10;
        }
        /* reset encoder */
        EncoderSet (0, 0);
        MotorSpeed (l_speed, r_speed);
        Msleep (1);
      }
      MotorDir (BREAK, BREAK);
      }
    void fahren2 (
      int distance,
        int speed)
    {
      unsigned  long  enc_count;
                int   tot_count = 0;
                int   diff = 0;
                int   l_speed = speed, r_speed = speed;
      /* stop the motors until the direction is set */
      MotorSpeed (0, 0);
      /* if distance is NOT zero, then take this value to go ... */
      if (distance != 0)
      {
        /* calculate tics from mm */
        enc_count  = abs (distance) * 10000L;
        enc_count /= MY_GO_ENC_COUNT_VALUE;
        if (distance < 0)
          MotorDir (RWD, RWD);
        else
          MotorDir (FWD, FWD);
      }
      /* ... else take the value degree for a turn */
      else
      {
        /*  calculate tics from degree */
        enc_count  = abs (degree) * MY_TURN_ENC_COUNT_VALUE;
        enc_count /= 360L;
    
        if (degree < 0)
          MotorDir (RWD, FWD);
        else
          MotorDir (FWD, RWD);
      }
      /* reset encoder */
      EncoderSet (0, 0);
      /* now start the machine */
      MotorSpeed (l_speed, r_speed);
      while (tot_count < enc_count)
      {
    	SerPrint("V\n\r");
        tot_count += encoder [LEFT];
        diff = encoder [LEFT] - encoder [RIGHT];
    
        if (diff > 0)
        { /* Left faster than right */
          if ((l_speed > speed) || (r_speed > 244))
            l_speed -= 10;
          else
            r_speed += 10;
        }
        if (diff < 0)
        { /* Right faster than left */
          if ((r_speed > speed) || (l_speed > 244))
            r_speed -= 10;
          else
            l_speed += 10;
        }
        /* reset encoder */
        EncoderSet (0, 0);
        MotorSpeed (l_speed, r_speed);
        Msleep (1);
      }
      MotorDir (BREAK, BREAK);
      }
    int main (void)
    {
    	Init();
    	EncoderInit();
               unsigned char senden, abfang;
    	unsigned char taste, taste2;
    	int i = 0;
    	senden = 0;	 // sende-Variable auf null setzen
    	while(1) {
    		fahren(1000,0,180);
    		fahren2(-1000,0,180);
    		Msleep(200);
    	}
    	return 0;
    }

    Das Programm für den ASURO -Slave:

    Code:
    #include "asuro.h"
    #include "myasuro.h"
    void rechts (
    int distance,
    int degree,
    int speed)
    {
    unsigned  long  enc_count;
    int   tot_count = 0;
    int   diff = 0;
    int   l_speed = speed, r_speed = speed;
    /* stop the motors until the direction is set */
    MotorSpeed (0, 0);
    /* if distance is NOT zero, then take this value to go ... */
    if (distance != 0)
    {
    /* calculate tics from mm */
    enc_count  = abs (distance) * 10000L;
    enc_count /= MY_GO_ENC_COUNT_VALUE;
    
    if (distance < 0)
    MotorDir (RWD, RWD);
    else
    MotorDir (FWD, FWD);
    }
    /* ... else take the value degree for a turn */
    else
    {
    /*  calculate tics from degree */
    enc_count  = abs (degree) * MY_TURN_ENC_COUNT_VALUE;
    enc_count /= 360L;
    
    if (degree < 0)
          MotorDir (RWD, FWD);
        else
          MotorDir (FWD, RWD);
      }
      /* reset encoder */
      EncoderSet (0, 0);
      /* now start the machine */
      MotorSpeed (l_speed, r_speed);
      while (tot_count < enc_count)
      {
    	tot_count += encoder [LEFT];
        diff = encoder [LEFT] - encoder [RIGHT];
        if (diff > 0)
        { /* Left faster than right */
          if ((l_speed > speed) || (r_speed > 244))
            l_speed -= 10;
          else
            r_speed += 10;
        }
        if (diff < 0)
        { /* Right faster than left */
          if ((r_speed > speed) || (l_speed > 244))
            r_speed -= 10;
          else
            l_speed += 10;
        }
        /* reset encoder */
        EncoderSet (0, 0);
        MotorSpeed (l_speed, r_speed);
        //Msleep (1);
      }
    }
    
    int main (void)
    {
    	Init();
    	EncoderInit();
    	unsigned char senden;
    	while(1)
    	{
    		SerRead(&senden, 1,0);		// ein Zeichen empfangen
    		
    		if(senden == 'C'){
    			GoTurn(0,360,150);
    			BackLED(ON,ON);
    		}
    		else if(senden == 'V'){
    			GoTurn(0,-360,150);
    			BackLED(OFF,OFF);
    			StatusLED(YELLOW);
    		}
    	}		
    	return 0;
    }
    Geändert von radbruch (23.11.2012 um 11:07 Uhr) Grund: [Code]-Tags eingefügt

Ähnliche Themen

  1. Fußball Asuro mit bluetooth
    Von arabellion im Forum Asuro
    Antworten: 7
    Letzter Beitrag: 19.12.2011, 08:58
  2. [GELÖST] - Erweiterung für Bluetooth - Asuro
    Von pinsel120866 im Forum Asuro
    Antworten: 12
    Letzter Beitrag: 06.10.2008, 21:46
  3. Asuro und Bluetooth-Webcam
    Von Tigger88 im Forum Asuro
    Antworten: 1
    Letzter Beitrag: 28.10.2007, 15:17
  4. Asuro Bluetooth Funkverbindung
    Von robo.fr im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 13.07.2007, 15:31
  5. help on bluetooth asuro project!
    Von xxx666 im Forum Asuro
    Antworten: 6
    Letzter Beitrag: 30.12.2006, 12:27

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress