Nachdem die Verbindung mit dem DAC und dem Panda II so gut funktionierte (siehe: MCP4725 I2C DAC on Panda II), wollte ich nun mal sehen wie es sich mit einem .net Gadgeteer verhält. In den Foren liest man immer sehr viel über Probleme mit dem FEZ Hydra Board und I2C, was Open-Source ist und nicht die GHI’s Premium Library verwendet. Doch konnte ich bei meinem ersten Test noch keine Probleme feststellen. Wie es sich mit einer SigmaDSP verhält werde ich in den nächsten Tagen testen.

Aber zur DAC mit der Hydra, ich habe einen Extender am Socket 5, Pin 8 ist der SDA und Pin 9 der SCL. Eine LED habe ich an dem Analog Out der DAC angeschlossen (Wie beim Panda II).

Zum Vergleich: Panda II und MCP4725

Extender und MCP4725

Extender und MCP4725

Extender, DAC und LED’s

Über dem „void ProgramStarted()“ habe ich mir einen Globalen I2C-Bus deklariert:

public static Gadgeteer.Interfaces.I2CBus i2cbus;

Als nächstes einen Button sowie einen Buttonevent:

// I2C Button Event
static void btnI2c_TapEvent(object sender)
{
GHIElectronics.NETMF.Glide.UI.Button test = sender as GHIElectronics.NETMF.Glide.UI.Button;
test.Text = "KLicked";

//update Gfx
test.Invalidate();

// I2C
GT.Socket socket = GT.Socket.GetSocket(5, true, null, null);
i2cbus = new GT.Interfaces.I2CBus(socket, (ushort)(0x60), 100, null);

// Value
int Val = 3100;

// Byte
byte[] writeByte = new byte[3];
writeByte[0] = 0x40;                    // c2,c1,c0 = 010 xx Pd1 Pd0 x
writeByte[1] = (byte)(Val >> 4);
writeByte[2] = (byte)(Val << 4); writeDAC(Val);
}

Dabei ruft der Buttonevent die Methode „writeDAC(Val)“ auf. Diese sieht wie folgt aus:

 public static void writeDAC(int Val) { Microsoft.SPOT.Hardware.I2CDevice.I2CTransaction[] xActions = new Microsoft.SPOT.Hardware.I2CDevice.I2CTransaction[1]; byte[] writeByte = new byte[3]; writeByte[0] = 0x40;                    // c2,c1,c0 = 010 xx Pd1 Pd0 x writeByte[1] = (byte)(Val >> 4);
writeByte[2] = (byte)(Val << 4);

xActions[0] = Microsoft.SPOT.Hardware.I2CDevice.CreateWriteTransaction(writeByte);
i2cbus.Execute(xActions,1);
}

Im Unterschied zum Panda II habe ich hier keinen Slider verwendet, doch sollte die LED leuchten. Wird der Val z.B. auf 3700 geändert, so wird die LED heller und bei etwa 2900 geht sie aus. Interessant ist vielleicht auch noch, ich habe den I2C-Scanner hier nicht verwendet.

DAC Value: 2900

DAC Value: 2900

DAC Value: 3700

DAC Value: 3700