Пример #1
0
        //public static void Main()
        //{
        //    using (var a1 = new AnalogInput(Cpu.AnalogChannel.ANALOG_1))
        //    {
        //        var last = 0.0d;
        //        while (Debugger.IsAttached)
        //        {
        //            var reading = a1.Read();
        //            if (reading != last)
        //            {
        //                Debug.Print(reading.ToString());
        //                last = reading;
        //            }
        //        }
        //    }
        //}
        public static void Main()
        {
            var wiiChuck = new WiiChuck(true);
            var debugMode = Debugger.IsAttached;

            _redLed = new OutputPort(Pins.GPIO_PIN_D13, false);
            _greenLed = new OutputPort(Pins.GPIO_PIN_A0, false);

            _pot = new AnalogInput(Cpu.AnalogChannel.ANALOG_1);

            //_speaker = new PWM(Pins.GPIO_PIN_D9);

            //_speakerThread = new Thread(PlaySound);
            //_speakerThread.Start();
            //_servo1 = new ServoController(Mshield.Servo1, 600, 2400, startDegree: 90);
            _robot = new TankRobot();

            while (!debugMode || Debugger.IsAttached)
            {
                // try to read the data from nunchucku
                if (wiiChuck.GetData())
                {

                    CheckButtons(wiiChuck.CButtonDown, wiiChuck.ZButtonDown);

                    if (Recording)
                    {
                        _iteration++;
                        SetMotorSpeed(_robot, wiiChuck);

                    }
                    else if (PlayingBack)
                    {

                        if (_currentPlaybackIndex >= _record.Count)
                        {
                            PlayingBack = false;
                            _currentPlaybackIndex = 0;

                        }
                        else
                        {
                            _iteration++;

                            var record = (DataPoint) _record[_currentPlaybackIndex];

                            if (record.Iterations == _iteration)
                            {
                                _currentPlaybackIndex++;
                                _robot.Move(record.LeftSpeed, record.RightSpeed);

                            }
                        }

                    }
                    else
                    {
                        SetMotorSpeed(_robot, wiiChuck);
                    }
                    //var degrees = ((int) (90+(-90*wiiChuck.AccelerationXGs))/2)*2;

                    //if (degrees < 0)
                    //    degrees = 0;
                    //else if (degrees > 180)
                    //    degrees = 180;

                    //_servo1.Rotate(degrees);
                    //Debug.Print("AccelX = " + wiiChuck.AccelerationXGs + "   AccelY=" + wiiChuck.AccelerationYGs);
                }
            }

            wiiChuck.Dispose();

            _robot.Dispose();

            //_speaker.Dispose();
            //_speaker = null;

            //_servo1.Dispose();

            _redLed.Dispose();
            _greenLed.Dispose();

            _pot.Dispose();
        }
Пример #2
0
 public override void Dispose()
 {
     _port.Dispose();
     _port = null;
 }
        /// <summary>
        /// Calculate Temperature value
        /// </summary>
        /// <returns>Float value of current Temperature reading</returns>
        /// <remarks>Assuming AREF of 3.3v, the default for Rev. B Netduino Plus boards.
        /// It's an internal value, no feed to AREF required.
        /// Using code tutorial from adafruit http://www.ladyada.net/learn/sensors/thermistor.html </remarks>
        private float CalculateTemperature()
        {
            AnalogInput ain = new AnalogInput(AnalogChannels.ANALOG_PIN_A0);

            // take 10 readings to even out the noise
            float average = 0.0F;
            for (int i = 0; i < 10; i++) { average += (int)ain.Read(); }
            average /= 10;

            if (average == 0) return 10.0F;

            // convert to a resistance
            average = 1023 / average - 1;
            average = SeriesResistor / average;

            // apply steinhart
            float tempValue = average / ThermistorNominal;
            tempValue = Extensions.Math.Log(tempValue);
            tempValue /= BetaCoefficient;
            tempValue += 1.0F / (TemperatureNominal + 273.15F);
            tempValue = 1.0F / tempValue;
            tempValue -= 273.15F;

            ain.Dispose();
            return tempValue;
        }
Пример #4
0
 public void Dispose()
 {
     _analogInput.Dispose();
 }