Go Down

Topic: Amarino (Read 1 time) previous topic - next topic

ygobi

Hello, I've ordered a motor shield and I want to make this project at http://arduino.cc/forum/index.php/topic,90809.0.html but my motor shield used is the ladyada motor shield and the code is written for another motor shield. I've tried to fix this so it would work with my motor shield which is coming some time soon, it seems to compile without any errors but I just want someone that knows way more than me at this to help and see if this would work.
Code: [Select]
#include <AFMotor.h>
AF_DCMotor frontleft(1, MOTOR12_64KHZ);
AF_DCMotor frontright(2, MOTOR12_64KHZ);
AF_DCMotor backleft(3, MOTOR34_1KHZ);
AF_DCMotor backright(4, MOTOR34_1KHZ);

//Acceleration sensor from the smartphone is used to drive the robot forward backwords left and right

//inspired from http://www.arduino.cc/playground/Code/HTCDesire
//arduino + amarino + HTC Wildfire

#include <MeetAndroid.h>

#define IDLE 0
#define RINGING 1
#define OFFHOOK 2

MeetAndroid meetAndroid;

void setup() 
  {
    Serial.begin(115200);

    meetAndroid.registerFunction(phoneorient, 'A');
      int input=0;
      frontleft.setSpeed(255);
      frontright.setSpeed(255);
      backleft.setSpeed(255);
      backright.setSpeed(255);
  }

void loop()
  {
    meetAndroid.receive(); // you need to keep this in your loop() to receive events
  }

  void phoneorient(byte flag, byte numOfValues)
  {
    //Phone Orientation Controller
    int values[]={0,0,0};
    meetAndroid.getIntValues(values);

  int Steer=values[1];   //
  int Delta=values[2];   //
  int Heading=values[3];    //

  if (Steer >=5)

    {   //left

    frontright.run(BACKWARD);
    frontleft.run(FORWARD);
    backleft.run(FORWARD);
    backright.run(BACKWARD);
         
  }

  else if (Steer <=-5)
  { //right

    frontright.run(FORWARD);
    frontleft.run(BACKWARD);
    backleft.run(BACKWARD);
    backright.run(FORWARD);

  }

   else if (Delta >=5) { //forward
   
    frontright.run(FORWARD);
    frontleft.run(FORWARD);
    backleft.run(FORWARD);
    backright.run(FORWARD);

  }
     else if (Delta <=-5) { //back

    frontright.run(BACKWARD);
    frontleft.run(BACKWARD);
    backleft.run(BACKWARD);
    backright.run(BACKWARD);

  }

  else
 
  {
    frontright.run(RELEASE);
    frontleft.run(RELEASE);
    backleft.run(RELEASE);
    backright.run(RELEASE);

  }

    Serial.println(values[1]);  //Throttle  , Pitch
    Serial.println(values[2]);  //Steering, Roll
    Serial.println(values[3]);  // Heading, degree
}


It's a 4WD ground robot, I'm using a Galaxy Nexus and going to use a JY-MCU bluetooth module. Please reply to this thread, it would really help.

ygobi

And I almost forgot, I want to add LED's to this project, which 4 pins would be available for my needs?

PaulS

You would need someone else with an Android phone and a LadyAda motor shield to tear their project down and set yours up, to test that code. What do you suppose the odds are of that happening?

Just looking at the code, though, I can tell you that it won't work. It isn't just a shield issue, though.

A hint: Array indices start at 0.

Code: [Select]
void setup() 
  {
...
       int input=0;
...
  }


What does "input" do?
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

ygobi

I'm not sure, should I remove it?

Yes, it's not doing anything.




As PaulS hinted, this is wrong:

Code: [Select]

    int values[]={0,0,0};
    meetAndroid.getIntValues(values);

  int Steer=values[1];   //
  int Delta=values[2];   //
  int Heading=values[3];    //



Arrays start at 0, not 1. So (other things being equal) that should read:

Code: [Select]

    int values[]={0,0,0};
    meetAndroid.getIntValues(values);

  int Steer=values[0];   //
  int Delta=values[1];   //
  int Heading=values[2];    //

Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

holmes4

Do one thing at a time - so first work on the motors drop all the rest!

Then sort the BT.

Then added them together.

But while you wait for the motor shield you could try making the built in LED on pin 13 blink.

Mark

Go Up