Example #1
0
        /// <summary>
        /// Initialize a MPR121 controller.
        /// </summary>
        /// <param name="device">The i2c device.</param>
        /// <param name="periodRefresh">The period in milliseconds of refresing the channel statuses.</param>
        /// <param name="configuration">The controller configuration.</param>
        public Mpr121(I2cDevice device, int periodRefresh = -1, Mpr121Configuration configuration = null)
        {
            configuration = configuration ?? GetDefaultConfiguration();
            _device       = device;
            _timer        = new Timer(RefreshChannelStatuses, this, Timeout.Infinite, Timeout.Infinite);

            _statuses = new Dictionary <Channels, bool>();
            foreach (Channels channel in Enum.GetValues(typeof(Channels)))
            {
                _statuses.Add(channel, false);
            }

            InitializeController(configuration);

            PeriodRefresh = periodRefresh;
        }
Example #2
0
 private void InitializeController(Mpr121Configuration configuration)
 {
     SetRegister(Registers.MHDR, configuration.MaxHalfDeltaRising);
     SetRegister(Registers.NHDR, configuration.NoiseHalfDeltaRising);
     SetRegister(Registers.NCLR, configuration.NoiseCountLimitRising);
     SetRegister(Registers.FDLR, configuration.FilterDelayCountLimitRising);
     SetRegister(Registers.MHDF, configuration.MaxHalfDeltaFalling);
     SetRegister(Registers.NHDF, configuration.NoiseHalfDeltaFalling);
     SetRegister(Registers.NCLF, configuration.NoiseCountLimitFalling);
     SetRegister(Registers.FDLF, configuration.FilterDelayCountLimitFalling);
     SetRegister(Registers.E0TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E0RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.E1TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E1RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.E2TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E2RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.E3TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E3RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.E4TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E4RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.E5TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E5RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.E6TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E6RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.E7TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E7RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.E8TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E8RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.E9TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E9RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.E10TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E10RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.E11TTH, configuration.ElectrodeTouchThreshold);
     SetRegister(Registers.E11RTH, configuration.ElectrodeReleaseThreshold);
     SetRegister(Registers.CDTC, configuration.ChargeDischargeTimeConfiguration);
     SetRegister(Registers.ELECONF, configuration.ElectrodeConfiguration);
 }