Adafruit-MortorShield_sample
Dependencies: Adafruit-MotorShield Adafruit-PWM-Servo-Driver mbed
Fork of Adafruit-PWM-Servo-Driver_sample by
main.cpp@3:2d789dbc57cf, 2014-10-15 (annotated)
- Committer:
- robo8080
- Date:
- Wed Oct 15 02:18:01 2014 +0000
- Revision:
- 3:2d789dbc57cf
- Parent:
- 2:0f6b9593286e
test2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
syundo0730 | 0:4323102e4255 | 1 | #include "mbed.h" |
robo8080 | 2:0f6b9593286e | 2 | #include "Adafruit_MotorShield.h" |
syundo0730 | 0:4323102e4255 | 3 | #include "Adafruit_PWMServoDriver.h" |
syundo0730 | 0:4323102e4255 | 4 | |
robo8080 | 2:0f6b9593286e | 5 | Serial pc(USBTX,USBRX); |
robo8080 | 2:0f6b9593286e | 6 | |
robo8080 | 2:0f6b9593286e | 7 | // Create the motor shield object with the default I2C address |
robo8080 | 2:0f6b9593286e | 8 | //Adafruit_MotorShield AFMS = Adafruit_MotorShield(p9, p10, 0x60 << 1); |
robo8080 | 2:0f6b9593286e | 9 | Adafruit_MotorShield AFMS = Adafruit_MotorShield(D14, D15, 0x60 << 1); |
robo8080 | 2:0f6b9593286e | 10 | // Or, create it with a different I2C address (say for stacking) |
robo8080 | 2:0f6b9593286e | 11 | // Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61); |
robo8080 | 2:0f6b9593286e | 12 | |
robo8080 | 2:0f6b9593286e | 13 | // Select which 'port' M1, M2, M3 or M4. In this case, M1 |
robo8080 | 2:0f6b9593286e | 14 | Adafruit_DCMotor *myMotor = AFMS.getMotor(1); |
robo8080 | 2:0f6b9593286e | 15 | // You can also make another motor on port M2 |
robo8080 | 2:0f6b9593286e | 16 | //Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2); |
syundo0730 | 0:4323102e4255 | 17 | |
robo8080 | 2:0f6b9593286e | 18 | void setup() { |
robo8080 | 2:0f6b9593286e | 19 | pc.baud(9600); // set up Serial library at 9600 bps |
robo8080 | 2:0f6b9593286e | 20 | pc.printf("Adafruit Motorshield v2 - DC Motor test!\n\r"); |
robo8080 | 2:0f6b9593286e | 21 | |
robo8080 | 2:0f6b9593286e | 22 | AFMS.begin(); // create with the default frequency 1.6KHz |
robo8080 | 2:0f6b9593286e | 23 | //AFMS.begin(1000); // OR with a different frequency, say 1KHz |
robo8080 | 2:0f6b9593286e | 24 | |
robo8080 | 2:0f6b9593286e | 25 | // Set the speed to start, from 0 (off) to 255 (max speed) |
robo8080 | 2:0f6b9593286e | 26 | myMotor->setSpeed(150); |
robo8080 | 2:0f6b9593286e | 27 | myMotor->run(FORWARD); |
robo8080 | 2:0f6b9593286e | 28 | // turn on motor |
robo8080 | 2:0f6b9593286e | 29 | myMotor->run(RELEASE); |
syundo0730 | 0:4323102e4255 | 30 | } |
syundo0730 | 0:4323102e4255 | 31 | |
robo8080 | 2:0f6b9593286e | 32 | void loop() { |
robo8080 | 2:0f6b9593286e | 33 | uint8_t i; |
robo8080 | 2:0f6b9593286e | 34 | |
robo8080 | 2:0f6b9593286e | 35 | pc.printf("tick\n\r"); |
robo8080 | 2:0f6b9593286e | 36 | |
robo8080 | 2:0f6b9593286e | 37 | myMotor->run(FORWARD); |
robo8080 | 2:0f6b9593286e | 38 | for (i=0; i<255; i++) { |
robo8080 | 2:0f6b9593286e | 39 | myMotor->setSpeed(i); |
robo8080 | 2:0f6b9593286e | 40 | wait_ms(10); |
robo8080 | 2:0f6b9593286e | 41 | } |
robo8080 | 2:0f6b9593286e | 42 | for (i=255; i!=0; i--) { |
robo8080 | 2:0f6b9593286e | 43 | myMotor->setSpeed(i); |
robo8080 | 2:0f6b9593286e | 44 | wait_ms(10); |
robo8080 | 2:0f6b9593286e | 45 | } |
robo8080 | 2:0f6b9593286e | 46 | |
robo8080 | 2:0f6b9593286e | 47 | pc.printf("tock\n\r"); |
robo8080 | 2:0f6b9593286e | 48 | |
robo8080 | 2:0f6b9593286e | 49 | myMotor->run(BACKWARD); |
robo8080 | 2:0f6b9593286e | 50 | for (i=0; i<255; i++) { |
robo8080 | 2:0f6b9593286e | 51 | myMotor->setSpeed(i); |
robo8080 | 2:0f6b9593286e | 52 | wait_ms(10); |
robo8080 | 2:0f6b9593286e | 53 | } |
robo8080 | 2:0f6b9593286e | 54 | for (i=255; i!=0; i--) { |
robo8080 | 2:0f6b9593286e | 55 | myMotor->setSpeed(i); |
robo8080 | 2:0f6b9593286e | 56 | wait_ms(10); |
robo8080 | 2:0f6b9593286e | 57 | } |
robo8080 | 2:0f6b9593286e | 58 | |
robo8080 | 2:0f6b9593286e | 59 | pc.printf("tech\n\r"); |
robo8080 | 2:0f6b9593286e | 60 | myMotor->run(RELEASE); |
robo8080 | 2:0f6b9593286e | 61 | wait(1.0); |
syundo0730 | 0:4323102e4255 | 62 | } |
syundo0730 | 0:4323102e4255 | 63 | |
syundo0730 | 0:4323102e4255 | 64 | int main() { |
robo8080 | 2:0f6b9593286e | 65 | setup(); |
robo8080 | 2:0f6b9593286e | 66 | while(1) { |
robo8080 | 2:0f6b9593286e | 67 | loop(); |
robo8080 | 2:0f6b9593286e | 68 | } |
robo8080 | 2:0f6b9593286e | 69 | } |