Beispiel #1
0
        public static void Main()
        {
            // This pin-layout counts for the following DFRobot Motorshields:
            // - Arduino Motor Shield (L298N)
            // - Arduino Motor Shield (L293)
            HBridge MotorDriver = new HBridge(new Netduino.PWM(Pins.GPIO_PIN_D6), Pins.GPIO_PIN_D7, new Netduino.PWM(Pins.GPIO_PIN_D5), Pins.GPIO_PIN_D4);

            // HBridge MotorDriver = new HBridge(new Netduino.(Pins.GPIO_PIN_D6), Pins.GPIO_PIN_D7, new Netduino.PWM(Pins.GPIO_PIN_D5), Pins.GPIO_PIN_D4);
            // Older versions of the L293 use pin 8 instead of 4. If that's the case, use the line below
            // HBridge MotorDriver = new HBridge(new Netduino.PWM(Pins.GPIO_PIN_D6), Pins.GPIO_PIN_D7, new Netduino.PWM(Pins.GPIO_PIN_D5), Pins.GPIO_PIN_D8);

            //for (sbyte i = 0; i < 100; i++)
            //{
            //    SetMotor1(i, MotorDriver);
            //}

            //for (sbyte i = 100; i < 0; i--)
            //{
            //    SetMotor1(i, MotorDriver);
            //}


            // Motor 1 half speed backward
            MotorDriver.SetState(HBridge.Motors.Motor1, 50);
            // Motor 2 half speed forward
            // MotorDriver.SetState(HBridge.Motors.Motor2, 50);

            // Lets run for 5 seconds
            Thread.Sleep(5000);

            // Motor 1 full speed backward
            MotorDriver.SetState(HBridge.Motors.Motor1, 100);
            // // Motor 2 full speed forward
            //// MotorDriver.SetState(HBridge.Motors.Motor2, 100);

            // // Lets run for 5 seconds
            Thread.Sleep(5000);

            // Stops both motors
            MotorDriver.SetState(HBridge.Motors.Motor1, 0);
            //MotorDriver.SetState(HBridge.Motors.Motor2, 0);
        }
Beispiel #2
0
        public static void Main()
        {
            // This pin-layout counts for the Sparkfun Ardubot Kit:
            HBridge MotorDriver = new HBridge(new Netduino.PWM(Pins.GPIO_PIN_D5), Pins.GPIO_PIN_D3, new Netduino.PWM(Pins.GPIO_PIN_D9), Pins.GPIO_PIN_D6);

            // Motor 1 half speed backward
            MotorDriver.SetState(HBridge.Motors.Motor1, -50);
            // Motor 2 half speed forward
            MotorDriver.SetState(HBridge.Motors.Motor2, 50);

            // Lets run for 5 seconds
            Thread.Sleep(5000);

            // Motor 1 full speed backward
            MotorDriver.SetState(HBridge.Motors.Motor1, -100);
            // Motor 2 full speed forward
            MotorDriver.SetState(HBridge.Motors.Motor2, 100);

            // Lets run for 5 seconds
            Thread.Sleep(5000);

            // Stops both motors
            MotorDriver.SetState(HBridge.Motors.Motor1, 0);
            MotorDriver.SetState(HBridge.Motors.Motor2, 0);
        }
        public void Drive(Direction direction, sbyte speed, int time)
        {
            switch (direction)
            {
            case Direction.forward:
                _HBridge.SetState(HBridge.Motors.Motor1, speed);     //half speed forward
                _HBridge.SetState(HBridge.Motors.Motor2, speed);     //half speed reverse
                break;

            case Direction.reverse:
                _HBridge.SetState(HBridge.Motors.Motor1, (sbyte)-speed);     //half speed forward
                _HBridge.SetState(HBridge.Motors.Motor2, (sbyte)-speed);     //half speed reverse
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(direction));
            }
            Globals.Moving          = true;
            Globals.LeftDriveSpeed  = speed;
            Globals.RightDriveSpeed = speed;

            if (!Brain.Instance.Sleep(time, ref Globals.CancelMovementAlarmTriggered))
            {
                //reset the alarm
                Globals.CancelMovementAlarmTriggered = false;
            }

            Stop();
        }
Beispiel #4
0
        public static void Main()
        {
            // Defines the H-Bridge IC on the correct pins
            HBridge MotorDriver = new HBridge(new Netduino.PWM(Pins.GPIO_PIN_D6), Pins.GPIO_PIN_D7, new Netduino.PWM(Pins.GPIO_PIN_D5), Pins.GPIO_PIN_D4);

            // Motor 1 half speed backward
            MotorDriver.SetState(HBridge.Motors.Motor1, -50);
            // Motor 2 half speed forward
            MotorDriver.SetState(HBridge.Motors.Motor2, 50);

            // Lets run for 5 seconds
            Thread.Sleep(5000);

            // Motor 1 full speed backward
            MotorDriver.SetState(HBridge.Motors.Motor1, -100);
            // Motor 2 full speed forward
            MotorDriver.SetState(HBridge.Motors.Motor2, 100);

            // Lets run for 5 seconds
            Thread.Sleep(5000);

            // Stops both motors
            MotorDriver.SetState(HBridge.Motors.Motor1, 0);
            MotorDriver.SetState(HBridge.Motors.Motor2, 0);
        }
Beispiel #5
0
 private static void SetMotor1(sbyte i, HBridge MotorDriver)
 {
     MotorDriver.SetState(HBridge.Motors.Motor1, i);
     Thread.Sleep(200);
 }
        public static void Main()
        {
            //distance sensor
            //triger (12), echo (13), 5V + G
            HC_SR04 sensor = new HC_SR04(Pins.GPIO_PIN_D12, Pins.GPIO_PIN_D13);
            //buzzer
            OutputPort Klakson = new OutputPort(Pins.GPIO_PIN_D0, false);
            //motor driver
            HBridge MotorDriver = new HBridge(SecretLabs.NETMF.Hardware.Netduino.PWMChannels.PWM_PIN_D5, Pins.GPIO_PIN_D4, SecretLabs.NETMF.Hardware.Netduino.PWMChannels.PWM_PIN_D6, Pins.GPIO_PIN_D7);
            //led indicator if there is an object in the front of robot
            OutputPort WarningLed = new OutputPort(Pins.GPIO_PIN_D1, false);
            OutputPort GoLed      = new OutputPort(Pins.GPIO_PIN_D2, false);

            //waiting till connect...
            if (!Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].IsDhcpEnabled)
            {
                // using static IP
                while (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
                {
                    ;                                                                             // wait for network connectivity
                }
            }
            else
            {
                // using DHCP
                while (IPAddress.GetDefaultLocalAddress() == IPAddress.Any)
                {
                    ;                                                         // wait for DHCP-allocated IP address
                }
            }
            //Debug print our IP address
            Debug.Print("Device IP: " + Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].IPAddress);

            // create mqtt client instance
            client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS));
            string clientId = Guid.NewGuid().ToString();

            client.Connect(clientId);
            SubscribeMessage();
            PublishMessage("/robot/state", "ONLINE");
            while (true)
            {
                long ticks = sensor.Ping();
                if (ticks > 0L)
                {
                    double inches = sensor.TicksToInches(ticks);
                    Debug.Print("jarak ke object :" + inches);

                    if (inches < 4)
                    {
                        jalan = Arah.Berhenti;
                        Klakson.Write(true);
                        WarningLed.Write(true);
                        GoLed.Write(false);
                        PublishMessage("/robot/status", "Watchout there is an object in the front of robot!");
                    }
                    else
                    {
                        Klakson.Write(false);
                        WarningLed.Write(false);
                        GoLed.Write(true);
                    }
                }
                //stop first before change direction or turn
                if (lastDirection != jalan)
                {
                    //stop before start new direction
                    MotorDriver.SetState(HBridge.Motors.Motor1, 0);
                    MotorDriver.SetState(HBridge.Motors.Motor2, 0);
                }

                switch (jalan)
                {
                case Arah.Maju:
                    MotorDriver.SetState(HBridge.Motors.Motor1, Speed);
                    MotorDriver.SetState(HBridge.Motors.Motor2, Speed);
                    break;

                case Arah.Mundur:
                    MotorDriver.SetState(HBridge.Motors.Motor1, (sbyte)(-Speed));
                    MotorDriver.SetState(HBridge.Motors.Motor2, (sbyte)(-Speed));
                    break;

                case Arah.Kiri:
                    MotorDriver.SetState(HBridge.Motors.Motor1, -50);
                    MotorDriver.SetState(HBridge.Motors.Motor2, 50);
                    break;

                case Arah.Kanan:
                    MotorDriver.SetState(HBridge.Motors.Motor1, 50);
                    MotorDriver.SetState(HBridge.Motors.Motor2, -50);
                    break;

                case Arah.Berhenti:
                    MotorDriver.SetState(HBridge.Motors.Motor1, 0);
                    MotorDriver.SetState(HBridge.Motors.Motor2, 0);
                    break;
                }
                lastDirection = jalan;
            }
        }