Pubblicato il

Guida Come montare Rover MiniQ Discovery 2WD KIT Arduino

prremessa: Esplora il mondo fisico con il robot MiniQ! Questo è un MinQ 2WD Plus che si basa sul nostro telaio MiniQ 2WD. Per renderlo adatto per l’istruzione, le competizioni e il divertimento con cui giocare, abbiamo anche aggiunto moduli extra come Romeo V2 All-in- un controller, sensore di distanza Sharp GP2Y0A21 e micro servo da 9 g in questo kit. Ciò che lo rende diverso dai robot miniQ originali è che viene fornito con un piano superiore, che consente di installare sensori, servi e persino di eseguire alcuni prototipi. sulla superficie lo rendono una scheda di prototipazione ideale in movimento ed è impilabile.Non puoi solo saldare componenti DIP ma anche componenti SMD con questo piano superiore.Inoltre, abbiamo saldato i cavi del motore e incollato per te in anticipo Con questo kit potrai giocare subito dopo il semplice montaggio e programmazione.I nostri codici di esempio includono molti scenari interessanti come l’evitamento degli ostacoli, buon divertimento!

CARATTERISTICHE TECNICHE:

  • Sensore di distanza Sharp GP2Y0A21
  • tensione di esercizio: da 4,5 V a 5,5 V
  • consumo medio di corrente: 30 mA (tipico)
  • campo di misura della distanza: da 10 cm a 80 cm (da 4″ a 32″)
  • tipo di uscita: tensione analogica
  • differenziale di tensione di uscita su intervallo di distanza: 1,9 V (tipico)
  • tempo di risposta: 38 ± 10 ms
  • Altri
  • 13000 giri/min a vuoto
  • Rapporto di trasmissione 50:1
  • 260 giri/min @ 6V
  • 40mA @ 6V
  • Corrente di stallo 360mA @ 6V
  • 10 once pollici di coppia a 6 V

LISTA MATERIALI:

TUTORIAL SCHEMA DI COLLEGAMENTO:

CODICE DI ESEMPIO:

Librerie:

  • Math LGPL: arduino.cc/reference/en/
  • Servo LGPL: arduino.cc/reference/en/libraries/servo/
#include <math.h>
#include <Servo.h>                                //Include Servo library
Servo irservo;                                    // create servo object to control a servo

#define Svo_Pin 9

int posnow;

int E1 = 5;     //M1 Speed Control
int E2 = 6;     //M2 Speed Control
int M1 = 4;     //M1 Direction Control
int M2 = 7;     //M1 Direction Control

void stop(void)                    //Stop
{
  digitalWrite(E1,0);
  digitalWrite(M1,LOW);
  digitalWrite(E2,0);
  digitalWrite(M2,LOW);
}
void advance(char a,char b)          //Move forward
{
  analogWrite (E1,a);      //PWM Speed Control
  digitalWrite(M1,LOW);
  analogWrite (E2,b);
  digitalWrite(M2,LOW);
}
void back_off (char a,char b)          //Move backward
{
  analogWrite (E1,a);
  digitalWrite(M1,HIGH);
  analogWrite (E2,b);
  digitalWrite(M2,HIGH);
}
void turn_L (char a,char b)             //Turn Left
{
  analogWrite (E1,a);
  digitalWrite(M1,LOW);
  analogWrite (E2,b);
  digitalWrite(M2,HIGH);
}
void turn_R (char a,char b)             //Turn Right
{
  analogWrite (E1,a);
  digitalWrite(M1,HIGH);
  analogWrite (E2,b);
  digitalWrite(M2,LOW);
}


void setup()
{
  int i;
  for(i=4;i<=7;i++)
   pinMode(i, OUTPUT);
//  pinMode(2,OUTPUT);
//  Serial.println("Run keyboard control");
  digitalWrite(E1,LOW);
  digitalWrite(E2,LOW);
  irservo.attach(Svo_Pin);                         //attaches the servo on pin 9 to the servo object
  Serial.begin(19200);                            //Set Baud Rate
  advance(80,80);
}

int pos=0;                                        // variable to store the servo position
float distance;

void loop()
{
//  digitalWrite(2,HIGH);
  for (int i=0;i<180;i++)
  {
    irservo.write(i);
    int x=analogRead(0);                   // connect the GP2Y0A21 distance sensor to Analog 0
    Serial.println(x);                    // print distance
    if(x>350)
    {
//      digitalWrite(2,LOW);delay(100); digitalWrite(2,HIGH); delay(100);
      if(i<135)
      {
        back_off(80,80);delay(300);
        turn_L(80,80);delay(300);
      }
      else
      {
        back_off(80,80);delay(300);
        turn_R(80,80);delay(300);
      }
      advance(80,80);
    }
    delay(4);
  }
  for(int i=180;i>0;i--)
  {
    irservo.write(i);
    int x=analogRead(0);
    Serial.println(x);                    // print distance
    if(x>350)
    {
//      digitalWrite(2,LOW);delay(100); digitalWrite(2,HIGH); delay(100);
      if(i<135)
      {
        back_off(80,80);delay(300);
        turn_L(80,80);delay(300);
      }
      else
      {
        back_off(80,80);delay(300);
        turn_R(80,80);delay(300);
      }
      advance(80,80);
    }
    delay(4);
  }
}

Buon progetto.