Difference between revisions of "Blog 19"
Jump to navigation
Jump to search
| Line 77: | Line 77: | ||
You can also check the [[motor protocol]], for more info. |
You can also check the [[motor protocol]], for more info. |
||
In my example script we go forward with 0x21 + 0x31 having the same value. |
|||
For other movements you should have(If you car is flipped this can of course be the opposite!): |
|||
To go backwards: |
|||
set_var(0x48, 0x20, Same Speed value); |
|||
set_var(0x48, 0x30, Same Speed value); |
|||
To go left: |
|||
set_var(0x48, 0x21, High Speed value); |
|||
set_var(0x48, 0x31, Low Speed value); |
|||
To go right: |
|||
set_var(0x48, 0x21, Low Speed value); |
|||
set_var(0x48, 0x31, High Speed value); |
|||
To stop the car: |
|||
set_var(0x48, 0x21, Speed value doesn't matter); |
|||
set_var(0x48, 0x31, Speed value doesn't matter); |
|||
Revision as of 10:40, 23 November 2015
2 Wheeled car: Arduino Version
#define Motor 0x48
#include <Wire.h>
//Time to pause rotating
//static unsigned long Pause = 10000;
static unsigned long Speed = 40;
void setup()
{
Wire.begin(); // wake up I2C bus
Serial.begin(9600);
}
byte get_var(byte address, byte reg)
{
byte value;
Wire.beginTransmission(address);
Wire.write(reg);
Wire.endTransmission();
delayMicroseconds (10);
Wire.requestFrom(Motor, 1);
delayMicroseconds (10);
value = Wire.read();
delayMicroseconds (10);
return value;
}
void set_var(byte address, byte reg, byte value)
{
Wire.beginTransmission(address); // transmit to motor
delayMicroseconds (10);
Wire.write(reg);
delayMicroseconds (10);
Wire.write(value);
delayMicroseconds (10);
Wire.endTransmission(); // stop transmitting
}
void loop()
{
unsigned long AddressA;
unsigned long AddressB;
char buf[32];
set_var(0x48, 0x21, Speed);
delayMicroseconds (10);
set_var(0x48, 0x31, Speed);
AddressA = get_var(0x48, 0x21);
sprintf (buf, "Speed: A:%d ", AddressA);
Serial.write (buf);
AddressB = get_var(0x48, 0x31);
sprintf (buf, " B: %d\r\n", AddressB);
Serial.write (buf);
delay(500);
// delay(Pause);
}
This is the list I have made for the Raspberry Pi Version, what also counts for the Arduino version(If your car is switched to the other side this can of course be the opposite):
- # X is forwards - Y is backwards
- #Wheels at front
- #20 A backwards
- #21 A forwards
- #22 A stop
- #30 B backwards
- #31 B forwards
- #32 B stop
You can also check the motor protocol, for more info.
In my example script we go forward with 0x21 + 0x31 having the same value. For other movements you should have(If you car is flipped this can of course be the opposite!):
To go backwards:
set_var(0x48, 0x20, Same Speed value); set_var(0x48, 0x30, Same Speed value);
To go left:
set_var(0x48, 0x21, High Speed value); set_var(0x48, 0x31, Low Speed value);
To go right:
set_var(0x48, 0x21, Low Speed value); set_var(0x48, 0x31, High Speed value);
To stop the car:
set_var(0x48, 0x21, Speed value doesn't matter); set_var(0x48, 0x31, Speed value doesn't matter);