PROGETTI ARDUINO

  • HOME
  • 200 Progetti
  • Progetti e Tutorial
  • Reti
    • Impara le reti
    • internet fibra
    • wifi mesh
    • modem router
    • diagnostica reti
    • ethernet lan
    • sicurezza configurazione
  • Elettronica
  • Recensioni
  • Manuale
  • Contatti
  • HOME
  • 200 Progetti
  • Progetti e Tutorial
  • Reti
    • Impara le reti
    • internet fibra
    • wifi mesh
    • modem router
    • diagnostica reti
    • ethernet lan
    • sicurezza configurazione
  • Elettronica
  • Recensioni
  • Manuale
  • Contatti

Progetto 149
​Robot segue linea migliorato

🚀 Introduzione

Vuoi costruire un robot capace di seguire una linea nera in modo più stabile e preciso? 🤖➿

In questo progetto realizzerai un robot segue linea migliorato utilizzando Arduino UNO, due motori DC, un driver L298N e tre sensori infrarossi.

Rispetto a una versione base con due sensori, il sensore centrale permette ad Arduino di riconoscere meglio quando il robot si trova correttamente sopra la linea.

I tre sensori rileveranno:
  • lato sinistro;
  • centro;
  • lato destro.

Arduino correggerà continuamente la velocità dei due motori per mantenere il robot sul percorso.
​
👉 Il progetto introduce una forma semplice di controllo proporzionale, utile per ottenere movimenti più fluidi e ridurre le sterzate brusche.

🎯 Cosa realizzerai
​

Con Arduino creerai un robot che:
  • 🤖 segue una linea nera;
  • 👁️ utilizza tre sensori IR;
  • ⬆️ procede diritto quando è centrato;
  • ↩️ corregge verso sinistra;
  • ↪️ corregge verso destra;
  • 🔄 affronta curve più strette;
  • 🔍 cerca la linea quando la perde;
  • 🎚️ modifica la velocità dei motori;
  • 🔘 permette di avviare e fermare il robot;
  • ✅ utilizza codice compatibile con Arduino UNO.

🧰 Materiale necessario
​
  • 1x Arduino UNO;
  • 1x telaio robot a due ruote;
  • 2x motori DC con riduttore;
  • 2x ruote;
  • 1x ruota libera;
  • 1x modulo driver L298N;
  • 3x sensori IR segui-linea digitali;
  • 1x pulsante;
  • 1x LED di stato;
  • 1x resistenza da 220 Ω;
  • 1x portabatterie adatto ai motori;
  • cavetti jumper;
  • distanziali e viti;
  • nastro nero;
  • superficie bianca;
  • cavo USB.
Puoi utilizzare tre moduli IR separati oppure un modulo a tre canali compatibile con uscite digitali.

🛒 Non hai ancora i componenti?

Molti dei progetti presenti su progettiarduino.com utilizzano componenti elettronici di base come LED, resistenze, sensori e breadboard.
Se stai iniziando con Arduino, il modo più semplice è utilizzare un kit completo per principianti, che include quasi tutti i componenti necessari per realizzare molti dei progetti presenti sul sito.

👉 Kit Arduino consigliato:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4b3dxjW

📘 Vuoi imparare Arduino passo dopo passo?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un'occhiata anche ai miei libri dedicati ad Arduino.
All'interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.

👉 Scopri i miei libri su Arduino:
ℹ️ Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
https://amzn.to/4rfzjXE
​

📚 Librerie necessarie
​

Per questo progetto non servono librerie esterne.
Arduino utilizza direttamente:
  • digitalRead();
  • digitalWrite();
  • analogWrite();
  • millis().
​
Il codice può quindi essere compilato con una normale installazione dell’Arduino IDE.

🔌 Schema di collegamento
​

Sensore IR sinistro
  • VCC → 5V;
  • GND → GND;
  • OUT → pin digitale 2.

Sensore IR centrale
  • VCC → 5V;
  • GND → GND;
  • OUT → pin digitale 3.

Sensore IR destro
  • VCC → 5V;
  • GND → GND;
  • OUT → pin digitale 4.

Driver L298N – Motore sinistro
  • ENA → pin PWM 5;
  • IN1 → pin digitale 7;
  • IN2 → pin digitale 8;
  • OUT1 e OUT2 → motore sinistro.
Rimuovi il ponticello ENA.

Driver L298N – Motore destro
  • ENB → pin PWM 6;
  • IN3 → pin digitale 9;
  • IN4 → pin digitale 10;
  • OUT3 e OUT4 → motore destro.
Rimuovi anche il ponticello ENB.

Pulsante AVVIO/STOP
  • un terminale → pin digitale 11;
  • terminale opposto → GND.
Il pulsante utilizza INPUT_PULLUP.

LED di stato
  • anodo → pin digitale 12 tramite resistenza da 220 Ω;
  • catodo → GND.
Il LED resta acceso mentre il robot è attivo.
⚠️ Alimentazione del robot

I motori non devono essere alimentati direttamente dai pin di Arduino.
Utilizza un pacco batterie compatibile con:
  • tensione nominale dei motori;
  • corrente richiesta;
  • limiti del driver L298N.
​
Collega insieme:
  • GND del pacco batterie;
  • GND del driver L298N;
  • GND di Arduino.
​
👉 Durante le prime prove tieni il robot sollevato, così potrai verificare il verso dei motori senza farlo partire improvvisamente.
Foto

💻 Codice Arduino
​

Il programma legge i tre sensori e assegna un comportamento a ogni combinazione.
Esempi:
  • solo sensore centrale sulla linea → avanti;
  • sinistro e centrale sulla linea → correzione a sinistra;
  • destro e centrale sulla linea → correzione a destra;
  • solo sinistro sulla linea → curva stretta a sinistra;
  • solo destro sulla linea → curva stretta a destra;
  • nessun sensore sulla linea → ricerca della linea.

    

⚙️ Come funziona

I sensori IR illuminano il pavimento con luce infrarossa.
Una superficie chiara riflette più luce.

Una linea nera ne riflette meno.
L’uscita digitale del modulo cambia stato quando il sensore passa dalla superficie chiara alla linea scura.

Molti moduli restituiscono:
  • LOW sulla linea nera;
  • HIGH sul fondo bianco.

Il codice è configurato per questo comportamento.

👉 Se i tuoi sensori restituiscono valori opposti, puoi modificare una sola costante nel programma.

👁️ Disposizione dei sensori

I tre sensori devono essere montati nella parte anteriore del robot.
La disposizione consigliata è:
  • sensore sinistro;
  • sensore centrale;
  • sensore destro.

Il sensore centrale deve trovarsi sopra la linea quando il robot è perfettamente allineato.
​
I sensori laterali devono essere abbastanza vicini da rilevare rapidamente una deviazione, ma non così vicini da leggere tutti contemporaneamente la stessa zona.

🔍 Recupero della linea
​

Se nessun sensore rileva la linea, il robot deve capire in quale direzione cercarla.
Il programma memorizza l’ultima correzione effettuata.

Se l’ultima deviazione era verso sinistra, il robot continua a cercare verso sinistra.
Se era verso destra, cerca verso destra.
​
👉 Questa memoria semplice migliora molto il recupero dopo curve strette o piccoli errori.

🎚️ Correzione proporzionale semplificata
​

Il progetto assegna un valore di errore alla posizione della linea:
  • linea molto a sinistra → errore negativo grande;
  • linea leggermente a sinistra → errore negativo piccolo;
  • linea al centro → errore zero;
  • linea leggermente a destra → errore positivo piccolo;
  • linea molto a destra → errore positivo grande.

La correzione viene calcolata moltiplicando l’errore per una costante:
correzione = errore * KP;

La velocità dei motori diventa:
motoreSinistro = velocitaBase + correzione;
motoreDestro = velocitaBase - correzione;


Questa tecnica rende le correzioni più progressive rispetto a semplici comandi fissi.

⚠️ Taratura dei sensori
​

Molti moduli IR possiedono un piccolo potenziometro.
Per regolarli:
  1. posiziona il sensore sopra il fondo bianco;
  2. osserva il LED del modulo;
  3. spostalo sopra la linea nera;
  4. ruota il potenziometro finché lo stato cambia chiaramente;
  5. ripeti per tutti e tre i sensori.
​
I tre moduli devono reagire in modo simile.

🧪 Preparazione della pista
​

Per creare una pista semplice puoi utilizzare:
  • cartone bianco;
  • pannello chiaro;
  • nastro isolante nero largo circa 18–25 mm.

Evita:
  • superfici lucide;
  • luce solare diretta;
  • curve troppo strette;
  • incroci nelle prime prove.
​
Inizia con un ovale semplice e amplia gradualmente la difficoltà.

⚠️ Il robot oscilla continuamente
​

Se il robot si sposta rapidamente a destra e sinistra:
  • riduci KP;
  • riduci la velocità base;
  • avvicina leggermente i sensori;
  • controlla la taratura;
  • aumenta il numero di letture del filtro.

⚠️ Il robot reagisce troppo lentamente
​

Se il robot esce dalla pista prima di correggere:
  • aumenta leggermente KP;
  • riduci la distanza tra sensori e pavimento;
  • aumenta la velocità di correzione;
  • riduci la velocità base;
  • controlla che i sensori laterali siano ben posizionati.

🧠 Perché è un progetto importante
​

Con questo progetto impari a:
  • utilizzare tre sensori IR;
  • controllare due motori DC;
  • pilotare un driver L298N;
  • riconoscere la posizione di una linea;
  • creare una correzione proporzionale;
  • memorizzare l’ultima direzione;
  • recuperare una linea persa;
  • filtrare ingressi digitali;
  • gestire un pulsante di arresto;
  • sviluppare codice compatibile con Arduino UNO.

🔄 Varianti possibili
​

Vuoi migliorare il progetto?
  • 👁️ utilizza cinque sensori IR;
  • 🧠 aggiungi un controllo PD;
  • 🎛️ regola la velocità con un potenziometro;
  • 📟 mostra errore e velocità su LCD;
  • 🔔 aggiungi un buzzer quando perde la linea;
  • 💾 salva i parametri nella EEPROM;
  • 🔋 monitora la batteria;
  • 🚦 riconosci zone di arresto;
  • 🔀 gestisci incroci e bivi;
  • ⏱️ crea un cronometro per il giro;
  • 🛞 aggiungi encoder alle ruote;
  • 🏁 realizza una pista da competizione.

Foto
Foto

© ProgettiArduino.com 2026 - Fancello Salvatore
​ Layout, immagini e testi sono di esclusiva proprietà di www.progettiarduino.com 
Privacy Policy