Linefollower robot van Arduino en junk - gedachten en code (4 / 5 stap)

Stap 4: Arduino code - sensor kalibratie


/***
Line na robot sensoren kalibratie script
Braian
***/

/*
HOE TE GEBRUIKEN:
Dit script uploaden.
Arduino heeft om te verblijven aangesloten op computer.
Sensoren moeten hun spanning geboden.
Plaats de robot helemaal op haar wit oppervlak uitgevoerd
vermoedelijk dus dat er zwarte lijn aan de linkerkant, is
maar niet in de weergave van sensoren.
Pers arduinos reset-knop.
Na 2 seconden moet pin 13 aan boord LED oplichten.
Witte oppervlakte kalibratie measurings zijn gedaan, terwijl de LED - ongeveer 2 sec brandt.
LED zal gaan na die.
Na een 2 seconden oplichten vertraging de LED opnieuw.
Nu heb je 5 seconden tot de robot zijwaarts overgaan met een zwarte lijn.
Lijn moet worden aan de linkerkant wanneer geconfronteerd met dezelfde manier als robot is gonna worden uitgevoerd.
U moet de robot links daarvan en ongeveer in rechte hoek naar de regel gaan.
Tijdens deze beweging die de maximale lezingen zijn genomen die optreden wanneer een enkele sensor direct boven de lijn is.
Geen haast, maar alle de sensoren moet over lijn als LED dooft na 5 sec.
Na een andere 2 seconden oplichten vertraging de LED nogmaals.
Nu heb je om te bewegen van de robot terug over de lijn, tegengesteld aan wat je deed in de laatste stap.
Het betekent gedurende 5 sec zet robot terug naar rechts over de lijn.
Belangrijk: deze tijd robot moet naar rechts verplaatsen - rechterkant sensor moet regel eerst voorbij!
Tijdens deze zijn gaan genomen maatregelen die zeggen, hoe laag de twee naast elkaar sensoren doen, wanneer lijn precies tussen de twee.
Measurings einde toen leidde dooft na 5 sec.
Begin seriële monitor.
Stop autoscroll en correctie waarden van elke opeenvolgende drie lijnen naar robots rijden script kopiëren.
*/

/ * sensor input pinnen * /
Const int sensorPins [] {A0, A1, A2} =; rechts, midden, links

/ * ingebouwde LED pin * /
Const int indicatorPin = 13;

/ * arrays voor het opslaan van sensor en berekende gegevens
drie sensoren in elke matrix:
0 - RECHTS, 1 - CENTER, 2 - LINKS * /
float lezingen [3]; sensor lezingen
zweven averageReadings [3] = {0, 0, 0}; gemiddelde lezingen
zweven whitePoints [3] = {0, 0, 0}; lezing op witte ondergrond
int blackPoints [3] = {0, 0, 0}; maximaal lezen tijdens het passeren over zwarte lijn
float unitSteps [3]; verschil tussen wit en zwart verdeeld met 100
int correcties [3]; witte punten als int
zweven peakDetect [3] = {0, 0, 0};
zweven betweenReadings [2] = {1024, 1024}; lezingen wanneer lijn inbetween twee sensoren, rechts midden, links-CENTER
Booleaanse betweenState [3] = {false, false, false}; helper om te weten welke minimum om op te slaan

/ * lus helper variabelen * /
int i;
int j;

VOID Setup {}

Serial.begin(9600); begin van seriële monitor output gegevens na measurings
pinMode (indicatorPin, OUTPUT); set nboard leidde pin om aan te geven van de meting staat

/ * start kalibratie na 2 seconden vertraging * /
delay(2000);

/ * METEN OP WITTE ONDERGROND VOOR ONGEVEER 2 SECONDEN AANGENOMEN * /
digitalWrite (indicatorPin, hoge); ingebouwde LED-lampje brandt
voor (ik = 0; ik < 125; i ++) {//125 lezingen van elke sensor
voor (j = 0; j < = 2; j ++) {//loop door elke sensor
lezingen [j] = analogRead(sensorPins[j]); optimaal te
/ * berekenen gemiddelde sensor waarden * /
whitePoints [j] = (whitePoints [j] * j + readings[j]) / (j + 1); gemiddelde van alle measurings genomen dit ver
delay(2);
}
delay(10);
}
digitalWrite (indicatorPin, laag); ingebouwde LED gaat uit
delay(2000); 2 seconden vertraging

/ * ZIJWAARTS GAAN OVER ZWARTE LIJN BINNEN DE VOLGENDE 5 SECONDEN AANGENOMEN * /
digitalWrite (indicatorPin, hoge); ingebouwde LED-lampje brandt
voor (ik = 0; ik < 320; i ++) {//320 lezingen van elke sensor
voor (j = 0; j < = 2; j ++) {//loop door elke sensor
lezingen [j] = analogRead(sensorPins[j]); optimaal te
Als (lezingen [j] > blackPoints[j]) {//if huidige waarde is groter dan één olready opgeslagen
blackPoints [j] = lezingen [j]; opslaan als aplicable
}
delay(2);
}
delay(10);
}
digitalWrite (indicatorPin, laag); ingebouwde LED gaat uit

/ * berekenen "eenheid stap" - 1/100ste van verschil tussen wit en zwart voor elke sensor
en transformeren van witte punten aan int (correcties) * /
voor (j = 0; j < = 2; j ++) {}
unitSteps [j] = (blackPoints [j] - whitePoints [j]) / 1000;
correcties [j] = (int) (whitePoints [j] + 0,5);
}

delay(2000); 2 seconden vertraging

/ * ZIJWAARTS GAAN (AAN DE RECHTERKANT!!!) OVER ZWARTE LIJN BINNEN DE VOLGENDE 5 SECONDEN AANGENOMEN * /
digitalWrite (indicatorPin, hoge); ingebouwde LED-lampje brandt
voor (j = 0; j < = 2; j ++) {//to gebruiken deze array, allemaal instellen op 0
blackPoints [j] = 0;
}
voor (ik = 0; ik < 320; i ++) {//320 lezingen van elke sensor
voor (j = 0; j < = 2; j ++) {//loop door elke sensor
lezingen [j] = (analogRead(sensorPins[j]) - corrections[j]) / unitSteps [j]; waarde voor elk in definitieve eenheden krijgen
}
voor (j = 0; j < = 2; j ++) {//loop via drie sensor lezingen
Als (lezingen [j] > blackPoints[j]) {//if huidige lezen groter is dan opgeslagen maxima
blackPoints [j] = lezingen [j]; opslaan als appicable
}
anders als (lezingen [j] + 30 < blackPoints[j]) {//if lezing afneemt (opgeslagen is groter dan de huidige)
betweenState [j] = true; geven in deze variabele die sensor heeft verplaatst over een maximum lezen (lijn)
}

Als (betweenState [0] == true & & betweenState [1] == false) {//if eerste sensorgegevens verstreken zijn maxima en ten tweede heeft niet
Als (betweenReadings [0] > lezingen [0] + readings[1]) {//if opgeslagen som van twee lezingen van de sensor is groter dan de som van de huidige
betweenReadings [0] = lezingen [0] + lezingen [1]; winkel indien van toepassing
}
}
anders als (betweenState [1] == true & & betweenState [2] == false) {//if tweede sensorgegevens verstreken zijn maxima en derde heeft niet
Als (betweenReadings [1] > lezingen [1] + readings[2]) {//if opgeslagen som van twee lezingen van de sensor is groter dan de som van de huidige
betweenReadings [1] = lezingen [1] + lezingen [2]; winkel indien van toepassing
}
}
delay(2);
}
delay(10);
}
digitalWrite (indicatorPin, laag); ingebouwde LED gaat uit

} / / / setup

void loop {}

/ * afdrukken van resultaten in seriële monitor * /
Serial.Print ("const int correcties [3] = {");
Serial.Print(Corrections[0]);
Serial.Print(",");
Serial.Print(Corrections[1]);
Serial.Print(",");
Serial.Print(Corrections[2]);
Serial.println("};");
Serial.Print ("const float unitSteps [3] = {");
Serial.Print(unitSteps[0]);
Serial.Print(",");
Serial.Print(unitSteps[1]);
Serial.Print(",");
Serial.Print(unitSteps[2]);
Serial.println("};");
Serial.Print ("const float betweenReadings [2] = {");
Serial.Print(betweenReadings[0]);
Serial.Print(",");
Serial.Print(betweenReadings[1]);
Serial.println("};");
Serial.println("");

} / / / loop

Gerelateerde Artikelen

Linefollower robot van Arduino en junk - foto's

Linefollower robot van Arduino en junk - foto's

ik maakte dit Arduino-hersenen linefollower robot voor een wedstrijd waar het niet heel goed, liep van track. Maar het was de goedkoopste robot er en ik leerde zo veel bouwen, dus ik heb enkele gedachten en Arduino code te delen ongeacht het RAS misl
Beheersing van de Motor met behulp van Arduino

Beheersing van de Motor met behulp van Arduino

Motoren met behulp van de Arduino te beheersen kunnen lastig zijn.Ten eerste vereisen motoren recenter is dan de wat Arduino output pinnen kunnen leveren. Ook kunnen motoren genereren hun eigen stroom door een proces genaamd inductie, die je circuit,
Obstakel te vermijden met behulp van Arduino Robot

Obstakel te vermijden met behulp van Arduino Robot

Hey kerels in dit instructable zullen we zien hoe maak je een autonome obstakel te vermijden Robot.This robot is ontworpen en geprogrammeerd op een zodanige wijze dat het voorkomt botsing. De robot in principe in een voorwaartse richting beweegt en w
De Wireless, obstakel detectie, piepen Robot met behulp van Arduinos!

De Wireless, obstakel detectie, piepen Robot met behulp van Arduinos!

Dit is een belemmering van het draadloos gecontroleerde, autonome robot opsporen!Een tijdje terug had ik maakte van dit Instructable en wilde maken sommige belangrijke verbeteringen sinds.De volgende zijn de robot de kenmerken:-1.he de draadloos geco
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
Bouw een Robot van de Arduino Gripper met een DynamixShield.

Bouw een Robot van de Arduino Gripper met een DynamixShield.

In dit instructable ik zal u tonen hoe te snel en gemakkelijk bouwen de grijper van een afstandsbediening met behulp van de robot en Arduino nul en een DynamixShield. De DynamixShield is een nieuwe add-on voor de Arduino Due, nul of Mega die ik ben b
Maken van een Robot met Arduino voor Beginners

Maken van een Robot met Arduino voor Beginners

Stap 1: Materialen die nodig zijn Tamiya Track en wiel instellen vergadering ($7.95 op Pololu)Tamiya 70168 dubbele versnellingsbak Kit ($9.25 op Pololu)L298N Dual H Bridge ($3.65 bij Amazon en misschien wel veel lager bij ebay)4AA batterijhouder (geb
Gebaar gecontroleerd robot met behulp van Arduino

Gebaar gecontroleerd robot met behulp van Arduino

Dit gebaar gecontroleerde robot gebruik Arduino, ADXL335 versnellingsmeter en RF transmitter-receiver paar.Wij zullen de hele robot verdeel in 3 delen de zender, de ontvanger en de robot.De verschillende gebaren die zijn toegewezen aan de richting va
Hoe maak je een belemmering voor het vermijden van Arduino Robot! "Mijn Robot V1"

Hoe maak je een belemmering voor het vermijden van Arduino Robot! "Mijn Robot V1"

Dit instructable toont stappen instructies voor het maken van een obstakel te vermijden met behulp van Arduino robot.Laat aan de slagmijn bloghttp://robot4pro.blogspot.com/p/My-robots.htmlStap 1: Benodigde materialenHier is alles wat die je wilt make
Robot Arm Arduino App

Robot Arm Arduino App

We hadden behoefte aan een platform voor het testen van onze nieuwe MICILE / Arduino gebruikersinterface. De robot hand en arm leek iets complex genoeg om echt het concept een uitgebreide training. Het project konden we gebruik van een MICILE Tablet,
Gebruik van Arduino Remote Control Bot t.v Remote

Gebruik van Arduino Remote Control Bot t.v Remote

Dit is een afstandsbediening Arduino Bot die kan worden bediend met elke afstandsbediening die gewone.Het belangrijkste kenmerk van dit project is een IR ontvanger TSOP1738, waarmee we kunnen gebruik maken van de knoppen van een gewone afstandsbedien
WireBeings Bèta: een 3D Printed en uitbreidbaar Robot voor Arduino met Android controle

WireBeings Bèta: een 3D Printed en uitbreidbaar Robot voor Arduino met Android controle

http://wirebeings.com/Bekijk de video hier:Dit is een mooi project waaraan u blijven kunt werken op en wijzigen naarmate je meer Arduino projecten leert. Dit Instructable doorloopt de volledige bouwen voor de bluetooth toegelaten robot in de eerste h
Obstakel te vermijden Robot met arduino

Obstakel te vermijden Robot met arduino

OBSTAKEL - VERMIJDEN ROBOTEen obstakel te vermijden ROBOT is een die kan een obstakel te vermijden met behulp van ultrasone sensor en navigeren in haar eigen pad. Met een breadboard gekoppeld aan de robot kunt u plezier spelen binnen een korte period
RC zender voor USB-Gamepad met behulp van Arduino

RC zender voor USB-Gamepad met behulp van Arduino

Waarom moet ik dit doen?Als het gaat om vliegen RC vliegtuigen die gebruikmaakt van een simulator kunnen zijn een geweldige manier om je vaardigheden tijdens het laagseizoen of zelfs voor te bereiden voor uw eerste vlucht. Het grote nadeel aan het ge