Libreria L298N per Arduino

Libreria_L298N_per_Arduino_site

Era il 2017 quando mi cimentai nella realizzazione della mia prima (ed unica) libreria per Arduino.
Stavo smanettando con i motori DC ed il modulo L298N quando all’improvviso mi si accende la lampadina. Perchè non provare a scrivere una libreria per semplificarmi il lavoro? Piuttosto che combattere con i vari digitalWrite e analogWrite?

Cominciai così a documentarmi e a studiare come poter scrivere qualcosa di utile. Il 7 giugno 2017 pubblicai su Github la mia prima versione della libreria L298N per Arduino, e tramite una procedura messa a disposizione dal Team di Arduino, resi disponibile a tutti il mio lavoro.
Da allora è passato molto tempo e l’unica implementazione che feci fu quella di aggiungere un ulteriore metodo e scrivere qualche esempio di utilizzo.

La mia libreria nel library manager di Arduino
La mia libreria nel library manager di Arduino

Cosa fa?

In breve la libreria mette a disposizione metodi per andare avanti, in dietro o fermare il motore senza lo sbattimento di dover ogni volta riscrivere tutti i comandi per settare lo stato dei pin. Altra cosa interessante messa a disposizione
dalla libreria, è la possibilità di eseguire comandi sui motori per un certo periodo di tempo al termine del quale (opzionalmente) eseguire una funzione detta di Callback senza bloccare l’esecuzione del loop.
Altri metodi comodi sono quelli per conoscere lo stato di movimento del motore, della velocità o della direzione impostata, in modo da sfruttare tali informazioni nei vari scenari dell’applicazione.

E quindi?

In questi giorni mi sono pervenute diverse richieste di aiuto sull’utilizzo di Arduino con i motori DC ed il modulo L298N. Così ho pensato bene di rispolverare le nozioni apprese durante la scrittura della libreria, per realizzarne una nuova versione, con metodi nuovi e più flessibili.

Una delle cose maggiormente richieste era la possibilità di istanziare il motore senza l’obbligo di dover per forza passare il pin Enable del modulo, che ne determina la velocità. In questo modo, applicando il jumper che collega il pin Enable a +5V sul modulo, la velocità sarà sempre settata al massimo.

Nella precedente versione, anche se il modulo L298N presenta due interfacce di controllo per appunto due motori, non era possibile istanziare un unica classe per comandarli entrambi. Bisognava creare un istanza “L298N motore” per ogni interfaccia.
In questa nuova versione, ho creato la classe L298NX2 che in un unica istanza si prende cura di comandare entrambi i motori.

Questa nuova classe eredita tutte le funzionalità dell’istanza singola, differenziando i metodi per ciascun motore con il suffisso A o B.
Implementa inoltre metodi senza suffisso che naturalmente andranno ad agire su entrambi i motori contemporaneamente.

Altro sulla libreria L298N

Quando ho deciso di pubblicarla su github affinché potesse essere inserita tra le librerie disponibili per Arduino, ho pensato che fosse più corretto utilizzare come lingua di riferimento l’inglese in modo che potesse essere comprensibile a molte più persone.
Tengo a precisare che il mio livello di inglese è molto scolastico tendente al google translator, pertanto se deciderai di dare un’occhiata al repository, non meravigliarti.
A dimostrazione di quello che dico, potrai notare come in passato, abbia ricevuto alcune merge request da utenti che gentilmente mi hanno corretto qualche misspelling.

Storico merge request
Le merge request di cui parlavo

L298N Esempi

In queste pagine ho voluto riportare gli esempi allegati alla libreria così da renderli disponibili anche sul sito.
Se deciderai di provarli, piuttosto che fare copia incolla del codice, ti consiglio di installare la libreria dal solito Manager di Arduino ed aprirli direttamente dal menù File -> Esempi -> L298N.

Per comodità di sviluppo e di test della libreria, ho realizzato degli schemi di collegamento standard così da limitare il più possibile il monta/smonta durante le prove. Ogni sketch riporta in alto il nome dello schema di riferimento che si trova nella cartella “schema” del repository.

Dopo questi articoli correlati trovi il link per andare alla pagina successiva.

Potrebbero interessarti anche...