Skip to content

Instantly share code, notes, and snippets.

@treeherder
Last active August 29, 2015 13:56
Show Gist options
  • Select an option

  • Save treeherder/9317034 to your computer and use it in GitHub Desktop.

Select an option

Save treeherder/9317034 to your computer and use it in GitHub Desktop.

Revisions

  1. treeherder revised this gist Mar 4, 2014. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -13,14 +13,14 @@
    #define C2 A1


    uint8_t enable(){
    static const uint8_t enable(){
    digitalWrite(EN1A,HIGH);
    digitalWrite(EN1B,HIGH);
    digitalWrite(EN2A,HIGH);
    digitalWrite(EN2B,HIGH);
    }

    uint8_t thrust(char* dir){
    static const uint8_t thrust(char* dir){
    if(dir=="fwd"){
    digitalWrite(M1A,HIGH);
    digitalWrite(M1B,HIGH);
  2. treeherder revised this gist Mar 4, 2014. 1 changed file with 24 additions and 20 deletions.
    44 changes: 24 additions & 20 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -21,26 +21,36 @@ uint8_t enable(){
    }

    uint8_t thrust(char* dir){
    if(dir=="fwd")
    if(dir=="fwd"){
    digitalWrite(M1A,HIGH);
    digitalWrite(M1B,HIGH);
    digitalWrite(M2A,LOW);
    digitalWrite(M2B,LOW);
    if(dir=="rvs")
    }
    if(dir=="rvs"){
    digitalWrite(M1A,LOW);
    digitalWrite(M1B,LOW);
    digitalWrite(M2A,HIGH);
    digitalWrite(M2B,HIGH);
    if(dir=="rgt")
    digitalWrite(M2B,HIGH);
    }
    if(dir=="rgt"){
    digitalWrite(M1A,LOW);
    digitalWrite(M1B,LOW);
    digitalWrite(M2A,LOW);
    digitalWrite(M2B,LOW);
    if(dir=="lft")
    digitalWrite(M2B,LOW);
    }
    if(dir=="lft"){
    digitalWrite(M1A,HIGH);
    digitalWrite(M1B,HIGH);
    digitalWrite(M2A,HIGH);
    digitalWrite(M2B,HIGH);
    digitalWrite(M2B,HIGH);
    }
    if(dir=="stp"){
    digitalWrite(EN1A,LOW); //brake -roll-to-stop
    digitalWrite(EN1B,LOW); //brake -roll-to-stop right
    digitalWrite(EN2A,LOW); //brake -roll-to-stop left
    digitalWrite(EN2B,LOW); //brake -roll-to-stop left
    }
    }

    void setup()
    @@ -86,12 +96,12 @@ uint8_t forward()

    uint8_t stop()
    {

    struct ret ret_val;
    stp_val = &ret_val;
    digitalWrite(EN1A,LOW); //brake -roll-to-stop
    digitalWrite(EN1B,LOW); //brake -roll-to-stop right
    digitalWrite(EN2A,LOW); //brake -roll-to-stop left
    digitalWrite(EN2B,LOW); //brake -roll-to-stop left
    enable();
    thrust("stp");

    stp_val->c_1 = analogRead(C1);
    stp_val->c_2 = analogRead(C2); // check current for both wheels
    return (0);
    @@ -103,15 +113,9 @@ uint8_t reverse()
    struct ret ret_val;
    rvs_val = &ret_val;
    //right wheel channel 1
    digitalWrite(M1B,LOW); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    digitalWrite(EN1B,HIGH); //right enable channel 2
    digitalWrite(M2A,HIGH); //left wheel channel 1
    digitalWrite(M2B,HIGH); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    Serial.println(analogRead(C1)); // check current for right wheel
    Serial.println(analogRead(C2)); // check current for left wheel
    enable();
    thrust("rvs");

    rvs_val->c_1 = analogRead(C1);
    rvs_val->c_2 = analogRead(C2); // check current for both wheels
    return (0);
  3. treeherder revised this gist Mar 4, 2014. 1 changed file with 34 additions and 8 deletions.
    42 changes: 34 additions & 8 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -12,6 +12,37 @@
    #define C1 A0
    #define C2 A1


    uint8_t enable(){
    digitalWrite(EN1A,HIGH);
    digitalWrite(EN1B,HIGH);
    digitalWrite(EN2A,HIGH);
    digitalWrite(EN2B,HIGH);
    }

    uint8_t thrust(char* dir){
    if(dir=="fwd")
    digitalWrite(M1A,HIGH);
    digitalWrite(M1B,HIGH);
    digitalWrite(M2A,LOW);
    digitalWrite(M2B,LOW);
    if(dir=="rvs")
    digitalWrite(M1A,LOW);
    digitalWrite(M1B,LOW);
    digitalWrite(M2A,HIGH);
    digitalWrite(M2B,HIGH);
    if(dir=="rgt")
    digitalWrite(M1A,LOW);
    digitalWrite(M1B,LOW);
    digitalWrite(M2A,LOW);
    digitalWrite(M2B,LOW);
    if(dir=="lft")
    digitalWrite(M1A,HIGH);
    digitalWrite(M1B,HIGH);
    digitalWrite(M2A,HIGH);
    digitalWrite(M2B,HIGH);
    }

    void setup()
    {

    @@ -42,16 +73,11 @@ static struct ret *rvs_val;

    uint8_t forward()
    {
    enable();
    thrust("fwd");
    struct ret ret_val;
    fwd_val = &ret_val;
    digitalWrite(M1A,HIGH); //right wheel channel 1
    digitalWrite(M1B,HIGH); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    digitalWrite(EN1B,HIGH); //right enable channel 2
    digitalWrite(M2A,LOW); //left wheel channel 1
    digitalWrite(M2B,LOW); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2

    fwd_val->c_1 = analogRead(C1);
    fwd_val->c_2 = analogRead(C2); // check current for both wheels

  4. treeherder revised this gist Mar 4, 2014. 1 changed file with 8 additions and 5 deletions.
    13 changes: 8 additions & 5 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -36,11 +36,13 @@ struct ret
    //quadrature encoder data can come in here
    //accelerometer data?
    };
    static struct ret *fwd_val;
    static struct ret *stp_val;
    static struct ret *rvs_val;

    uint8_t forward()
    {
    struct ret ret_val;
    static struct ret *fwd_val;
    fwd_val = &ret_val;
    digitalWrite(M1A,HIGH); //right wheel channel 1
    digitalWrite(M1B,HIGH); //right wheel channel 2
    @@ -52,15 +54,13 @@ uint8_t forward()
    digitalWrite(EN2B,HIGH); //left enable channel 2
    fwd_val->c_1 = analogRead(C1);
    fwd_val->c_2 = analogRead(C2); // check current for both wheels
    Serial.println("C_2 %d C_1 %d8", fwd_val->c_1, fwd_val->c_2); // print the relevant information


    return (0);
    }

    uint8_t stop()
    {
    struct ret ret_val;
    static struct ret *stp_val;
    stp_val = &ret_val;
    digitalWrite(EN1A,LOW); //brake -roll-to-stop
    digitalWrite(EN1B,LOW); //brake -roll-to-stop right
    @@ -75,7 +75,6 @@ uint8_t stop()
    uint8_t reverse()
    {
    struct ret ret_val;
    static struct ret *rvs_val;
    rvs_val = &ret_val;
    //right wheel channel 1
    digitalWrite(M1B,LOW); //right wheel channel 2
    @@ -96,5 +95,9 @@ void loop()
    {

    forward();
    Serial.print("C_2 ");
    Serial.print(fwd_val->c_1);
    Serial.print("C_1");
    Serial.print(fwd_val->c_2);

    }
  5. treeherder revised this gist Mar 4, 2014. 1 changed file with 38 additions and 32 deletions.
    70 changes: 38 additions & 32 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -27,18 +27,21 @@ void setup()
    Serial.begin(9600);
    }

    typedef struct return_data current;

    struct return_data
    struct ret
    {
    uint32_t c_1; //current one
    uint32_t c_2; //current two

    uint8_t c_1; //current one
    uint8_t c_2; //current two
    //quadrature encoder data can come in here
    //accelerometer data?
    };
    uint32_t forward(current *curr)

    uint8_t forward()
    {
    struct ret ret_val;
    static struct ret *fwd_val;
    fwd_val = &ret_val;
    digitalWrite(M1A,HIGH); //right wheel channel 1
    digitalWrite(M1B,HIGH); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    @@ -47,48 +50,51 @@ uint32_t forward(current *curr)
    digitalWrite(M2B,LOW); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    curr->c_1 = analogRead(C1);
    curr->c_2 = analogRead(C2); // check current for both wheels
    fwd_val->c_1 = analogRead(C1);
    fwd_val->c_2 = analogRead(C2); // check current for both wheels
    Serial.println("C_2 %d C_1 %d8", fwd_val->c_1, fwd_val->c_2); // print the relevant information

    return (0);
    }

    uint32_t stop(current *curr)
    uint8_t stop()
    {
    struct ret ret_val;
    static struct ret *stp_val;
    stp_val = &ret_val;
    digitalWrite(EN1A,LOW); //brake -roll-to-stop
    digitalWrite(EN1B,LOW); //brake -roll-to-stop right
    digitalWrite(EN2A,LOW); //brake -roll-to-stop left
    digitalWrite(EN2B,LOW); //brake -roll-to-stop left
    curr->c_1 = analogRead(C1);
    curr->c_2 = analogRead(C2); // check current for both wheels
    stp_val->c_1 = analogRead(C1);
    stp_val->c_2 = analogRead(C2); // check current for both wheels
    return (0);
    }


    uint32_t reverse(current *curr)
    uint8_t reverse()
    {
    //right wheel channel 1
    digitalWrite(M1B,LOW); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    digitalWrite(EN1B,HIGH); //right enable channel 2
    digitalWrite(M2A,HIGH); //left wheel channel 1
    digitalWrite(M2B,HIGH); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    Serial.println(analogRead(C1)); // check current for right wheel
    Serial.println(analogRead(C2)); // check current for left wheel
    curr->c_1 = analogRead(C1);
    curr->c_2 = analogRead(C2); // check current for both wheels
    return (0);
    struct ret ret_val;
    static struct ret *rvs_val;
    rvs_val = &ret_val;
    //right wheel channel 1
    digitalWrite(M1B,LOW); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    digitalWrite(EN1B,HIGH); //right enable channel 2
    digitalWrite(M2A,HIGH); //left wheel channel 1
    digitalWrite(M2B,HIGH); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    Serial.println(analogRead(C1)); // check current for right wheel
    Serial.println(analogRead(C2)); // check current for left wheel
    rvs_val->c_1 = analogRead(C1);
    rvs_val->c_2 = analogRead(C2); // check current for both wheels
    return (0);
    }

    current moment; // a global scope for current sensor info


    void loop()
    {

    forward(&moment);
    Serial.print("C_1 %d", moment->c_1);
    Serial.print("C_2 %d", moment->c_2); // print the relevant information

    forward();

    }
  6. treeherder revised this gist Mar 3, 2014. 1 changed file with 14 additions and 9 deletions.
    23 changes: 14 additions & 9 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -47,28 +47,26 @@ uint32_t forward(current *curr)
    digitalWrite(M2B,LOW); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    curr -> c_1 = analogRead(C1);
    curr -> c_2 = analogRead(C2); // check current for both wheels
    curr->c_1 = analogRead(C1);
    curr->c_2 = analogRead(C2); // check current for both wheels
    return (0);
    }

    uint32_t stop(current *curr)
    {

    digitalWrite(EN1A,LOW); //brake -roll-to-stop
    digitalWrite(EN1B,LOW); //brake -roll-to-stop right
    digitalWrite(EN2A,LOW); //brake -roll-to-stop left
    digitalWrite(EN2B,LOW); //brake -roll-to-stop left
    curr -> c_1 = analogRead(C1);
    curr -> c_2 = analogRead(C2); // check current for both wheels
    curr->c_1 = analogRead(C1);
    curr->c_2 = analogRead(C2); // check current for both wheels
    return (0);
    }


    uint32_t reverse(current *curr)
    {

    digitalWrite(M1A,LOW); //right wheel channel 1
    //right wheel channel 1
    digitalWrite(M1B,LOW); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    digitalWrite(EN1B,HIGH); //right enable channel 2
    @@ -78,12 +76,19 @@ uint32_t reverse(current *curr)
    digitalWrite(EN2B,HIGH); //left enable channel 2
    Serial.println(analogRead(C1)); // check current for right wheel
    Serial.println(analogRead(C2)); // check current for left wheel
    curr -> c_1 = analogRead(C1);
    curr -> c_2 = analogRead(C2); // check current for both wheels
    curr->c_1 = analogRead(C1);
    curr->c_2 = analogRead(C2); // check current for both wheels
    return (0);
    }

    current moment; // a global scope for current sensor info


    void loop()
    {

    forward(&moment);
    Serial.print("C_1 %d", moment->c_1);
    Serial.print("C_2 %d", moment->c_2); // print the relevant information

    }
  7. treeherder revised this gist Mar 3, 2014. 1 changed file with 1 addition and 4 deletions.
    5 changes: 1 addition & 4 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -54,8 +54,7 @@ uint32_t forward(current *curr)

    uint32_t stop(current *curr)
    {
    uint32_t _c1 = 1;
    uint32_t _c2 = 1;

    digitalWrite(EN1A,LOW); //brake -roll-to-stop
    digitalWrite(EN1B,LOW); //brake -roll-to-stop right
    digitalWrite(EN2A,LOW); //brake -roll-to-stop left
    @@ -68,8 +67,6 @@ uint32_t stop(current *curr)

    uint32_t reverse(current *curr)
    {
    uint32_t _c1 = 1;
    uint32_t _c2 = 1;

    digitalWrite(M1A,LOW); //right wheel channel 1
    digitalWrite(M1B,LOW); //right wheel channel 2
  8. treeherder revised this gist Mar 3, 2014. 1 changed file with 6 additions and 8 deletions.
    14 changes: 6 additions & 8 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -39,8 +39,6 @@ struct return_data

    uint32_t forward(current *curr)
    {
    uint32_t _c1 = 1;
    uint32_t _c2 = 1;
    digitalWrite(M1A,HIGH); //right wheel channel 1
    digitalWrite(M1B,HIGH); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    @@ -49,8 +47,8 @@ uint32_t forward(current *curr)
    digitalWrite(M2B,LOW); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    curr -> analogRead(C1) = _c1;
    curr -> analogRead(C2) = _c2; // check current for both wheels
    curr -> c_1 = analogRead(C1);
    curr -> c_2 = analogRead(C2); // check current for both wheels
    return (0);
    }

    @@ -62,8 +60,8 @@ uint32_t stop(current *curr)
    digitalWrite(EN1B,LOW); //brake -roll-to-stop right
    digitalWrite(EN2A,LOW); //brake -roll-to-stop left
    digitalWrite(EN2B,LOW); //brake -roll-to-stop left
    curr -> analogRead(C1) = _c1;
    curr -> analogRead(C2) = _c2; // check current for both wheels
    curr -> c_1 = analogRead(C1);
    curr -> c_2 = analogRead(C2); // check current for both wheels
    return (0);
    }

    @@ -83,8 +81,8 @@ uint32_t reverse(current *curr)
    digitalWrite(EN2B,HIGH); //left enable channel 2
    Serial.println(analogRead(C1)); // check current for right wheel
    Serial.println(analogRead(C2)); // check current for left wheel
    curr -> analogRead(C1) = _c1;
    curr -> analogRead(C2) = _c2; // check current for both wheels
    curr -> c_1 = analogRead(C1);
    curr -> c_2 = analogRead(C2); // check current for both wheels
    return (0);
    }

  9. treeherder revised this gist Mar 3, 2014. 1 changed file with 77 additions and 11 deletions.
    88 changes: 77 additions & 11 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,31 @@
    #include <stdint.h>


    #define EN1A 9
    #define M1A 8
    #define EN1B 3
    #define M1B 2
    #define EN2A 4
    #define M2A 5
    #define EN2B 7
    #define M2B 6
    #define C1 A0
    #define C2 A1

    void setup()
    {

    pinMode(EN1A,OUTPUT);
    pinMode( M1A,OUTPUT);
    pinMode(EN1B,OUTPUT);
    pinMode( M1B,OUTPUT);
    pinMode(EN2A,OUTPUT);
    pinMode( M2A,OUTPUT);
    pinMode(EN2B,OUTPUT);
    pinMode( M2B,OUTPUT);

    Serial.begin(9600);
    }

    typedef struct return_data current;

    @@ -14,15 +42,53 @@ uint32_t forward(current *curr)
    uint32_t _c1 = 1;
    uint32_t _c2 = 1;
    digitalWrite(M1A,HIGH); //right wheel channel 1
    digitalWrite(M1B,HIGH); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    digitalWrite(EN1B,HIGH); //right enable channel 2
    digitalWrite(M2A,LOW); //left wheel channel 1
    digitalWrite(M2B,LOW); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    curr -> analogRead(C1) = _c1;
    curr -> analogRead(C2) = _c2; // check current for both wheels
    return (0);
    digitalWrite(M1B,HIGH); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    digitalWrite(EN1B,HIGH); //right enable channel 2
    digitalWrite(M2A,LOW); //left wheel channel 1
    digitalWrite(M2B,LOW); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    curr -> analogRead(C1) = _c1;
    curr -> analogRead(C2) = _c2; // check current for both wheels
    return (0);
    }


    uint32_t stop(current *curr)
    {
    uint32_t _c1 = 1;
    uint32_t _c2 = 1;
    digitalWrite(EN1A,LOW); //brake -roll-to-stop
    digitalWrite(EN1B,LOW); //brake -roll-to-stop right
    digitalWrite(EN2A,LOW); //brake -roll-to-stop left
    digitalWrite(EN2B,LOW); //brake -roll-to-stop left
    curr -> analogRead(C1) = _c1;
    curr -> analogRead(C2) = _c2; // check current for both wheels
    return (0);
    }


    uint32_t reverse(current *curr)
    {
    uint32_t _c1 = 1;
    uint32_t _c2 = 1;

    digitalWrite(M1A,LOW); //right wheel channel 1
    digitalWrite(M1B,LOW); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    digitalWrite(EN1B,HIGH); //right enable channel 2
    digitalWrite(M2A,HIGH); //left wheel channel 1
    digitalWrite(M2B,HIGH); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    Serial.println(analogRead(C1)); // check current for right wheel
    Serial.println(analogRead(C2)); // check current for left wheel
    curr -> analogRead(C1) = _c1;
    curr -> analogRead(C2) = _c2; // check current for both wheels
    return (0);
    }


    void loop()
    {
    }
  10. treeherder revised this gist Mar 3, 2014. 1 changed file with 17 additions and 17 deletions.
    34 changes: 17 additions & 17 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,4 @@

    typedef struct return_data current;

    struct return_data
    @@ -8,21 +9,20 @@ struct return_data
    //accelerometer data?
    };

    uint32_t forward(return_data *curr)
    uint32_t forward(current *curr)
    {
    uint32_t _c1;
    uint32_t _c2;
    _c1 = 1;
    _c2 = 1;
    digitalWrite(M1A,HIGH); //right wheel channel 1
    digitalWrite(M1B,HIGH); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    digitalWrite(EN1B,HIGH); //right enable channel 2
    digitalWrite(M2A,LOW); //left wheel channel 1
    digitalWrite(M2B,LOW); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    curr -> analogRead(C1) = _c1;
    curr -> analogRead(C2) = _c2; // check current for both wheels
    return (0);
    }
    uint32_t _c1 = 1;
    uint32_t _c2 = 1;
    digitalWrite(M1A,HIGH); //right wheel channel 1
    digitalWrite(M1B,HIGH); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    digitalWrite(EN1B,HIGH); //right enable channel 2
    digitalWrite(M2A,LOW); //left wheel channel 1
    digitalWrite(M2B,LOW); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    curr -> analogRead(C1) = _c1;
    curr -> analogRead(C2) = _c2; // check current for both wheels
    return (0);
    }

  11. treeherder revised this gist Mar 3, 2014. 1 changed file with 4 additions and 5 deletions.
    9 changes: 4 additions & 5 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,4 @@

    typedef struct return_data curr;
    typedef struct return_data current;

    struct return_data
    {
    @@ -23,7 +22,7 @@ digitalWrite(M2A,LOW); //left wheel channel 1
    digitalWrite(M2B,LOW); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    analogRead(C1) -> _c1;
    analogRead(C2) -> _c2; // check current for both wheels
    curr -> analogRead(C1) = _c1;
    curr -> analogRead(C2) = _c2; // check current for both wheels
    return (0);
    }
    }
  12. treeherder revised this gist Mar 3, 2014. 1 changed file with 26 additions and 84 deletions.
    110 changes: 26 additions & 84 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -1,87 +1,29 @@
    #define EN1A 9
    #define M1A 8
    #define EN1B 3
    #define M1B 2
    #define EN2A 4
    #define M2A 5
    #define EN2B 7
    #define M2B 6

    #define C1 A0
    #define C2 A1
    typedef struct return_data curr;

    void setup()
    {

    pinMode(EN1A,OUTPUT);
    pinMode( M1A,OUTPUT);
    pinMode(EN1B,OUTPUT);
    pinMode( M1B,OUTPUT);
    pinMode(EN2A,OUTPUT);
    pinMode( M2A,OUTPUT);
    pinMode(EN2B,OUTPUT);
    pinMode( M2B,OUTPUT);
    struct return_data
    {
    uint32_t c_1; //current one
    uint32_t c_2; //current two
    //quadrature encoder data can come in here
    //accelerometer data?
    };

    Serial.begin(9600);

    //moving the wheel A
    Serial.println("Moving Wheel A, M1A H, M1B L");
    digitalWrite(M1A,HIGH);
    digitalWrite(M1B,HIGH);
    digitalWrite(EN1A,HIGH);
    digitalWrite(EN1B,HIGH);
    Serial.println(analogRead(C1));
    delay(500);

    digitalWrite(EN1A,LOW);
    digitalWrite(EN1B,LOW);
    delay(500);

    Serial.println("Moving Wheel A, M1A L, M1B H");
    digitalWrite(M1A,HIGH);
    digitalWrite(M1B,HIGH);
    digitalWrite(EN1A,HIGH);
    digitalWrite(EN1B,HIGH);
    Serial.println(analogRead(C1));
    delay(500);

    digitalWrite(EN1A,LOW);
    digitalWrite(EN1B,LOW);
    digitalWrite(M1A,LOW);
    digitalWrite(M1B,LOW);
    delay(500);
    //finish test for wheel A

    //moving the wheel B
    Serial.println("Moving Wheel B, M2A H, M2B L");
    digitalWrite(M2A,HIGH);
    digitalWrite(M2B,HIGH);
    digitalWrite(EN2A,HIGH);
    digitalWrite(EN2B,HIGH);
    Serial.println(analogRead(C2));
    delay(500);

    digitalWrite(EN2A,LOW);
    digitalWrite(EN2B,LOW);
    delay(500);

    Serial.println("Moving Wheel A, M2A L, M2B H");
    digitalWrite(M2A,LOW);
    digitalWrite(M2B,LOW);
    digitalWrite(EN2A,HIGH);
    digitalWrite(EN2B,HIGH);
    Serial.println(analogRead(C2));
    delay(500);

    digitalWrite(EN2A,LOW);
    digitalWrite(EN2B,LOW);
    digitalWrite(M2A,LOW);
    digitalWrite(M2B,LOW);
    delay(500);
    //finish test for wheel B

    }
    void loop()
    {
    delay(1000);
    }
    uint32_t forward(return_data *curr)
    {
    uint32_t _c1;
    uint32_t _c2;
    _c1 = 1;
    _c2 = 1;
    digitalWrite(M1A,HIGH); //right wheel channel 1
    digitalWrite(M1B,HIGH); //right wheel channel 2
    digitalWrite(EN1A,HIGH); //right enable channel 1
    digitalWrite(EN1B,HIGH); //right enable channel 2
    digitalWrite(M2A,LOW); //left wheel channel 1
    digitalWrite(M2B,LOW); //left wheel channel 2
    digitalWrite(EN2A,HIGH); //left enable channel 1
    digitalWrite(EN2B,HIGH); //left enable channel 2
    analogRead(C1) -> _c1;
    analogRead(C2) -> _c2; // check current for both wheels
    return (0);
    }
  13. treeherder created this gist Mar 3, 2014.
    87 changes: 87 additions & 0 deletions l298.ino
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,87 @@
    #define EN1A 9
    #define M1A 8
    #define EN1B 3
    #define M1B 2
    #define EN2A 4
    #define M2A 5
    #define EN2B 7
    #define M2B 6

    #define C1 A0
    #define C2 A1

    void setup()
    {

    pinMode(EN1A,OUTPUT);
    pinMode( M1A,OUTPUT);
    pinMode(EN1B,OUTPUT);
    pinMode( M1B,OUTPUT);
    pinMode(EN2A,OUTPUT);
    pinMode( M2A,OUTPUT);
    pinMode(EN2B,OUTPUT);
    pinMode( M2B,OUTPUT);

    Serial.begin(9600);

    //moving the wheel A
    Serial.println("Moving Wheel A, M1A H, M1B L");
    digitalWrite(M1A,HIGH);
    digitalWrite(M1B,HIGH);
    digitalWrite(EN1A,HIGH);
    digitalWrite(EN1B,HIGH);
    Serial.println(analogRead(C1));
    delay(500);

    digitalWrite(EN1A,LOW);
    digitalWrite(EN1B,LOW);
    delay(500);

    Serial.println("Moving Wheel A, M1A L, M1B H");
    digitalWrite(M1A,HIGH);
    digitalWrite(M1B,HIGH);
    digitalWrite(EN1A,HIGH);
    digitalWrite(EN1B,HIGH);
    Serial.println(analogRead(C1));
    delay(500);

    digitalWrite(EN1A,LOW);
    digitalWrite(EN1B,LOW);
    digitalWrite(M1A,LOW);
    digitalWrite(M1B,LOW);
    delay(500);
    //finish test for wheel A

    //moving the wheel B
    Serial.println("Moving Wheel B, M2A H, M2B L");
    digitalWrite(M2A,HIGH);
    digitalWrite(M2B,HIGH);
    digitalWrite(EN2A,HIGH);
    digitalWrite(EN2B,HIGH);
    Serial.println(analogRead(C2));
    delay(500);

    digitalWrite(EN2A,LOW);
    digitalWrite(EN2B,LOW);
    delay(500);

    Serial.println("Moving Wheel A, M2A L, M2B H");
    digitalWrite(M2A,LOW);
    digitalWrite(M2B,LOW);
    digitalWrite(EN2A,HIGH);
    digitalWrite(EN2B,HIGH);
    Serial.println(analogRead(C2));
    delay(500);

    digitalWrite(EN2A,LOW);
    digitalWrite(EN2B,LOW);
    digitalWrite(M2A,LOW);
    digitalWrite(M2B,LOW);
    delay(500);
    //finish test for wheel B

    }
    void loop()
    {
    delay(1000);
    }