/// <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> public Board(int socknum, int addr = DefaultAddress) { // Create a mikroBUS socket object IO.Objects.libsimpleio.mikroBUS.Socket S = new IO.Objects.libsimpleio.mikroBUS.Socket(socknum); // Configure hardware reset GPIO pin myrst = new IO.Objects.libsimpleio.GPIO.Pin(S.RST, IO.Interfaces.GPIO.Direction.Output, true); // Issue hardware reset Reset(); // Configure I2C bus IO.Interfaces.I2C.Bus bus; if (IO.Objects.libsimpleio.mikroBUS.Shield.I2CBus is null) { bus = new IO.Objects.libsimpleio.I2C.Bus(S.I2CBus); } else { bus = IO.Objects.libsimpleio.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 S = new IO.Objects.libsimpleio.mikroBUS.Socket(num); var outp = new IO.Objects.libsimpleio.PWM.Output(S.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); } } }
/// <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> public Board(int socknum, int freq, int addr = DefaultAddress) { IO.Objects.libsimpleio.mikroBUS.Socket S = new IO.Objects.libsimpleio.mikroBUS.Socket(socknum); IO.Interfaces.I2C.Bus bus; if (IO.Objects.libsimpleio.mikroBUS.Shield.I2CBus is null) { bus = new IO.Objects.libsimpleio.I2C.Bus(S.I2CBus); } else { bus = IO.Objects.libsimpleio.mikroBUS.Shield.I2CBus; } mydev = new IO.Devices.PCA9685.Device(bus, addr, freq); }
/// <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> public Board(int socket, Base radix = Base.Decimal, ZeroBlanking blanking = ZeroBlanking.None, int pwmfreq = 100) { IO.Objects.libsimpleio.mikroBUS.Socket S = new IO.Objects.libsimpleio.mikroBUS.Socket(socket); // Configure RST pin myRSTgpio = new IO.Objects.libsimpleio.GPIO.Pin(S.RST, IO.Interfaces.GPIO.Direction.Output, true); // 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.available)) { myPWMout = new IO.Objects.libsimpleio.PWM.Output(S.PWMOut, pwmfreq, 100.0); } else if (S.PWM.available) { myPWMgpio = new IO.Objects.libsimpleio.GPIO.Pin(S.PWM, IO.Interfaces.GPIO.Direction.Output, true); } // Configure 74HC595 shift register chain mychain = new SN74HC595.Device(new IO.Objects.libsimpleio.SPI.Device(S.SPIDev, IO.Devices.SN74HC595.Device.SPI_Mode, 8, IO.Devices.SN74HC595.Device.SPI_MaxFreq, S.CS.available ? new IO.Objects.libsimpleio.GPIO.Pin(S.CS, IO.Interfaces.GPIO.Direction.Output, true) : null), 2); mybase = radix; myblanking = blanking; Clear(); }
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 S = new IO.Objects.libsimpleio.mikroBUS.Socket(num); var AIN = new IO.Objects.libsimpleio.ADC.Sample(S.AIN, 32); // Display analog input samples for (;;) { Console.WriteLine("Sample => " + AIN.sample.ToString()); System.Threading.Thread.Sleep(1000); } }
/// <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> public Board(int socknum, int addr = DefaultAddress) { IO.Objects.libsimpleio.mikroBUS.Socket S = new IO.Objects.libsimpleio.mikroBUS.Socket(socknum); // Configure hardware reset GPIO pin myrst = new IO.Objects.libsimpleio.GPIO.Pin(S.RST, IO.Interfaces.GPIO.Direction.Output, true); // Issue hardware reset Reset(); // Configure I2C bus IO.Interfaces.I2C.Bus bus; if (IO.Objects.libsimpleio.mikroBUS.Shield.I2CBus is null) { bus = new IO.Objects.libsimpleio.I2C.Bus(S.I2CBus); } else { bus = IO.Objects.libsimpleio.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> public Board(int socknum) { // Create a mikroBUS socket object IO.Objects.libsimpleio.mikroBUS.Socket S = new IO.Objects.libsimpleio.mikroBUS.Socket(socknum); // Configure hardware reset GPIO pin myrst = new IO.Objects.libsimpleio.GPIO.Pin(S.RST, IO.Interfaces.GPIO.Direction.Output, true); // Issue hardware reset Reset(); // Create MCP23S17 device object mydev = new IO.Devices.MCP23S17.Device( new IO.Objects.libsimpleio.SPI.Device(S.SPIDev, IO.Devices.MCP23S17.Device.SPI_Mode, IO.Devices.MCP23S17.Device.SPI_WordSize, IO.Devices.MCP23S17.Device.SPI_Frequency)); }