Exemple #1
0
        /// <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));
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
        /// <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();
        }
Exemple #5
0
        /// <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;
        }
Exemple #6
0
        /// <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);
        }
Exemple #7
0
        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);
                }
            }
        }