Go Down

Topic: arduino mkr 1000 et grove mini I2C Motor Drive (Read 87 times) previous topic - next topic

hppp

Bonjour à tous,

j'essaye de faire fonctionner le shield grove mini I2C Motor Drive avec mon arduino arduino mkr 1000 mais sans succès.

La librairie SparkFunMiniMoto.h n'étant pas compatible avec les arduino MKR, j'essaye d'utiliser la librairie Wire.h et m'inspirer de celle de SparkFunMiniMoto.h

voici les datasheet des composants: https://cdn.sparkfun.com/datasheets/BreakoutBoards/drv8830.pdf

Rien ne se passe, quand j'essaye de communiquer avec la carte. SI certains ont déjà travailler sur ce genre de carte je suis prenneur.

mon code utilisé :


Code: [Select]
#include <Wire.h>

#define MOTORA_WRITE 0xCA
#define MOTORA_READ 0xCB

#define CONTROL_addr 0x00
#define FAULT_addr 0x01

int timeDelay = 2000;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
Serial.println("Start Motor");
drive(10);
delay(3000);
Serial.println("Stop Motor");
stop();
delay(3000);
}

void drive(int speed)
{
  byte regValue = 0x80;             // Before we do anything, we'll want to
                                    //  clear the fault status. To do that
                                    //  write 0x80 to register 0x01 on the
                                    //  DRV8830.
  Wire.beginTransmission(MOTORA_WRITE);
  Wire.write(FAULT_addr);
  Wire.write(0x80);
  Wire.endTransmission();
 
  regValue = (byte)abs(speed);      // Find the byte-ish abs value of the input
  if (regValue > 63) regValue = 63; // Cap the value at 63.
  regValue = regValue<<2;           // Left shift to make room for bits 1:0
  if (speed < 0) regValue |= 0x01;  // Set bits 1:0 based on sign of input.
  else           regValue |= 0x02;
 
  Wire.beginTransmission(MOTORA_WRITE);
  Wire.write(CONTROL_addr);
  Wire.write(regValue);
  Wire.endTransmission(); 
}

void stop()
{
  byte regValue = 0;                // See above for bit 1:0 explanation.
 
  Wire.beginTransmission(MOTORA_WRITE);
  Wire.write(CONTROL_addr);
  Wire.write(regValue);
  Wire.endTransmission();
}

Go Up