Skip to content

11-Il Pilota Remoto (Controllo Radio con Joystick) πŸ•ΉοΈπŸŽοΈ ​

Fase 1: Brainstorming e Teoria 🧠 ​

  • Domanda alla classe: "Qual Γ¨ la differenza tra l'interruttore della luce di casa e la manopola del volume dello stereo?"

  • Digitale vs Analogico: Un pulsante normale (Digitale) dice solo ACCESO (1) o SPENTO (0). Il Joystick Γ¨ Analogico: ci dice esattamente in che posizione si trova, restituendo un numero da 0 a 1023.

  • Gli Assi: Il joystick si muove su due linee immaginarie:

    • Asse X (Orizzontale): Destra e Sinistra.
    • Asse Y (Verticale): Su e GiΓΉ.
    • Quando lasciamo la levetta al centro (a riposo), il valore non Γ¨ 0, ma Γ¨ esattamente a metΓ  strada: circa 512.
  • Il Segreto della "Zona Morta": Le molle del joystick non sono perfette. Al centro potrebbero leggere 505 o 525. Se dicessimo al robot "Fermati solo se leggi 512", il robot tremerebbe di continuo! Per questo, nel codice, creeremo una "Zona Morta" di sicurezza (tra 400 e 600): in questo spazio, il robot ignorerΓ  i comandi e resterΓ  fermo.

Fase 2: Il Trasmettitore (Programmare il Joystick)πŸ’» ​

Prendiamo il primo Micro:bit (il telecomando). Qui tradurremo i movimenti fisici della levetta, letta attraverso i Pin, in numeri segreti da inviare via radio. (Nota: verificate lo schema elettrico. Solitamente l'asse X Γ¨ su P1 e l'asse Y Γ¨ su P2, o viceversa).

SezioneBloccoAzione e Funzione
Radioon startradio set group 11(Il canale privato! Ogni gruppo in classe deve avere un numero diverso per non pilotare le macchine degli altri).
BasicforeverIl ciclo di ascolto continuo.
Logicif...if (analog read pin P4) > 700 then(Se spingo Su) β†’\to radio send number 1
Logicelse if...else if (analog read pin P4) < 300 then(Se spingo GiΓΉ) β†’\to radio send number 2
Logicelse if...else if (analog read pin P3) > 700 then(Se spingo in Destra) β†’\to radio send number 3
Logicelse if...else if (analog read pin P3) < 300 then(Se spingo Sinistra) β†’\to radio send number 4
Logicelseelse(La Zona Morta: se il joystick Γ¨ al centro tra 400 e 600) β†’\to radio send number 0

Fase 3: Il Ricevitore (Programmare la Mini Car)πŸ’» ​

Mettiamo da parte il telecomando e prendiamo il secondo Micro:bit (quello da inserire nel robot). Questo non deve leggere nessun joystick: deve solo "ascoltare" la radio ed eseguire gli ordini!

SezioneBloccoAzione e Funzione
Radioon startradio set group 11(Fondamentale: deve essere identico al numero scelto per il joystick!)
Radioon radio receivedon radio received receivedNumber(Questo blocco si sveglia solo quando arriva un pacchetto radio).
Logicif...if receivedNumber = 1 then β†’\to motor All Forward speed 100
Logicelse if...else if receivedNumber = 2 then β†’\to motor All Backward speed 100
Logicelse if...else if receivedNumber = 4 then β†’\to motor All Turn_Right speed 100
Logicelse if...else if receivedNumber = 3 then β†’\to motor All Turn_Left speed 100
Logicelseelse β†’\to motor All Forward speed 0 (Freno!).

Fase 4: Collaudo, Cablaggio e "Tuning" πŸ”§ ​

Questa Γ¨ la fase dove i ragazzi si trasformano in veri ingegneri e affrontano i problemi del mondo reale.

  1. Controllo del Cablaggio (Joystick β†’\to Micro:bit):
    • Assicurarsi che il filo del GND sia su GND e il VCC/3V sia sui 3 Volt.
    • Verificare che l'asse X (VRx) sia nel pin giusto (es. P3) e l'asse Y (VRy) nel pin giusto (es. P4).
  2. Debugging Attivo (Problem Solving in Classe):
    • Problema: "Prof, spingo in avanti ma la macchina va a sinistra!"
    • Causa: Assi invertiti! Il filo dell'asse Y Γ¨ stato collegato al Pin che il codice crede sia l'asse X.
    • Soluzione Hardware: Scambiate fisicamente i fili di P3 e P4 sul Micro:bit del joystick.
    • Problema: "Spingo in avanti e la macchina va all'indietro!"
    • Causa: Il joystick Γ¨ montato capovolto, oppure la logica dei numeri 3 e 4 Γ¨ invertita.
    • Soluzione Software: Sul codice del Robot, scambiate le istruzioni Forward e Backward dentro gli if dei numeri 3 e 4.

🌟 Bonus didattico a fine lezione: ​

Fate notare ai ragazzi la pulizia del codice: il Micro:bit sulla macchina non sa cos'è un joystick e non sa cos'è una "zona morta". Fa solo quello che gli dice il numero in arrivo. È il Micro:bit del telecomando ad essere il vero "Cervello" che fa tutti i calcoli matematici!.