/// <summary> /// Constructor for a single Expand click. /// </summary> /// <param name="socknum">mikroBUS socket number.</param> /// <param name="remdev">Remote I/O server device object.</param> public Board(int socknum, IO.Remote.Device remdev = null) { // Create Remote I/O server device object, if one wasn't supplied if (remdev == null) { remdev = new IO.Remote.Device(); } // Create a mikroBUS socket object IO.Remote.mikroBUS.Socket S = new IO.Remote.mikroBUS.Socket(socknum); // Configure hardware reset GPIO pin myrst = remdev.GPIO_Create(S.RST, IO.Interfaces.GPIO.Direction.Output, true); // Issue hardware reset Reset(); // Create MCP23S17 device object mydev = new IO.Devices.MCP23S17.Device(remdev.SPI_Create(S.SPIDev, IO.Devices.MCP23S17.Device.SPI_Mode, IO.Devices.MCP23S17.Device.SPI_WordSize, IO.Devices.MCP23S17.Device.SPI_Frequency)); }
/// <summary> /// Constructor for a single PWM click. /// </summary> /// <param name="socknum">mikroBUS socket number.</param> /// <param name="freq">PWM pulse frequency in Hz.</param> /// <param name="addr">I<sup>2</sup>C slave address.</param> /// <param name="remdev">Remote I/O device object.</param> public Board(int socknum, int freq, int addr = DefaultAddress, IO.Remote.Device remdev = null) { // Create Remote I/O server device object, if one wasn't supplied if (remdev == null) { remdev = new IO.Remote.Device(); } // Create a mikroBUS socket object IO.Remote.mikroBUS.Socket S = new IO.Remote.mikroBUS.Socket(socknum); IO.Interfaces.I2C.Bus bus; if (IO.Remote.mikroBUS.Shield.I2CBus is null) { bus = remdev.I2C_Create(S.I2CBus); } else { bus = IO.Remote.mikroBUS.Shield.I2CBus; } mydev = new IO.Devices.PCA9685.Device(bus, addr, freq); }
static void Main(string[] args) { Console.WriteLine("\nmikroBUS Analog Input Test\n"); // Get mikroBUS socket number Console.Write("Socket number? "); var num = int.Parse(Console.ReadLine()); // Create objects var socket = new IO.Remote.mikroBUS.Socket(num); var remdev = new IO.Remote.Device(); IO.Interfaces.ADC.Sample AIN = remdev.ADC_Create(socket.AIN); Console.WriteLine("\nADC Resolution => " + AIN.resolution.ToString() + " bits\n"); // Display analog input samples for (;;) { Console.WriteLine("Sample => " + AIN.sample.ToString()); System.Threading.Thread.Sleep(1000); } }
/// <summary> /// Constructor for a single 7seg click. /// </summary> /// <param name="socket">mikroBUS socket number.</param> /// <param name="radix">Numerical base or radix. Allowed values are /// <c>Decimal</c> and <c>Hexadecimal</c>.</param> /// <param name="blanking">Zero blanking. Allowed values are /// <c>None</c>, <c>Leading</c>, and <c>Full</c>.</param> /// <param name="pwmfreq">PWM frequency. Set to zero to use GPIO /// instead of PWM.</param> /// <param name="remdev">Remote I/O server device object.</param> public Board(int socket, Base radix = Base.Decimal, ZeroBlanking blanking = ZeroBlanking.None, int pwmfreq = 100, IO.Remote.Device remdev = null) { // Create Remote I/O server device object, if one wasn't supplied if (remdev == null) { remdev = new IO.Remote.Device(); } // Create a mikroBUS socket object IO.Remote.mikroBUS.Socket S = new IO.Remote.mikroBUS.Socket(socket); // Configure hardware reset GPIO pin myRSTgpio = remdev.GPIO_Create(S.RST, IO.Interfaces.GPIO.Direction.Output, true); // Issue hardware reset Reset(); // Configure PWM pin -- Prefer PWM over GPIO, if possible, and // assume full brightness until otherwise changed. myPWMgpio = null; myPWMout = null; if ((pwmfreq > 0) && (S.PWMOut != IO.Remote.Device.Unavailable)) { myPWMout = remdev.PWM_Create(S.PWMOut, pwmfreq, 100.0); } else if (S.PWM != IO.Remote.Device.Unavailable) { myPWMgpio = remdev.GPIO_Create(S.PWM, IO.Interfaces.GPIO.Direction.Output, true); } // Configure 74HC595 shift register chain mychain = new SN74HC595.Device(remdev.SPI_Create(S.SPIDev, IO.Devices.SN74HC595.Device.SPI_Mode, 8, IO.Devices.SN74HC595.Device.SPI_MaxFreq), 2); myradix = radix; myblanking = blanking; Clear(); }
/// <summary> /// Constructor for a single ADAC click. /// </summary> /// <param name="socknum">mikroBUS socket number.</param> /// <param name="addr">I<sup>2</sup>C slave address.</param> /// <param name="remdev">Remote I/O server device object.</param> public Board(int socknum, int addr = DefaultAddress, IO.Remote.Device remdev = null) { // Create Remote I/O server device object, if one wasn't supplied if (remdev == null) { remdev = new IO.Remote.Device(); } // Create a mikroBUS socket object IO.Remote.mikroBUS.Socket S = new IO.Remote.mikroBUS.Socket(socknum); // Configure hardware reset GPIO pin myrst = remdev.GPIO_Create(S.RST, IO.Interfaces.GPIO.Direction.Output, true); // Issue hardware reset Reset(); // Configure I2C bus IO.Interfaces.I2C.Bus bus; if (IO.Remote.mikroBUS.Shield.I2CBus is null) { bus = remdev.I2C_Create(S.I2CBus); } else { bus = IO.Remote.mikroBUS.Shield.I2CBus; } // Configure AD5593R mydev = new IO.Devices.AD5593R.Device(bus, addr); // The ADAC click is wired for 0-5.0V on both ADC and DAC mydev.ADC_Reference = IO.Devices.AD5593R.ReferenceMode.Internalx2; mydev.DAC_Reference = IO.Devices.AD5593R.ReferenceMode.Internalx2; }
/// <summary> /// Constructor for a single Expand 2 click. /// </summary> /// <param name="socknum">mikroBUS socket number.</param> /// <param name="addr">I<sup>2</sup>C slave address.</param> /// <param name="remdev">Remote I/O server device object.</param> public Board(int socknum, int addr = DefaultAddress, IO.Remote.Device remdev = null) { // Create Remote I/O server device object, if one wasn't supplied if (remdev == null) { remdev = new IO.Remote.Device(); } // Create a mikroBUS socket object IO.Remote.mikroBUS.Socket S = new IO.Remote.mikroBUS.Socket(socknum); // Configure hardware reset GPIO pin myrst = remdev.GPIO_Create(S.RST, IO.Interfaces.GPIO.Direction.Output, true); // Issue hardware reset Reset(); // Configure I2C bus IO.Interfaces.I2C.Bus bus; if (IO.Remote.mikroBUS.Shield.I2CBus is null) { bus = remdev.I2C_Create(S.I2CBus); } else { bus = IO.Remote.mikroBUS.Shield.I2CBus; } // Configure the MCP23017 mydev = new IO.Devices.MCP23017.Device(bus, addr); }
static void Main(string[] args) { Console.WriteLine("\nmikroBUS PWM Output Test\n"); // Get mikroBUS socket number Console.Write("Socket number? "); var num = int.Parse(Console.ReadLine()); Console.Write("PWM pulse frequency? "); var freq = int.Parse(Console.ReadLine()); // Create objects var socket = new IO.Remote.mikroBUS.Socket(num); var remdev = new IO.Remote.Device(); IO.Interfaces.PWM.Output outp = remdev.PWM_Create(socket.PWMOut, freq); // Sweep PWM output pulse width for (;;) { for (double d = 0; d <= 100; d++) { outp.dutycycle = d; System.Threading.Thread.Sleep(20); } for (double d = 100; d >= 0; d--) { outp.dutycycle = d; System.Threading.Thread.Sleep(20); } } }