Programma
ultimo aggiornamento 19 novembre 2016


 

Per la programmazione del robot è necessario prima di tutto lavorare dal lato smartphone e per prima cosa dovremo installare l'applicazione ufficiale 1Sheeld accedendo direttamente al play store Android.

La App può anche essere scaricata nel dispositivo dal browser web accedendo alla pagina http://1sheeld.com/downloads/  dalla quale è possibile ottenere la versione Android e le librerie.
Una volta fatto questo, abiliteremo il Bluetooth dello smartphone (se già non è abilitato) ed avviamo l’app: per prima cosa ci verrà chiesto di rilevare 1Sheeld a cui seguirà la procedura di connessione.
A questo punto si dovrà selezionare lo shield virtuale da utilizzare nella nostra applicazione, nel nostro caso Game Pad.

homotix

PCBONLINE

PCBgogo

Schermata iniziale dell'App

Ricerca dei dispositivi 1Sheeld via Bluetooth

Schermata a connessione avvenuta

Schermata di scelta Sheeld

Selezione dello Sheeld Game Pad

Visualizzazione dello Sheeld Game Pad

Uso dello Sheeld Game Pad

Per la parte programma, occorre verificare di aver istallato l'apposita libreria per Arduino, la quale si può trovare alla voce Download ma è altresì possibile utilizzare l’apposito tool fornito a corredo dell’ultima versione dell’IDE di Arduino.
Avviate l’IDE di Arduino (versione 1.6.11 o più recente) ed andate nella sezione sketch>#include libreria>gestione libreria quindi selezionate OneSheeld (versione 1.10.0 o più recente) ed installatela.

Nel Listato sono riportate le righe di codice che provvedono ad includere la libreria 1Sheeld e ad abilitare le funzionalità richieste.
Come suggerito dagli stessi sviluppatori, è consigliato abilitare (con l’istruzione #include) solo gli shield effettivamente utilizzati in modo da risparmiare memoria di programma
Bene, stabilito come funziona il firmware e in che modo si opera dall’App, entriamo nel vivo del progetto: alla schermata principale dell’applicazione ci è sufficiente tappare sull'icona di sinistra per includere lo shield nel progetto; cliccando sull’icona dello scudo in alto a destra si avvierà la comunicazione con lo
shield ed il sistema è in funzione: veramente molto semplice ed intuitivo!
Nello shield, il LED di colore blu di nome BT-LED passerà da lampeggiante a luce fissa ad indicare che la comunicazione è stata attivata ed il sistema è in funzione.
L'utilizzo dello Sheeld è semplice, i 4 tasti direzionali permettono di muovere il robot, il tasto blu attiva il buzzer, mentre il tasto rosso attiva il led.


Programma Robopad.ino

/*
  Programma:robopad.ino
  Programma di gestione robot tramite 1Sheeld
  e lo shield virtuale GamePad

  Su Arduino sono utilizzati i seguenti pin
  Pin GND -> Pin GND modulo L9110/buzzer
  Pin Vin -> Pin VCC modulo L9110
  Pin  2 -> Pin Buzzer
  Pin 5 -> Pin A-1A modulo L9110
  Pin 6 -> Pin A-1B modulo L9110
  Pin 10-> Pin B-1A modulo L9110
  Pin 11-> Pin B-1B modulo L9110
  Pin 13-> Pin Led

   Ultima modifica il 24/8/2016

  Applicazione realizzata da Adriano Gandolfo
  Sito https://www.adrirobot.it
  Blog http://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_SHIELD

/* Include 1Sheeld library. */
#include <OneSheeld.h>

/* Numero pin a cui è collegato il LED */
int ledPin = 13 ;
/* Numero pin a cui è collegato il Burrer */
int buzzerPin = 2 ;
/* Configuratione del pin del modulo L9110. */
int A_1A = 5;
int A_1B = 6;
int B_1A = 10;
int B_1B = 11;

void setup()
{
  /* Start communication. */
  OneSheeld.begin();
  /* Imposta il pin LED come output. */
  pinMode(ledPin, OUTPUT);
  /* Imposta il pin Buzzer come output. */
  pinMode(buzzerPin, OUTPUT);
  /* Impostazione del modulo motore . */
  pinMode(A_1A, OUTPUT);  // IN1 motore A
  pinMode(A_1B, OUTPUT);  // IN2 motore A
  pinMode(B_1A, OUTPUT);  // IN3 motore B
  pinMode(B_1B, OUTPUT);  // IN4 motore B
}
void loop()
{
  /* Accende il LED quando il pulsante rosso è premuto. */
  if (GamePad.isRedPressed())
  {
    digitalWrite(ledPin, HIGH);
  }
  else
  {
    digitalWrite(ledPin, LOW);
  }
  /* Attiva il buzzer quando il pulsante blu è premuto. */
  if (GamePad.isBluePressed())
  {
    digitalWrite(buzzerPin, HIGH);
  }
  else
  {
    /* Disattiva il buzzer */
    digitalWrite(buzzerPin, LOW);
  }
  if (GamePad.isUpPressed())
  {
    robot_SX();
  }
  else if (GamePad.isDownPressed())
  {
    robot_DX();
  }
  else if (GamePad.isRightPressed())
  {
    robot_avanti();
  }
  else if (GamePad.isLeftPressed())
  {
    robot_indietro();
  }
  else
  {
    robot_stop();
  }
}

void robot_avanti()
{
  digitalWrite(A_1A, HIGH);
  digitalWrite(A_1B, LOW);
  digitalWrite(B_1A, LOW);
  digitalWrite(B_1B, HIGH);
}
void robot_indietro()
{
  digitalWrite(A_1A, LOW);
  digitalWrite(A_1B, HIGH);
  digitalWrite(B_1A, HIGH);
  digitalWrite(B_1B, LOW);
}
void robot_DX()
{
  digitalWrite(A_1A, LOW);
  digitalWrite(A_1B, HIGH);
  digitalWrite(B_1A, LOW);
  digitalWrite(B_1B, HIGH);
}
void robot_SX()
{
  digitalWrite(A_1A, HIGH);
  digitalWrite(A_1B, LOW);
  digitalWrite(B_1A, HIGH);
  digitalWrite(B_1B, LOW);
}

void robot_stop()
{
  digitalWrite(A_1A, LOW);
  digitalWrite(A_1B, LOW);
  digitalWrite(B_1A, LOW);
  digitalWrite(B_1B, LOW);
}

 

Elenco revisioni

19/11/2016

Emissione preliminare