Komma igång med LinkIt One - DC motorer (4 / 4 steg)
Steg 4: kod
Efter att du har fått Maskinvaruinstallation nu är det dags för koden, detta en Provningsmetod som gör motorerna roterar åt ett håll i 10 sekunder och sedan vänder riktning. I nästa tutorial kommer jag visa dig hur du utformar en robot med samma logik.
Koden kan hittas nedan du kan kopiera och klistra in koden i Arduino IDE och ladda upp den till styrelsen.
#include
#define MotorSpeedSet 0x82
#define PWMFrequenceSet 0x84
#define DirectionSet 0xaa
#define MotorSetA 0xa1
#define MotorSetB 0xa5
#define ingenting 0x01
#define EnableStepper 0x1a
#define UnenableStepper 0x1b
#define Stepernu 0x1c
#define I2CMotorDriverAdd 0x0f / / ange adressen till I2CMotorDriver
Ange de steg du vill, om 255, nummerlistan roterar kontinuerligt;
void SteperStepset (unsigned char stepnu)
{
Wire.beginTransmission(I2CMotorDriverAdd); överföra till enhet I2CMotorDriverAdd
Wire.write(Stepernu); Skicka kommandot stepernu
Wire.write(stepnu); Skicka stegen
Wire.write(Nothing); Skicka inget
Wire.endTransmission(); stoppa överföring
}
///////////////////////////////////////////////////////////////////////////////
Enanble i2c motor föraren att köra en 4-tråd stepper. i2c motor föraren kommer att
driver en 4-tråd med 8 polaritet.
Riktning: stepper riktning; 1/0
motor varvtal: definierar tiden intervall i2C motor driver förändring det utgång för att driva stepper
actul intervall är: motorspeed * 4ms. När motor hastighet är 10, intervalltid
skulle vara 40 ms
//////////////////////////////////////////////////////////////////////////////////
void StepperMotorEnable (unsigned char riktning, unsigned char motorspeed)
{
Wire.beginTransmission(I2CMotorDriverAdd); överföra till enhet I2CMotorDriverAdd
Wire.write(EnableStepper); Ställ in pwm header
Wire.write(Direction); Skicka pwma
Wire.write(MotorSpeed); Skicka pwmb
Wire.endTransmission(); stoppa överföring
}
funktion för att uneanble i2C motor drive att köra genom.
void StepperMotorUnenable()
{
Wire.beginTransmission(I2CMotorDriverAdd); överföra till enhet I2CMotorDriverAdd
Wire.write(UnenableStepper); Set unenable kommando
Wire.write(Nothing);
Wire.write(Nothing);
Wire.endTransmission(); stoppa överföring
}
//////////////////////////////////////////////////////////////////////
Funktion för att ange 2 DC motor
motorSpeedA: DC motor en hastighet; ska vara 0 ~ 100;
motorSpeedB: DC motor B hastighet; ska vara 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); överföra till enhet I2CMotorDriverAdd
Wire.write(MotorSpeedSet); Ställ in pwm header
Wire.write(MotorSpeedA); Skicka pwma
Wire.write(MotorSpeedB); Skicka pwmb
Wire.endTransmission(); stoppa överföring
}
ställa in prescale frekvens för PWM, 0x03 standard.
void MotorPWMFrequenceSet (unsigned char frekvens) {
Wire.beginTransmission(I2CMotorDriverAdd); överföra till enhet I2CMotorDriverAdd
Wire.write(PWMFrequenceSet); Ange frekvens header
Wire.write(frequence); Skicka frekvens
Wire.write(Nothing); måste skicka detta byte som den tredje byten (inget menande)
Wire.endTransmission(); stoppa överföring
}
Ange att textorienteringen DC-motor.
void MotorDirectionSet (unsigned char riktning) {/ / justera riktningen av motorerna 0b0000 I4 I3 I2 I1
Wire.beginTransmission(I2CMotorDriverAdd); överföra till enhet I2CMotorDriverAdd
Wire.write(DirectionSet); Riktning control-huvudet
Wire.write(Direction); Skicka riktning kontrollinformation
Wire.write(Nothing); måste skicka detta byte som den tredje byten (inget menande)
Wire.endTransmission(); stoppa överföring
}
void MotorDriectionAndSpeedSet (unsigned char riktning, unsigned char MotorSpeedA, unsigned char MotorSpeedB) {//you kan justera driection och snabba tillsammans
MotorDirectionSet(Direction);
MotorSpeedSetAB(MotorSpeedA,MotorSpeedB);
}
void setup() {
Wire.BEGIN(); gå med i2c bussen (adress valfritt för master)
delayMicroseconds(10000);
Serial.BEGIN(9600);
Serial.println ("setup börja");
}
void loop() {
Serial.println ("skickats DC hastighet 100");
MotorSpeedSetAB (100.100); //defines hastigheten på motor 1 och motor 2.
Delay(10); denna försening behövs
MotorDirectionSet(0b1010); "0b1010" definierar produktionen polariteten, "10" betyder M + är "positiva" medan M - är "negtive"
göra säker M + M - är olika polatity när man kör DC-motorer.
Delay(10000);
MotorDirectionSet(0b0101); 0b0101 roterande i motsatt riktning
Delay(10000);
}