Ecco un esempio di codice Arduino per un robot telecomandato tramite infrarossi utilizzando un modulo ricevitore IR e un modulo motor shield (ponte H) per controllare i motori. Questo codice è solo un esempio di base e potrebbe richiedere modifiche o adattamenti in base al tuo hardware specifico.
Assicurati di avere installata la libreria IRremote per Arduino per gestire i segnali IR.
#include <IRremote.h>
#include <AFMotor.h>
// Pin del ricevitore IR
const int receiverPin = 11;
// Definizione dei pulsanti del telecomando IR
#define BUTTON_FORWARD 0xFFA25D
#define BUTTON_BACKWARD 0xFF629D
#define BUTTON_LEFT 0xFFE21D
#define BUTTON_RIGHT 0xFF22DD
#define BUTTON_STOP 0xFF02FD
// Inizializza il ricevitore IR
IRrecv irrecv(receiverPin);
decode_results results;
// Inizializza il modulo motor shield (ponte H)
AF_DCMotor motor1(1); // Motore 1 collegato al M1
AF_DCMotor motor2(2); // Motore 2 collegato al M2
void setup() {
Serial.begin(9600);
// Avvia il ricevitore IR
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
// Verifica il codice ricevuto dal telecomando IR
unsigned long key_value = results.value;
switch (key_value) {
case BUTTON_FORWARD:
moveForward();
break;
case BUTTON_BACKWARD:
moveBackward();
break;
case BUTTON_LEFT:
turnLeft();
break;
case BUTTON_RIGHT:
turnRight();
break;
case BUTTON_STOP:
stopMoving();
break;
default:
// Gestire altri codici IR, se necessario
break;
}
irrecv.resume(); // Ricevi il prossimo valore
}
}
// Funzioni per il movimento del robot
void moveForward() {
motor1.setSpeed(255);
motor2.setSpeed(255);
motor1.run(FORWARD);
motor2.run(FORWARD);
}
void moveBackward() {
motor1.setSpeed(255);
motor2.setSpeed(255);
motor1.run(BACKWARD);
motor2.run(BACKWARD);
}
void turnLeft() {
motor1.setSpeed(200);
motor2.setSpeed(200);
motor1.run(BACKWARD);
motor2.run(FORWARD);
}
void turnRight() {
motor1.setSpeed(200);
motor2.setSpeed(200);
motor1.run(FORWARD);
motor2.run(BACKWARD);
}
void stopMoving() {
motor1.setSpeed(0);
motor2.setSpeed(0);
motor1.run(RELEASE);
motor2.run(RELEASE);
}
Nota che questo codice presume l’uso di un telecomando IR standard con i pulsanti “Avanti”, “Indietro”, “Sinistra”, “Destra” e “Stop”. Se il tuo telecomando ha codici diversi per i pulsanti, dovrai aggiornare le costanti ‘BUTTON_FORWARD
‘, ‘BUTTON_BACKWARD
‘, ‘BUTTON_LEFT
‘, ‘BUTTON_RIGHT
‘ e ‘BUTTON_STOP
‘ con i nuovi valori dei codici IR corrispondenti ai pulsanti del tuo telecomando.