Libreria L298N per Arduino

Libreria_L298N_per_Arduino_site

In questo esempio viene mostrato l’utilizzo del meccanismo di Callback.

Ogni cinque secondi il motore termina il suo tempo di lavoro e richiama una funzione. In questa funzione se la velocità non ha superato i 255, viene incrementata di 25 punti, altrimenti resettata a 0.
Ogni qual volta viene raggiunto il limite di tempo impostato per l’esecuzione del movimento, il motore viene posto in uno stato di “standby” e non potrà essere comandato nuovamente fin quando non verrà chiamato il metodo reset(), che in questo caso viene chiamato ad ogni esecuzione della funziona Callback.

/*
Author  : Andrea Lombardo
Site    : https://www.lombardoandrea.com
Source  : https://github.com/AndreaLombardo/L298N/

Here you can see how to work with callback option.

Every five seconds callback function is called and increasing the speed.
When maximum speed is reached then starts again from zero.

In the meaning time your loop cycle is never blocked.

Speed range go from 0 to 255, default is 100.
Use setSpeed(speed) to change.

Sometimes at lower speed motors seems not running.
It's normal, may depends by motor and power supply.

Wiring schema in file "L298N - Schema_with_EN_pin.png"
*/

// Include the library
#include <L298N.h>

// Pin definition
const unsigned int IN1 = 7;
const unsigned int IN2 = 8;
const unsigned int EN = 9;

// Create one motor instance
L298N motor(EN, IN1, IN2);

// Initial speed
unsigned short theSpeed = 0;

void setup()
{
  // Set initial speed
  motor.setSpeed(theSpeed);
}

void loop()
{
  // Move motor for 5 seconds and then execute the callback function
  // Easy way
  motor.forwardFor(5000, callback);

  // More flexible way
  // motor.runFor(5000, L298N::FORWARD, callback);
}

/*
Each time the callback function is called increase the speed of the motor or reset to 0.
This function can be named with any name. 
*/
void callback()
{

  // If speed is over 255 then increase
  if (theSpeed <= 255)
  {
    theSpeed += 25;
  }
  else
  {
    theSpeed = 0;
  }

  /*
  Each time a callback function is called
  the motor is placed in "don't move" status
  To restore it's capability use reset() method.
  */
  motor.reset();

  // Set the new speed
  motor.setSpeed(theSpeed);
}
L298N-Schema_with_EN_pin
Schema L298N con pin EN collegato

Potrebbero interessarti anche...