ARDUINO RC BALANCING ROBOT

 

 

Grazie alla collaborazione con ROBOTICS-3D NASCE ROBOTICS OPEN SOURCE PLATFORM  è la nuova piattaforma robotica 4WD ARDUINO UNO  che interagisce con la tua App android tramite bluetooth.

La versione base consente di sperimentare le basi della robotica applicate a una piattaforma 4WD

 

Il robot "base"  e composto da:  

  • Arduino Uno Rev3
  • Dagu 4WD Magician Chassis
  • 2A Motor Shield
  • ULTRASONIC SENSOR HC-SR04
  • 1 BUZZER
  • 1 STAFFA X SR04
  • 1 PORTABATTERIE
  • 1 MODULO BLUETOOTH
  • 10 jumper M/F
  • 1 jumper a Y 1M/2F

- Descrizione

 

Grazie agli sketch forniti come esempi, è possibile testare step by step le funzionalità base del 4wd, in particolare è possibile fare:

  • TEST MOTORI
  • TEST AUDIO
  • TEST ULTRASUONI
  • TEST BLUETOOH

Tra le applicazioni che puoi realizzare è incluso anche il Theremino (incluso nella versione base)  altre in via di sviiluppo.

Android4WD è sia lo sketch Arduino sia l'applicazione Mobile che consente nella versione base di comandare il tuo ROSPI.

 

Con MIT App Inventor 2 puoi personalizzare la tua applicazione android per comandare il tuo robot

 

 - Caratteristiche tecniche

- Funzionamento

 

- Codice di esempio

/*
  Nome: TestUltrasuoni.ino
  -------------------------------------------------------------
  Semplice programma per misurare la distanza tramite HC-SR04
  -------------------------------------------------------------
  
  Autore : Ferrarini Fabio - www.robotics-3d.com
           www.artigianitecnologici.it
  
  Data : 27/09/2014
  Revisione : 
*/
#include "pitches.h"  


const int signalPin = 12; 
const int echoPin = 11;
const int audioPin = 13;

int distance = 0;            // distanza ostacolo
const int numOfReadings = 3; // numero letture
int readings[numOfReadings]; // memorizza le letture in un array
int arrayIndex = 0;          // 
int total = 0;               // Totale
int avgDistance = 0;         // Media
int debug =1;
const long baud = 9600;
String pDist;


void setup()  
{
  Serial.begin(baud); 
  // 
  pinMode(audioPin, OUTPUT);
  // Esegue una melodia 
  PlayMelody();  

}

void loop()
{
  distance = getDistance();

  total = total - readings[arrayIndex]; //  
  readings[arrayIndex] = distance;      //  
  total = total + readings[arrayIndex]; //  
  arrayIndex++;                         //  

  // 
  if (arrayIndex >= numOfReadings)  {
    arrayIndex = 0;
  }

  // calcola la media della distanza
  avgDistance = total / numOfReadings;
  pDist = String(avgDistance);
  Serial.print("distanza:");
  Serial.println(pDist);
 
 }

// Funzione di calcolo della distanza
long getDistance()
{
  unsigned long pulseTime;
  unsigned long distance;

  pinMode(signalPin, OUTPUT);
  digitalWrite(signalPin, LOW);      //  
  delayMicroseconds(2);              // 2 microsecondi
  digitalWrite(signalPin, HIGH);     // send a trigger pulse
  delayMicroseconds(10);             // 10 microsecondi
  digitalWrite(signalPin, LOW);      // signal pin low waiting for echo pulse

  pinMode(signalPin, INPUT);
  pulseTime = pulseIn(echoPin, HIGH); // read echo pulse length in microseconds
  distance = pulseTime/58;            // distance in centimeters

  return distance;
}

 

Share