.NET Gadgeteer Motor Driver con due motori e un potenziometro (Italiano)

By Mike Dodaro, translated by Marco Minerva from the original English version

In un post precedente ho descritto come usare un potenziometro con il modulo GHI Electronics Motor Driver L298 module. Questo esempio collega due motori al driver, i quali fanno muovere delle semplici parti meccaniche, come mostrato nel video seguente. Ci sono due bottoni che avviano e fermano i motori, e un potenziometro controlla la velocità del motore corrente. Entrambi i circuiti sono alimentati da una sorgente 7,5 volt DC collegata al driver.

I moduli usati nell’esempio sono visibili nella seguente immagine del Visual Studio Designer (fare clic per ingrandire).

Motor Controller per due Motori con Potenziometro

Motor Controller per due Motori con Potenziometro

La logica dell’applicazione è visibile nel seguente blocco di codice.

using Microsoft.SPOT;

using GT = Gadgeteer;
using Gadgeteer.Modules.GHIElectronics;

using System.Threading;

namespace MotorDriver
{

    public partial class Program
    {
        GT.Timer timer;

        void ProgramStarted()
        {
            button.ButtonPressed += new Button.ButtonEventHandler(button_ButtonPressed);
            button1.ButtonPressed += new Button.ButtonEventHandler(button1_ButtonPressed);
            timer = new GT.Timer(500);
            timer.Tick += new GT.Timer.TickEventHandler(timer_Tick);
            Debug.Print("Program Started");
        }

        void button1_ButtonPressed(Button sender, Button.ButtonState state)
        {
            if (!button1.IsLedOn)
            {
                motorControllerL298.MoveMotor(MotorControllerL298.Motor.Motor2, 1);
                timer.Start();
                button1.TurnLEDOn();
            }
            else
            {
                motorControllerL298.MoveMotor(MotorControllerL298.Motor.Motor2, 0);
                timer.Stop();
                button1.TurnLEDOff();
            }
        }

        void timer_Tick(GT.Timer timer)
        {
            double percent = potentiometer.ReadPotentiometerPercentage();

            if (button.IsLedOn)
            {
                motorControllerL298.MoveMotor(MotorControllerL298.Motor.Motor2, (int)(percent * 100));
            }
            else if (button1.IsLedOn)
            {
                motorControllerL298.MoveMotor(MotorControllerL298.Motor.Motor1, (int)(percent * 100));
            }
        }

        void button_ButtonPressed(Button sender, Button.ButtonState state)
        {
            if (!button.IsLedOn)
            {
                motorControllerL298.MoveMotor(MotorControllerL298.Motor.Motor1, 1);
                timer.Start();
                button.TurnLEDOn();
            }
            else
            {
                motorControllerL298.MoveMotor(MotorControllerL298.Motor.Motor1, 0);
                timer.Stop();
                button.TurnLEDOff();
            }
        }
    }
}

Alcuni utenti noteranno che il driver non fornisce un modo per invertire la direzione del motore. Sarà necssaria un po’ di inventiva per superare questa limitazione.

Advertisements

, ,

  1. Controllare un motore con .NET Gadgeteer e un potenziometro (Italiano) « Integral Design

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: