first commit
This commit is contained in:
commit
a5a0434432
1126 changed files with 439481 additions and 0 deletions
61
Software/CSharp/GrovePi/I2CDevices/MiniMotorDriver.cs
Normal file
61
Software/CSharp/GrovePi/I2CDevices/MiniMotorDriver.cs
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
using System;
|
||||
using Windows.Devices.I2c;
|
||||
|
||||
namespace GrovePi.I2CDevices
|
||||
{
|
||||
public interface IMiniMotorDriver
|
||||
{
|
||||
IMiniMotorDriver drive1(int Speed);
|
||||
IMiniMotorDriver drive2(int Speed);
|
||||
//IMiniMotorDriver getFault();
|
||||
}
|
||||
|
||||
internal sealed class MiniMotorDriver : IMiniMotorDriver
|
||||
{
|
||||
internal MiniMotorDriver(I2cDevice Motor1Device, I2cDevice Motor2Device)
|
||||
{
|
||||
if (Motor1Device == null) throw new ArgumentNullException(nameof(Motor1Device));
|
||||
motor1DirectAccess = Motor1Device;
|
||||
|
||||
if (Motor2Device == null) throw new ArgumentNullException(nameof(Motor2Device));
|
||||
motor2DirectAccess = Motor2Device;
|
||||
}
|
||||
|
||||
~MiniMotorDriver()
|
||||
{
|
||||
this.drive1(0);
|
||||
this.drive2(0);
|
||||
}
|
||||
|
||||
internal I2cDevice motor1DirectAccess { get; }
|
||||
internal I2cDevice motor2DirectAccess { get; }
|
||||
|
||||
public IMiniMotorDriver drive1(int Speed)
|
||||
{
|
||||
byte regValue = 0x80;
|
||||
motor1DirectAccess.Write(new byte[] { 0x1, regValue });
|
||||
regValue = (byte)Math.Abs(Speed);
|
||||
if (regValue > 63) regValue = 63;
|
||||
regValue = (byte)(regValue * 4);
|
||||
if (Speed < 0) regValue |= 0x01;
|
||||
else regValue |= 0x02;
|
||||
motor1DirectAccess.Write(new byte[] { 0x00, regValue});
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
public IMiniMotorDriver drive2(int Speed)
|
||||
{
|
||||
byte regValue = 0x80;
|
||||
motor2DirectAccess.Write(new byte[] { 0x1, regValue });
|
||||
regValue = (byte)Math.Abs(Speed);
|
||||
if (regValue > 63) regValue = 63;
|
||||
regValue = (byte)(regValue * 4);
|
||||
if (Speed < 0) regValue |= 0x01;
|
||||
else regValue |= 0x02;
|
||||
motor2DirectAccess.Write(new byte[] { 0x00, regValue });
|
||||
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue