Ma ligne de Arduino suite Robot!!! -Avec Pololu QTR-6 a IR réflectance capteurs

j’ai utilisé un Arduino Duemillanove avec l’ATMega 328. Propulsion est assurée par les deux parallaxe continue Rotation/Servos Futaba. Mon capteur est la matrice de capteurs de réflectance de IR Pololu QTR-6 a, et c’est tous hors tension 4 piles rechargeables NiMH Duracell AA:)

Il peut suivre un noir comme, sur un fond clair. Dans ce cas, j’ai utilisé une bande noire sur un tableau blanc. Il se calibre tout d’abord pendant 5 secondes. Vous déplacez à travers la ligne plusieurs fois, il s’habitue à la différence de réflectivité. Après l’étalonnage il commence à aller de l’avant. J’ai utilisé un algorithme pour déterminer son erreur sur la ligne. S’il constate par le biais de l’algorithme qu’il soit une erreur extrême, il tournera pendant un temps plus long. De même, si le robot détermine que c’est seulement une fraction de pouce sur la ligne, il tournera seulement pour une fraction de seconde. Ceci réduit à l’indemnisation et rend la ligne qui suit un peu plus lisse et plus fiable.

C’est le code que j’ai utilisé, j’ai commencé à partir de zéro et ajouté à la bibliothèque de MegaServo. Je suis conscient qu’il existe une bibliothèque pour les baies de capteur IR Pololu, mais j’ai rencontré des problèmes, alors j’ai décidé de repartir à zéro avec le capteur de lecture aussi bien. J’utilise la version analogique du tableau de capteur Pololu, par opposition à la version RC, qui émet un signal numérique. Mes capteurs une tension analogique issue de la réflectance de la surface de sortie. Par exemple, si vous fournissez à 5V pour les capteurs à Vcc, et rencontrez une surface sombre, ce capteur aura pour résultat une une tension plus proche à 5V. À l’inverse, si le capteur rencontre un très réfléchissante, (surface blanche) il sortira plus près à 0V. Je peux lire ces 6 sorties analogiques de mon 6 capteurs à travers les 6 broches d’e/s analogiques sur mon Arduino.
En outre, mon arrêt algorithme utilise imbriqué si des déclarations de vérifier 3 fois si le robot est vraiment à la fin, avant elle s’arrête pendant 10 secondes, la lumière clignotante. Cela empêche un arrêt accidentel au milieu de la piste en raison des mesures imprécises ou des pépins. Lors de l’étalonnage, j’ai calculé une valeur moyenne de réflexion dont je me sers plus tard pour aider à la navigation et la prise de décision. Aussi, j’ai imprimé quelques données à l’écran de série pour des fins de test.

Voici mon code :

// ==========================================================
N’hésitez pas à changer et copiez le code suivant, mais s’il vous plaît me donner crédit.
Auteur : Austin Duff - 24 juin 2009
// ==========================================================
#include < PololuQTRSensors.h >
#include < Servo.h >
#include < MegaServo.h >
#define NBR_SERVOS 3
#define FIRST_SERVO_PIN 2

Servo gauche ;
Droit de servo ;
Tour de servo ;

Servos MegaServo [NBR_SERVOS] ;

int pingPin = 7 ;
int mi = 0 ;
mn int = 0 ;
mx int = 0 ;

void setup()
{

Servos [0] .Brancher (2, 800, 2200) ; tour
.Brancher servos [1] (9, 800, 2200) ; gauche
.Brancher servos [2] (10, 800, 2200) ; droit
Serial.Begin(9600) ;
Servos[0].Write(65) ;
digitalWrite (13, faible) ;

Servos[2].Write(90) ;
Servos[1].Write(90) ;

pour (int i = 0; i < 5000; i ++)
{
digitalWrite (13, HIGH) ;

int val = 0 ;
pour (int j = 0; j < = 5; j ++)
{
Val = analogRead(j) ;
Si (val > = mx)
MX = val ;
Si (val < = mn)
mn = val ;
}
Delay(1) ;
}

Mid = ((mx + mn)/2) ;
digitalWrite (13, faible) ;

Servos[2].Write(90) ;
Servos[1].Write(90) ;
}
void loop()
{

s0 int = 0 ;
s1 int = 0 ;
s2 int = 0 ;
s3 int = 0 ;
s4 int = 0 ;
s5 int = 0 ;

S0 = analogRead(0) ;
S1 = analogRead(1) ;
S2 = analogRead(2) ;
S3 = analogRead(3) ;
S4 = analogRead(4) ;
S5 = analogRead(5) ;

Serial.Print ("Mid:") ;
Serial.Print(Mid) ;
Serial.Print("") ;
Serial.Print(S0) ;
Serial.Print("") ;
Serial.Print(S1) ;
Serial.Print("") ;
Serial.Print(S2) ;
Serial.Print("") ;
Serial.Print(S3) ;
Serial.Print("") ;
Serial.Print(S4) ;
Serial.Print("") ;
Serial.Print(S5) ;
Serial.Print("") ;
Serial.println() ;

Servos[2].Write(180) ;
Servos[1].Write(0) ;

Delay(10) ;

if(((S0+S1+S2)/3) > (((s3+s4+s5)/3) + 250)) & & (! () (S0 > Mid) & &(s5 > mid)))
{
Servos[2].Write(180) ;
Servos[1].Write(90) ;
Serial.Print ("droite") ;
Delay(ABS(((S5+S4+S3)/3)-((S0+S1+S2)/3))/2)) ;
}
if(((S0+S1+S2)/3) < (((s3+s4+s5)/3) -250)) & & (! () (S0 > Mid) & &(s5 > mid)))
{
Servos[2].Write(90) ;
Servos[1].Write(0) ;
Serial.Print ("gauche") ;
Delay(ABS(((S5+S4+S3)/3)-((S0+S1+S2)/3))/2)) ;
}
Si ((s0 > mid) & &(s5 > mid))
{
Servos[2].Write(90) ;
Servos[1].Write(90) ;
Serial.Print ("STOP") ;
Si ((s0 > mid) & &(s5 > mid))
{
Servos[2].Write(90) ;
Servos[1].Write(90) ;
Serial.Print ("STOP") ;
Si ((s0 > mid) & &(s5 > mid))
{
Servos[2].Write(90) ;
Servos[1].Write(90) ;
Serial.Print ("STOP") ;
pour (int k = 0; k < 50; k ++)
{
digitalWrite (13, HIGH) ;
Delay(100) ;
digitalWrite (13, faible) ;
Delay(100) ;
}
Delay(5000) ;
}
}
}

}

Articles Liés

Ligne de base suivant Robot avec Arduino

Ligne de base suivant Robot avec Arduino

07/09/2015Il a été quelques années puisque nous avons affiché initialement ce Robot suivant ligne de base avec tutorial Arduino, et il semble tellement de gens a jugé utile que nous devrions poster une mise à jour qui se déroule courant Arduino bibli
Lumière d’Arduino suite Robot

Lumière d’Arduino suite Robot

Vue d'ensembleCette instructable utilisera trois photo-résistances (résistances dépendantes légers) et un Arduino pour contrôler le mouvement d'un robot. N'importe quel châssis robot commun peut être utilisé pour le robot. Les capteurs de lumière ser
Ligne après le robot avec l’algorithme PID

Ligne après le robot avec l’algorithme PID

ligne suivante robot conçu avec Solidworks et mis en œuvre avec arduino, ardumoto pour le contrôle des roues et une barre palpeuse avec 8 capteurs infrarouges. Pour toute question concernant cette ligne qui suit s'il vous plaît laissez-moi un comment
Arduino 4wd robot avec capteur de ping « J-Bot »

Arduino 4wd robot avec capteur de ping « J-Bot »

niveau d'expérience : intermédiaire (requière la soudure)Temps requis: 3-5 heures selon l'expérienceJ-BOT Kit JamecoQuelqu'un a dit que Jameco avait besoin d'une mascotte de robotique. J'ai toujours été un bricoleur, surtout avec l'électronique radio
Robot suiveur de ligne axée sur l’Arduino à l’aide du capteur de ligne Pololu QTR-8RC

Robot suiveur de ligne axée sur l’Arduino à l’aide du capteur de ligne Pololu QTR-8RC

mise à jour février 2012 : ce guide est présenté sur le blog de Adafruithttp://www.Adafruit.com/blog/2012/02/14/Arduino-Based-Line-Follower-robot/Il s'agit de Faz3a II, mon premier robot ligne-qui suit, qui je l'espère aussi à utiliser pour la résolu
Ligne suivante Robot avec contrôle de base PD (proportionnelle-dérivé)

Ligne suivante Robot avec contrôle de base PD (proportionnelle-dérivé)

Ce Instructable vous montrera comment utiliser contrôle de PD (Proporational-dérivé) dans un suiveur de ligne simple. L'exemple utilise le suiveur de ligne mis au point dans la base Instructable suiveur de ligne :Les composants suivants seront utilis
Mise à niveau suiveur de ligne analogique à Arduino avec Attiny85

Mise à niveau suiveur de ligne analogique à Arduino avec Attiny85

RésuméDans ce Instructable nous allons vous montrer comment mettre à niveau un analogue de la bon marché suiveur de ligne dans un suiveur de ligne Arduino intelligent en remplaçant le comparateur LM393 IC par un Attiny85 intelligent et un Arduino cro
Pupitre de commande de Robot Arduino de programme avec visual basic

Pupitre de commande de Robot Arduino de programme avec visual basic

Nous ferons notre console de robot pour gérer ce projet avec Visual Basic.Nous gérerons notre robot via Bluetooth.Outils nécessaires à notre formulaire :Touche de numéro 13Combobox numéro 21 pièce texbox1 pièce GroupBox1 pièce SerialPorthttp://Make.r
Bras robotique avec des gants, téléphone Android et Arduino

Bras robotique avec des gants, téléphone Android et Arduino

Aujourd'hui, nous avons presque 2 techniques pour jouer avec le bras robotisé, soit par les boutons , par exemple comme le bouclier de jeu ou en utilisant des gants qui incluent les capteurs. Pourtant, aujourd'hui je vais vous montrer une nouvelle te
Faire un Zombie rampant de Robot avec les jambes coupées

Faire un Zombie rampant de Robot avec les jambes coupées

Nous avons tous les zombies de l'amour et les robots, parmi les choses qui sont plus susceptibles d'être notre annulation un jour. Permet de faciliter la vie en construisant un zombie effrayant petit robot le long.Mon but avec ce Instructable consist
Construire un Robot très petit : Make The World de roues plus petit Robot avec une pince.

Construire un Robot très petit : Make The World de roues plus petit Robot avec une pince.

Construire un robot de 1/20 pouces cubes avec une pince qui peut ramasser et déplacer les petits objets. Il est contrôlé par un microcontrôleur Picaxe. À ce stade, je crois que c'est peut-être le robot au monde plus petite sur roues avec une pince. C
Auto équilibrage Robot avec écran LCD

Auto équilibrage Robot avec écran LCD

La version modifiée de mon mpu6050 équilibrage robot plus stable avec écran LCD et exemple de connecter 2 i2c sur le même NIPvidéo 1vidéo 2Étape 1: Étape 1: carte de ◾L298N moteur double dérivationCarte de ◾L298N moteur double dérivation12 V BATTARY9
Comment suivre votre Robot avec OpenCV

Comment suivre votre Robot avec OpenCV

Mise à jour : Permet de faire des Robots, ma maison hackerspace numérique, a été achetée par RobotShop. Je ne veux pas revenir, mais les nouveaux propriétaires interdit moi-même et la plupart des membres du vétérans. Qui a dit, la plupart des liens i
Comment faire des petits robots avec nRover Conseil

Comment faire des petits robots avec nRover Conseil

Le nRover, est une petite planche conçue pour construire des petits robots comme UGV (véhicules sans pilote au sol), suiveur de ligne ou à la domotique, il peut être contrôlé par wifi, Bluetooth ou radio de contrôle. L'objectif principal est le dével