Mijn Arduino Line Na Robot!!! -Met Pololu kW-6A IR reflectie Sensor Array


ik gebruikte een Arduino Duemillanove met de 328 ATMega. Voortstuwing wordt geleverd door de twee Parallax Futaba continue rotatie servo's. Mijn sensor is de Pololu kW-6A IR reflectie Sensor-Array, en het is allemaal uitgeschakeld 4 oplaadbare NiMH Duracell AA batterijen :)

Het kan volgen van een donker als, op een lichte achtergrond. In dit geval gebruikte ik zwarte tape op een whiteboard. Het eerste kalibreert zelf gedurende 5 seconden. U verplaatst het over de lijn een paar keer zodat het went aan het verschil in reflectie. Na de kalibratie begint het vooruit. Ik gebruikt een algoritme om te bepalen van de fout uit de lijn. Als wordt bepaald door middel van het algoritme dat het op een extreme fout is, zal het weer voor een langere tijd. Op dezelfde manier als de robot dat het is slechts een fractie van een duim uit de lijn bepaalt, zal het alleen veranderen voor een fractie van een seconde. Dit vermindert over compensatie en maakt de regel die volgt, een beetje soepeler en betrouwbaarder.

Dit is de code die ik gebruikte, ik vanaf nul begonnen en de MegaServo-bibliotheek toegevoegd. Ik ben mij ervan bewust dat er een bibliotheek voor de Pololu IR sensor arrays, maar ik problemen, ondervonden dus heb ik besloten om te beginnen vanaf nul met de sensor ook lezen. Ik ben met behulp van de analoge versie van de Pololu sensor-array, in tegenstelling tot de RC-versie, die een digitaal signaal uitgangen. Mijn sensoren uitgangsspanning een analoge op basis van de reflectiecoëfficiënt van het oppervlak. Bijvoorbeeld, als u bent het verstrekken van 5V aan de sensoren op Vcc en u een donker oppervlak tegenkomt, dat sensor zal de uitgang van een een spanning dichter naar 5V. Omgekeerd, als de sensor een zeer reflecterende aantreft, (witte oppervlak) het zal output dichter naar 0V. Ik kan het lezen van deze 6 analoge uitgang van mijn 6 sensoren via de 6 analoge i/o-pinnen op mijn Arduino.
Bovendien, mijn STOP algoritme gebruikt genest als verklaringen 3 keer controleren als de robot echt aan het eind, voordat hij voor 10 seconden stopt, het licht knippert is. Hiermee voorkomt u dat een toevallige stop in het midden van het spoor als gevolg van onnauwkeurige lezingen of glitches. Tijdens de kalibratie berekend ik een gemiddelde waarde van de reflectiecoëfficiënt die ik gebruik later om te helpen bij de navigatie en de besluitvorming. Ik heb ook enkele gegevens naar het seriële scherm voor testdoeleinden afgedrukt.

Hier is mijn code:

// ==========================================================
Voel je vrij om te wijzigen en gebruik deze code, maar geef me krediet.
Auteur: Austin Duff - 24 juni 2009
// ==========================================================
#include < PololuQTRSensors.h >
#include < Servo.h >
#include < MegaServo.h >
#define NBR_SERVOS 3
#define FIRST_SERVO_PIN 2

Servo links;
Servo recht;
Servo toren;

MegaServo servo's [NBR_SERVOS];

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

VOID Setup
{

Servo's [0] .attach (2, 800, 2200); toren
Servo's [1] .attach (9, 800, 2200); links
Servo's [2] .attach (10, 800, 2200); rechts
Serial.begin(9600);
Servos[0].write(65);
digitalWrite (13, laag);

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

for (int i = 0; ik < 5000; i ++)
{
digitalWrite (13, hoge);

int val = 0;
for (int j = 0; j < = 5; j ++)
{
Val = analogRead(j);
Als (val > = mx)
MX = val;
Als (val < = mn)
MN = val;
}
delay(1);
}

Midden = ((mx + mn)/2);
digitalWrite (13, laag);

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

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

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

Serial.Print ("Midden:");
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 ("recht");
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 ("links");
delay(ABS(((S5+S4+S3)/3)-((S0+S1+S2)/3))/2));
}
Als ((s0 > mid) & &(s5 > mid))
{
Servos[2].write(90);
Servos[1].write(90);
Serial.Print ("STOP");
Als ((s0 > mid) & &(s5 > mid))
{
Servos[2].write(90);
Servos[1].write(90);
Serial.Print ("STOP");
Als ((s0 > mid) & &(s5 > mid))
{
Servos[2].write(90);
Servos[1].write(90);
Serial.Print ("STOP");
voor (int k = 0; k < 50; k ++)
{
digitalWrite (13, hoge);
delay(100);
digitalWrite (13, laag);
delay(100);
}
delay(5000);
}
}
}

}

Gerelateerde Artikelen

Basic Line Na Robot met Arduino

Basic Line Na Robot met Arduino

09/07/2015Een paar jaar geleden dat we aanvankelijk gepost deze elementaire regel volgende Robot met Arduino tutorial, en lijkt zo veel mensen vonden het nuttig dat we een update die loopt van de huidige Arduino Bibliotheken, moet post bevat de nieuw
Vereenvoudigd Arduino AC huidige meting met behulp van ACS712 Hall Effect Sensor

Vereenvoudigd Arduino AC huidige meting met behulp van ACS712 Hall Effect Sensor

Dit is een vereenvoudigde benadering tot mijn voorafgaande Instructable over meten AC huidige met de huidige sensor van ACS712... koppelingVereenvoudigingen omvatten:Elimineren van de speciale signaal Conditioning printplaat - in plaats daarvan gaan
Uiterst eenvoudig Line Na Robot met Arduino

Uiterst eenvoudig Line Na Robot met Arduino

In dit Instructable gaan we om te bouwen van een eenvoudige generische lijn na arduinobot. Er zullen veel ruimte voor creativiteit in dit Instructable.De robot, in deze tutorial wordt gevoed off van 4 AA batterijen en kan volgen van zwarte isolatieta
Boe Bot/Arduino line na robot

Boe Bot/Arduino line na robot

dit is een vrij eenvoudig gids over het bouwen van een regel die volgt op robot. het maakt gebruik van lichten, licht afhankelijke weerstanden (LDRs), een arduino en een boe-bot chassis (elke robot chassis met 2 continue rotatie servo's zal werken).
Zeer eenvoudig te maken van Arduino bluetooth spy robot met Android RemoteControl app

Zeer eenvoudig te maken van Arduino bluetooth spy robot met Android RemoteControl app

In dit project ziet u hoe eenvoudig mengsel van verschillende technologieën en derde-partij apps maakt het mogelijk om een tamelijk ingewikkelde speelgoed maken.De robot doet twee dingen:1. de Arduino gebaseerd spy robot beweegt volgens opdrachten ve
Mijn Arduino Ping Display Robot

Mijn Arduino Ping Display Robot

doelenHallo allemaal.Ik hoop om te delen gelieve een kleine robot dat heb ik net klaar gebouw.Er zijn vele Ping boot, misschien met een tutorials en display minder zo zonder pretentie, vormen een illustratie van wat ik kon doen.Ik gaf mezelf het doel
Arduino stem gecontroleerde Robot met RGB-LED

Arduino stem gecontroleerde Robot met RGB-LED

Hoi is dit mijn eerste project in instructable. Dit is een arduino robot gecontroleerd in drie ways.you kunt bepalen met behulp van spraak, knopbesturingselement en richtingscontrole met behulp van android apps. We kunnen ook een RGB led met Stembedi
Line na robot met PID algoritme

Line na robot met PID algoritme

lijn volgende robot ontworpen met Solidworks en uitgevoerd met arduino, ardumoto voor controle van de wielen, en een sensor bar met 8 infrarood sensoren. Voor vragen over deze regel volgt gelieve een reactie achterlaten of bericht me.
Draadloos bedienen een Robot met behulp van de Arduino en RF Modules!

Draadloos bedienen een Robot met behulp van de Arduino en RF Modules!

/*Bewerken van 05/05/2016Hey jongens, ik druk bezig geweest met college en kon niet antwoorden naar commments. De meeste van jullie wilde de code en schema's gedaan een beetje beter dus ik heb het schema op Eagle 7.2.0 gemaakt en geüpload alles op Gi
Controle van uw Robot met behulp van een Wii Nunchuck (en een Arduino)

Controle van uw Robot met behulp van een Wii Nunchuck (en een Arduino)

na het dragen van mezelf spelen van Wii Boksen, ik kreeg aan het denken zou het niet geweldig als ik zou kunnen dit gebruiken om te controleren mijn robot, (op zoek naar mijn linkerhand).Op zoek rond het internet vond ik een schare van mensen die soo
Arduino gebaseerde lijn volgeling robot met behulp van Pololu kW-8RC lijn sensor

Arduino gebaseerde lijn volgeling robot met behulp van Pololu kW-8RC lijn sensor

UPDATE FEB 2012: deze gids is featured op de Adafruit bloghttp://www.adafruit.com/blog/2012/02/14/Arduino-based-line-follower-robot/Dit is de Faz3a II, mijn eerste lijn-volgende robot, die hopelijk ook te gebruiken voor het oplossen van de doolhof. I
Doolhof van Oplosser Robot, met behulp van kunstmatige intelligentie met Arduino

Doolhof van Oplosser Robot, met behulp van kunstmatige intelligentie met Arduino

(Als je dit Instructable, vergeet dan niet te stemmen (boven: rechts hoek vlag). Rex, de Robot concurreert op ROBOTICA en sensoren wedstrijden. Heel hartelijk bedankt! ;-)Dit Instructable werd ontwikkeld na mijn laatste project: lijn volgeling Robot
2WD stem gecontroleerde Robot met Arduino en BitVoicer Server

2WD stem gecontroleerde Robot met Arduino en BitVoicer Server

In dit Instructable ga ik tonen hoe te om een 2WD spraakgestuurde robot te bouwen. Hoewel ik ben alleen gelijkstroommotoren als wilt verplaatsen de robot controle, dezelfde aanpak kan worden gebruikt voor de controle van de stem stappenmotoren en ser
JabberBot! De Arduino robot met een ATMega hersenen en bluetooth braun! :-)

JabberBot! De Arduino robot met een ATMega hersenen en bluetooth braun! :-)

JabberBot wordt beheerd via een Android applicatie via een bluetooth seriële verbinding.De ingewanden van het zijn gebaseerd op een I2C-aanpassing van de Adafruit, WaveShield en MotorShield.De bluetooth-module is een Bluetooth metgezel Silver van Spa