Arduino - Grove I2C Motor Driver (4 / 4 stap)

Stap 4: Code


De code om te worden geüpload is een schets van de test maakt het alleen maar de motor uitvoeren in één richting en dan na enige vertraging keert de richting.

Dit is slechts een schets van de test en moet u een specifieke taak, laat een reactie hieronder en ik zal graag schrijven van de code voor je.

 #include #define MotorSpeedSet 0x82#define PWMFrequenceSet 0x84 #define DirectionSet 0xaa #define MotorSetA 0xa1 #define MotorSetB 0xa5 #define Nothing 0x01 #define EnableStepper 0x1a #define UnenableStepper 0x1b #define Stepernu 0x1c #define I2CMotorDriverAdd 0x0f // Set the address of the I2CMotorDriver // set the steps you want, if 255, the stepper will rotate continuely; void SteperStepset(unsigned char stepnu) { Wire.beginTransmission(I2CMotorDriverAdd); // transmit to device I2CMotorDriverAdd Wire.write(Stepernu); // Send the stepernu command Wire.write(stepnu); // send the steps Wire.write(Nothing); // send nothing Wire.endTransmission(); // stop transmitting } /////////////////////////////////////////////////////////////////////////////// // Enanble the i2c motor driver to drive a 4-wire stepper. the i2c motor driver will //driver a 4-wire with 8 polarity . //Direction: stepper direction ; 1/0 //motor speed: defines the time interval the i2C motor driver change it output to drive the stepper //the actul interval time is : motorspeed * 4ms. that is , when motor speed is 10, the interval time //would be 40 ms ////////////////////////////////////////////////////////////////////////////////// void StepperMotorEnable(unsigned char Direction, unsigned char motorspeed) { Wire.beginTransmission(I2CMotorDriverAdd); // transmit to device I2CMotorDriverAdd Wire.write(EnableStepper); // set pwm header Wire.write(Direction); // send pwma Wire.write(motorspeed); // send pwmb Wire.endTransmission(); // stop transmitting } //function to uneanble i2C motor drive to drive the stepper. void StepperMotorUnenable() { Wire.beginTransmission(I2CMotorDriverAdd); // transmit to device I2CMotorDriverAdd Wire.write(UnenableStepper); // set unenable commmand Wire.write(Nothing); Wire.write(Nothing); Wire.endTransmission(); // stop transmitting } ////////////////////////////////////////////////////////////////////// //Function to set the 2 DC motor speed //motorSpeedA : the DC motor A speed; should be 0~100; //motorSpeedB: the DC motor B speed; should be 0~100;void MotorSpeedSetAB(unsigned char MotorSpeedA , unsigned char MotorSpeedB) { MotorSpeedA=map(MotorSpeedA,0,100,0,255); MotorSpeedB=map(MotorSpeedB,0,100,0,255); Wire.beginTransmission(I2CMotorDriverAdd); // transmit to device I2CMotorDriverAdd Wire.write(MotorSpeedSet); // set pwm header Wire.write(MotorSpeedA); // send pwma Wire.write(MotorSpeedB); // send pwmb Wire.endTransmission(); // stop transmitting } //set the prescale frequency of PWM, 0x03 default; void MotorPWMFrequenceSet(unsigned char Frequence) { Wire.beginTransmission(I2CMotorDriverAdd); // transmit to device I2CMotorDriverAdd Wire.write(PWMFrequenceSet); // set frequence header Wire.write(Frequence); // send frequence Wire.write(Nothing); // need to send this byte as the third byte(no meaning) Wire.endTransmission(); // stop transmitting } //set the direction of DC motor. void MotorDirectionSet(unsigned char Direction) { // Adjust the direction of the motors 0b0000 I4 I3 I2 I1 Wire.beginTransmission(I2CMotorDriverAdd); // transmit to device I2CMotorDriverAdd Wire.write(DirectionSet); // Direction control header Wire.write(Direction); // send direction control information Wire.write(Nothing); // need to send this byte as the third byte(no meaning) Wire.endTransmission(); // stop transmitting }void MotorDriectionAndSpeedSet(unsigned char Direction,unsigned char MotorSpeedA,unsigned char MotorSpeedB) { //you can adjust the driection and speed together MotorDirectionSet(Direction); MotorSpeedSetAB(MotorSpeedA,MotorSpeedB); } void stepperrun() { Serial.println("sent command to + direction, very fast"); SteperStepset(255); StepperMotorEnable(1, 1);// ennable the i2c motor driver a stepper. delay(5000); Serial.println("sent command to - direction, slow"); SteperStepset(255); StepperMotorEnable(0, 20); delay(5000); Serial.println("sent command to - direction, fast"); StepperMotorEnable(0, 2);// ennable the i2c motor driver a stepper. delay(5000); Serial.println("sent command to + direction,100 steps, fast"); SteperStepset(100); StepperMotorEnable(1,5); delay(3000); Serial.println("sent command to shut down the stepper"); StepperMotorUnenable(); delay(1000); Serial.println("sent command to - direction, slow, and 10 steps then stop"); SteperStepset(10); StepperMotorEnable(0,40); delay(5000); Serial.println("sent command to shut down the stepper"); StepperMotorUnenable(); delay(5000); } void setup() { Wire.begin(); // join i2c bus (address optional for master) delayMicroseconds(10000); Serial.begin(9600); Serial.println("setup begin"); stepperrun(); }void loop() { while(1) { MotorSpeedSetAB(100,100); delay(10); //this delay needed MotorDirectionSet(0b0110); //0b1010 Rotating in the positive direction delay(10000); MotorDirectionSet(0b1001); //0b0101 Rotating in the opposite direction delay(500); } } 

Gerelateerde Artikelen

Arduino CDROM BLDC Motor Driver, verbeterde prestaties

Arduino CDROM BLDC Motor Driver, verbeterde prestaties

In de laatste BLDC-project "Run-A-CDROM-Brushless-Motor-With-Arduino" Ik heb een L293 gebruikt om een borstelloze DC-motor rijden. Er waren twee belangrijke problemen in dat project als volgt:-Lage toerental en het koppel van de motor als gevolg
$1 motor Driver Circuit voor Arduino

$1 motor Driver Circuit voor Arduino

Het verhaal van deze motor shield is dat ik wilde maken van een robot voor mijn multifunctionele brainwave gecontroleerd systeem en heb ik besloten om dit met u delen. Het is een heel eenvoudige schakeling, ik gebruikte de L293D IC thats een dubbele
Het gebruik van de L298 Motor Driver Module - Arduino tutorial Arduino Tutorial

Het gebruik van de L298 Motor Driver Module - Arduino tutorial Arduino Tutorial

Dit dubbele bidirectionele motor stuurprogramma is gebaseerd op de zeer populaire L298 Dual H-Bridge Motor Driver IC. Deze module kan je gemakkelijk en onafhankelijk controle twee motoren van tot 2A in beide richtingen.Het is ideaal voor robotic toep
Eenvoudige, goedkope Motor Driver Board voor Arduino

Eenvoudige, goedkope Motor Driver Board voor Arduino

Vele projecten met Arduino moeten vaak motoren, of het nu gaat om een auto of een stofzuiger of iets anders. Maar het probleem is dat u kan niet rechtstreeks met een motor Arduino verbinden zoals de uitgangsspanning zeer laag is. Dus, kunt u een H-br
Het gebruik van de L293D Motor Driver - Arduino tutorial Arduino Tutorial

Het gebruik van de L293D Motor Driver - Arduino tutorial Arduino Tutorial

De L293D is een 16-pins Motor Driver IC die een set van twee DC-motoren tegelijk in een willekeurige richting kunt bepalen. De L293D is ontworpen om bidirectionele station stromingen van maximaal 600 mA (per kanaal) op spanningen van 4.5 V tot en met
Arduino Uno en Visuino: controle van slimme auto Robot met Joystick en L298N Motor Driver

Arduino Uno en Visuino: controle van slimme auto Robot met Joystick en L298N Motor Driver

Dat Smart auto ingesteld wanneer gecombineerd met L298N Motor Driver Modules, bieden een van de gemakkelijkste manieren om robot auto's maken. De L298N Motor Driver Module is makkelijk te controleren met Arduino, en met behulp van Visuino kunt u uw a
Snelheid gecontroleerde RC auto gebruikend (4 CH Motor-Driver Controller + Arduino + Bluetooth)

Snelheid gecontroleerde RC auto gebruikend (4 CH Motor-Driver Controller + Arduino + Bluetooth)

Hallo, dit is mijn eerste instructable hier, ik hoop dat je bevalt en voel je vrij om te vragen over iets niet duidelijk in.Ik begon in de eerste plaats dit project nadat ik wilde bepalen 4 motoren die relatief hoog vermogen (12Volts, 4 ampère) verei
GOduino - de Arduino Uno + Motor Driver kloon

GOduino - de Arduino Uno + Motor Driver kloon

UPDATES4/4/2012: de versie van de pcb met variabele motorsnelheid, GOduino II, is op mijn blog http://techbitar.blogspot.com/2012/04/goduino-ii-motor-driver-arduino-uno.html en hier29/3/2012: correcties aan motor belasting berekeningen sectie.14/3/20
PWMSwizzling een Edison Arduino Breakout om te werken met Grove Seeed Motor schilden

PWMSwizzling een Edison Arduino Breakout om te werken met Grove Seeed Motor schilden

Dit instructable verklaart de noodzakelijke stappen voor het configureren van de hardware en software van een Intel Edison Arduino Breakout board, zodat het met een Grove Seeed Motor Shield communiceren zal. Voorbeelden van schetsen voor het beheerse
Opzetten van een Stepper Motor Driver

Opzetten van een Stepper Motor Driver

Als u stappenmotoren in één of ander soort manier gebruiken voor een project wilt, zal deze handleiding dekken hoe je kunt beginnen met de SlushEngine. Tegen het einde van deze handleiding, zal u zitten kundig voor 4 stappenmotoren tegelijk verplaats
BLDC Motor Control met Arduino, geborgen HD-motor en Hall sensoren

BLDC Motor Control met Arduino, geborgen HD-motor en Hall sensoren

er is veel belangstelling deze dagen onder hobbyisten bij het beheersen van Borstelloze DC (BLDC) motoren, die hebben betere prestaties en betere energie-efficiëntie overtraditionele gelijkstroommotoren, zijn maar moeilijker te gebruiken. Er bestaan
L298N Motor Driver Controller boord

L298N Motor Driver Controller boord

Een gids over het gebruik van de L298N Motor Driver Controller boord, dit is een dubbele motor controller boord waarmee u kunt bepalen van de richting en snelheid van twee DC-motoren of een stappenmotor.De L298N Motor Driver Controller boord is een z
Arduino + K'nex Motors

Arduino + K'nex Motors

Ik heb geïnteresseerd geweest in robotica voor een tijdje nu, maar de behoefte aan goede onderdelen, ontwerpen, en materialen hebben eenvoudige experimenten te duur naar mijn smaak. Dat is waar dit project komt. Het biedt een makkelijke manier om haa
Motor Driver met behulp van de 555 Timer IC

Motor Driver met behulp van de 555 Timer IC

Ik woon in een klein stadje, 60 mijl afstand van de hoofdstad van de provincie. Het is onmogelijk voor mij om een motor bestuurder om te beginnen met een robot of RC project. Zelfs als ik wilde om te bouwen van mijn eigen motor chauffeur, is het moei