ultimo aggiornamento 26 luglio 2014


 

Programma per il funzionamento con telecomando e sensore IR

/*
 Test_robot_adriBOT.ino
 Programma per la gestione del robot adribot tramite
 sensore Ir e telecomando DeA
 Si sono utilizzati i seguenti pin
 +5V
 GND
 Pin Digitale 5   -> Servo
 Pin Digitale 6   -> Servo
 Pin Digitale 7   -> Sensore IR
 Pin Digitale 13  -> Led
 
 Ultima modifica il 27/7/2014
 Applicazione realizzata da Adriano Gandolfo, tutto il materiale 
 disponibile sul sito Elettronica Open Source
 Blog http://it.emcelettronica.com/author/adrirobot/
 Filmato 
 Sito web https://www.adrirobot.it
 
 This example code is in the public domain.
 */

#include <Servo.h>// Caricamento libreria per la crazione degli oggetti Servo che generano segnali PWM
Servo leftDrive;  // Creazione per controllo servomotore sinistro
Servo rightDrive; // Creazione per controllo servomotore destro

#include <IRremote.h> // Caricamento libreria per gestione sensore IR
int receiver = 7; // Definizione del pin a cui è collegato il sensore IR
IRrecv irrecv(receiver); // Inizializzazione della libreria IRemote
decode_results results; // Decodifica del risultato che Arduino riceve dal sensore
// per ottenere un valore numerico utilizzabile nel confronto.
#define ledpin 13 // Definizione del pin a cui sono collegati i led di illuminazione

void setup()
{
  leftDrive.attach(5);  // attribuisce il servo sul pin 5 all'oggetto servo
  rightDrive.attach(6);  // attribuisce il servo sul pin 6 all'oggetto servo
  pinMode(ledpin, OUTPUT); //Imposta il pin dei led come Output
  irrecv.enableIRIn(); // si utilizza il metodo irrecv.enableIRIn(
  // della libreria IRemote perchè legga i valori provenienti dal sensore
  Serial.begin(9600); // Imposta la velocità della seriale per controllo
}

void loop()
{
  if (irrecv.decode(&results)) // È stato ricevuto un segnale IR?
  {
    Serial.println(results.value, HEX); // Mostra eventualmente sul monitor seriale
    // il valore esadecimale ricevuto
    irrecv.resume();// prosegue mettendo il sensore nuovamente in modalità di ascolto
  }
  if ( results.value == 0x810 ){ 
    driveForward();
  } // a seconda dei valori decodificati esegue una diversa routine

  if ( results.value == 0x210 ){
    driveBackward();
  }
  if ( results.value == 0xA90 ){ 
    STOP();
  }
  if ( results.value == 0x410 ){ 
    turnLeft();
  }
  if ( results.value == 0xA10){ 
    turnBackLeft();
  } 
  if ( results.value == 0x10 ){ 
    turnRight();
  }
  if ( results.value == 0xC10 ){ 
    turnBackRight();
  } 
  if ( results.value == 0xE10 ){ 
    digitalWrite(ledpin, HIGH);
  } //Accende i led frontali
  if ( results.value == 0x910 ){ 
    digitalWrite(ledpin, LOW);
  } //Spegne i led frontali
}
//Routine azionamento
void turnRight() //Il robot gira a destra
{
  leftDrive.write(180);
  rightDrive.write(180);
}
void turnBackRight() //Il robot indietro a destra
{
  leftDrive.write(90);
  rightDrive.write(0);
}
void turnLeft() //Il robot gira a destra
{
  leftDrive.write(0);
  rightDrive.write(0);
}
void turnBackLeft() //Il robot gira a destra
{
  leftDrive.write(180);
  rightDrive.write(90);
}
void driveForward() //Il Robot va avanti
{
  leftDrive.write(0);
  rightDrive.write(180);
}
void driveBackward() //Il robot va indietro
{
  leftDrive.write(180);
  rightDrive.write(0);
}
void STOP()// Il robot si ferma
{
  leftDrive.write(90);
  rightDrive.write(90);
}

homotix

PCBONLINE

PCBgogo

Elenco revisioni 27/07/2014 Emissione preliminare