.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.

, ,

  1. #1 by Ian on July 11, 2022 - 2:20 PM

    Great read thannk you

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

Leave a comment