(w / Video) Fundamentele Arduino Robot, lichte Seeker! (4 / 8 stap)

Stap 4: Integratie van licht sensoren deel 2


Na zwaaien je handen voor de lichte sensoren en kijken ze veranderen in waarde, zult u merken wanneer de lichtsensor minder licht, detecteert de Sensor waarde zal stijgen, en wanneer meer licht wordt gedetecteerd, de Sensor waarde zal dalen. Dit komt doordat de Sensor in weerstand vermindert wanneer een helder licht wordt gedetecteerd. Wanneer er minder weerstand tegen over van de LDR twee leidt, zal de analoge input pin begin te lezen van een signaal van de grond, of iets dicht bij. Wanneer de de LDR krijgt minder licht, het verzet tegen de grond zal toenemen en meer elektriciteit naar de analoge zullen vloeien uit het pullup weerstand die is verbonden met + 5v pin.

Door persoonlijke voorkeur graag ik de analogRead() functioneren terugkeer 0(min) als de lichtsensor is donker en 1023(max) als het fel licht detecteert. We kunnen het oplossen van dit probleem met behulp van de software. Er zijn geen veranderingen in het circuit.

In deze sectie van code:

SensorLeft = analogRead(LeftSensor);
delay(1);

We kunnen toevoegen:

SensorLeft = 1023 - analogRead(LeftSensor);
delay(1);

Dit zal aftrekken wat waarde de analogRead() functie geeft als resultaat door 1023 (dat is de max waarde die het kan retourneren.)
Op deze manier zal het omkeren wat ooit de analogRead() geeft als resultaat de waarde.
Bijvoorbeeld, als de waarde van analogRead() x

x = 0
Sensor-waarde = 1023 - x
Sensor-waarde = 1023-0
Sensor-waarde = 1023

x = 1023
Sensor-waarde = 1023 - x
Sensor-waarde = 1023-1023
Sensor-waarde = 0

Deze methode kan worden gebruikt voor het omkeren van een willekeurige waarde, zolang je weet de maximale waarde die wordt geretourneerd.
Bijvoorbeeld, als een sensor geeft een maximum van 255:
Val = 255 - sensor waarde

Deze code uploaden naar de Arduino board en test het uit.

Code kopiëren vanaf dit punt:

/****************************************************************************************************************
-Programma voor het lezen van de twee LDRs
* gemaakt door: Anuj
* (c) copyright
*
*
* Fysieke installatie:
* Twee LDRs aangesloten op grond en analoge pin 1(Right) en analoge pin 2(left)
*
*
******************************************************************************************************************/
Met behulp van de Arduino Duemilinove

PIN definities - hecht een variabele aan een pin.
Const int RightMotor = 2; Deze pin wordt gebruikt om in- of uitschakelen van de juiste motor. Verbonden aan de basis van een NPN-transistor.
Const int LeftMotor = 3; Deze pin wordt gebruikt om in- of uitschakelen van de linker motor. Verbonden aan de basis van een NPN-transistor.
Const int RightSensor = 1; Deze pin wordt gebruikt om te lezen van de waarde van de recht-Sensor.
Const int LeftSensor = 2; Deze pin wordt gebruikt om de waarde van de Sensor links lezen.

Variabele definities

int SensorLeft; Deze slaat de waarde van de pin van de Sensor van de links te gebruiken later in de schets
int SensorRight; Deze slaat de waarde van de pin van de Sensor van het recht gebruik later in de schets

de Setup-methode wordt uitgevoerd zodra wanneer het programma wordt uitgevoerd. Wanneer de
Arduino wordt teruggesteld, de Setup wordt opnieuw uitgevoerd.

VOID Setup {}

pinMode (LeftSensor, INPUT); Hiermee definieert u deze pin als input. De Arduino leest waarden uit deze pin.
pinMode (RightSensor, INPUT); Hiermee definieert u deze pin als input. De Arduino leest waarden uit deze pin.
digitalWrite (A1, hoge); Maakt een interne pullup weerstand
digitalWrite (A2, hoge); Maakt een interne pullup weerstand
Serial.begin(9600); Kan een seriële verbinding met behulp van de Arduino USB of UART (pinnen 0 & 1). Merk op dat de baud-rate is ingesteld op 9600
Serial.println ("\nReading lichtsensoren."); Aan het eind van de void setup zo geplaatst dat het is loopt eenmaal, vlak voor de void loop
}

de loop-methode wordt uitgevoerd over en weer,
zolang de Arduino macht heeft

void loop {}
SensorLeft = analogRead(LeftSensor); Dit leest de waarde van de sensor, dan slaat het op het bijbehorende gehele getal.
delay(1); de vertraging kan de analoog naar digitaal converter IC te herstellen voor de volgende lezing.
SensorRight = analogRead(RightSensor); Dit leest de waarde van de sensor, dan slaat het op het bijbehorende gehele getal.
delay(1); de vertraging kan de analoog naar digitaal converter IC te herstellen voor de volgende lezing.

Dit gedeelte van de schets wordt gebruikt voor het afdrukken van de waarden van de
sensoren door middel van seriële naar de computer. Nuttig voor het bepalen van
Als de sensoren werken en als de code ook goed werkt.
Dit staat bekend als de foutopsporing.

Serial.Print ("Sensor links ="); De tekst binnen de aanhalingstekens wordt afgedrukt.
Serial.Print(SensorLeft); Wordt de waarde van de Sensor links afgedrukt.
Serial.Print("\t"); Wordt een tabblad (spatie) afgedrukt.
Serial.Print ("Sensor rechts ="); De tekst binnen de aanhalingstekens wordt afgedrukt.
Serial.Print(SensorRight); Drukt de waarde van de recht-Sensor.
Serial.Print("\n"); Wordt een nieuwe lijn afgedrukt immers de nodige gegevens worden weergegeven.
}

Kopieer niet om het even wat voorbij dit punt.

Nu moeten we sensoren te gebruiken met onze robot, maar we zijn nog niet helemaal klaar. We moeten een manier om deze waarden te vergelijken. Met alleen deze waarden, kunnen we bepalen of een sensor is het lezen van een meer of minder waarde dan de andere sensor, of als ze zijn precies hetzelfde.

Nu, vanwege de vele andere factoren, zoals de kleine verschillen in de productie van de LDR, jitter, EMI, enz., de waarden voor de lichtsensor zal zelden zijn precies hetzelfde. Dus in plaats daarvan, kunnen we gebruiken een ander geheel getal om te bepalen of ze ongeveer zijn hetzelfde. We kunnen dit bereiken met behulp van de berekening van het verschil tussen de twee lichtsensoren. We kunnen het aftrekken van de waarde van een sensor met de waarde van de andere sensor en dan het vinden van de absolute waarde van de sensor. Dit zal het verschil van de twee sensoren en we kunnen die onmiddellijk gebruik of bewaart het aan een ander geheel getal, in het geval dat we nodig hebben om het te gebruiken meer dan eens. De verkoopcommissie kan worden gebruikt om te bepalen als de sensoren twee verschillende waarden aan het lezen bent, of als ze zijn enigszins vergelijkbaar. Hoe hoger de waarde, hoe hoger het verschil. Met behulp van een if statement, kan ik zeggen, als de sensoren waarden binnen 100 stappen van elkaar, dit doen.

Als (SensorDifference < = 100) {}
Dit uit te voeren.
}

Meeliften uit onze vorige code die nog moet worden uitgevoerd op de Arduino board,
We kunnen het gebruiken van twee gehele getallen bevat de waarde van de sensoren om calculcate het verschil en sla het op een nieuw geheel.

De nieuwe code ziet er zo uit. De wijzigingen zijn vetgedrukt.

/****************************************************************************************************************
-Programma voor het lezen van de twee LDRs
* gemaakt door: Anuj
* (c) copyright
*
*
* Fysieke installatie:
* Twee LDRs aangesloten op grond en analoge pin 1(Right) en analoge pin 2(left)
*
*
******************************************************************************************************************/
Met behulp van de Arduino Duemilinove

PIN definities - hecht een variabele aan een pin.
Const int RightMotor = 2; Deze pin wordt gebruikt om in- of uitschakelen van de juiste motor. Verbonden aan de basis van een NPN-transistor.
Const int LeftMotor = 3; Deze pin wordt gebruikt om in- of uitschakelen van de linker motor. Verbonden aan de basis van een NPN-transistor.
Const int RightSensor = 1; Deze pin wordt gebruikt om te lezen van de waarde van de recht-Sensor.
Const int LeftSensor = 2; Deze pin wordt gebruikt om de waarde van de Sensor links lezen.

Variabele definities

int SensorLeft; Deze slaat de waarde van de pin van de Sensor van de links te gebruiken later in de schets
int SensorRight; Deze slaat de waarde van de pin van de Sensor van het recht gebruik later in de schets
int SensorDifference; / / deze waarde wordt gebruikt om te bepalen van het verschil tussen de linker- en

de Setup-methode wordt uitgevoerd zodra wanneer het programma wordt uitgevoerd. Wanneer de
Arduino wordt teruggesteld, de Setup wordt opnieuw uitgevoerd.

VOID Setup {}

pinMode (LeftSensor, INPUT); Hiermee definieert u deze pin als input. De Arduino leest waarden uit deze pin.
pinMode (RightSensor, INPUT); Hiermee definieert u deze pin als input. De Arduino leest waarden uit deze pin.
digitalWrite (A1, hoge); Maakt een interne pullup weerstand
digitalWrite (A2, hoge); Maakt een interne pullup weerstand
Serial.begin(9600); Kan een seriële verbinding met behulp van de Arduino USB of UART (pinnen 0 & 1). Merk op dat de baud-rate is ingesteld op 9600
Serial.println ("\nReading lichtsensoren."); Aan het eind van de void setup zo geplaatst dat het is loopt eenmaal, vlak voor de void loop
}

de loop-methode wordt uitgevoerd over en weer,
zolang de Arduino macht heeft

void loop {}
SensorLeft = analogRead(LeftSensor); Dit leest de waarde van de sensor, dan slaat het op het bijbehorende gehele getal.
delay(1); de vertraging kan de analoog naar digitaal converter IC te herstellen voor de volgende lezing.
SensorRight = analogRead(RightSensor); Dit leest de waarde van de sensor, dan slaat het op het bijbehorende gehele getal.
delay(1); de vertraging kan de analoog naar digitaal converter IC te herstellen voor de volgende lezing.

SensorDifference = abs(SensorRight = SensorLeft);

Dit gedeelte van de schets wordt gebruikt voor het afdrukken van de waarden van de
sensoren door middel van seriële naar de computer. Nuttig voor het bepalen van
Als de sensoren werken en als de code ook goed werkt.
Dit staat bekend als de foutopsporing.

Serial.Print ("Sensor links ="); De tekst binnen de aanhalingstekens wordt afgedrukt.
Serial.Print(SensorLeft); Wordt de waarde van de Sensor links afgedrukt.
Serial.Print("\t"); Wordt een tabblad (spatie) afgedrukt.
Serial.Print ("Sensor rechts ="); De tekst binnen de aanhalingstekens wordt afgedrukt.
Serial.Print(SensorRight); Drukt de waarde van de recht-Sensor.
Serial.print("\t"); / / wordt afgedrukt op een tabblad (spatie).
Serial.print ("Sensor verschil ="); Wordt de tekst binnen de aanhalingstekens afgedrukt.
Serial.Print(SensorDifference);
Serial.Print("\n"); Wordt een nieuwe lijn afgedrukt immers de nodige gegevens worden weergegeven.
}

Gerelateerde Artikelen

RC auto naar autonome Arduino Robot

RC auto naar autonome Arduino Robot

Hebt u ooit gewenst om te bouwen van een eenvoudige autonome Arduino robot? Ik werd geïnspireerd om het bouwen van een fundamentele Arduino robot om te helpen mijn begrip van de Arduino, de Arduino IDE, en de werking van de ultrasone sensoren en moto
Ben - een licht volgende Breadboard Arduino Robot

Ben - een licht volgende Breadboard Arduino Robot

Ben het licht volgende Breadboard Arduino Robot is de tweede robot die ik gemaakt heb om te helpen robotica aan middelbare scholieren in een klasse die ik vrijwillig leren onderwijzen. De eerste robot heeft ook zijn eigen Instructable die kan hier wo
Maken van een Arduino gecontroleerd licht-volgende bloem Bot

Maken van een Arduino gecontroleerd licht-volgende bloem Bot

In dit project van Arduino gebaseerde, maakt u een "biomimetische," of biologie-geïnspireerde, bloem die een lichtbron volgt. U heeft waarschijnlijk gezien dit probleem in uw kamerplanten! Planten vereisen zonlicht te groeien en bloeien, en &quo
Arduino Robot V2 (snel) ook stem gecontroleerde

Arduino Robot V2 (snel) ook stem gecontroleerde

Dit is mijn tweede versie van mijn arduino robot na 'Build uw eerste robot'. Mijn tweede versie is enigszins ingewikkeld in vergelijking met mijn ene maar biedt betere mogelijkheden. In dit instructable ga ik om u te tonen hoe het bouwen van een snel
RC Truck aan Arduino Robot w / meerdere sensoren

RC Truck aan Arduino Robot w / meerdere sensoren

dit instructable heeft betrekking op de omzetting van een RC vrachtwagen in een gecontroleerde Arduino robot. Mijn bedoeling toen begin van dit project was A) om meer te leren over Arduino en programmering B) bouwen een betrouwbare low-cost platform
Arduino gecontroleerd licht dimmer

Arduino gecontroleerd licht dimmer

Waarschuwing: Sommige mensen proberen om dit met een optocoupler met zerocrossing coz rechts "dat is beter"? Sommigen horen zelfs in elektronicawinkels, het is beter om te gebruiken dergelijke een optocoupler. VERKEERDE. Dit werkt alleen met een
James - uw eerste Arduino Robot

James - uw eerste Arduino Robot

voor meer Tutorials van robotica, zie mijn website hier: http://www.duino-robotics.com/Voor geweldige video's over robots en 3D printen gaan hier: http://www.youtube.com/channel/UC340dy5bmr6sLpyRh5qYwrgBewerken:Dank u zo veel iedereen om voor James i
Arduino Robot voor de laagste kosten

Arduino Robot voor de laagste kosten

MIJ ZIEN OP DE NYC MAKER FAIRE!Het begon allemaal met dit:Arduino Robot uitdaging: Hoe goedkoop kunt u een robot met behulp van een Arduino voor 5e klassers maken?Ik hoop dat dit instructable een bepaalde elegantie toe aan haar eenvoud heeft en zal u
Tyco RC Arduino Robot

Tyco RC Arduino Robot

wilde Maak je eigen robot, maar kon niet veroorloven de fancy H-Bridge IC's of uw eigen PCB etch? Wil je een snelle en vuile methode van het maken van uw eigen wielen robot? Vervolgens u bent in geluk, maar als je wilt om uw eigen robot wielen en een
Arduino Robot Tutorial

Arduino Robot Tutorial

Ik zocht de Instructable database naar een tutorial voor de officiële Arduino Robot, maar ik kon niet vinden een! Zo gek ik deze tutorial om anderen die hulp met hun nieuwe Arduino Robot een tikkeltje nodig beetje te helpen.Stap 1: Instellen van uw R
Johnny5 Arduino Robot DfRobotshop rover met afstandsbediening html interface

Johnny5 Arduino Robot DfRobotshop rover met afstandsbediening html interface

In deze post ik stap voor stap uitleggen hoe ik het opbouwen van een Arduino Robot gebaseerd en programmeren met Javascript. Ik uitleggen welke ontwerpkeuzen ik gemaakt, welke kaders en technologieën die ik gebruikt en hoe ik program en de robot geco
Gids voor beginners aan de opbouw van de Arduino robots met Bluetooth en Android

Gids voor beginners aan de opbouw van de Arduino robots met Bluetooth en Android

In deze tutorial gaan we om te gaan over het bouwen van een Arduino robot die kan worden aangestuurd via bluetooth met een Android telefoon/tablet. Dit is een beginnersgids die gaat kort over het proces van bedrading en programmeren van uw robot.Stap
Eenvoudige 3D afgedrukt Arduino Robot

Eenvoudige 3D afgedrukt Arduino Robot

Wie niet wil om een robot te bouwen? Als een kind droomde ik robots te bouwen. Nu, iedereen van elke leeftijd met slechts een beetje kennis kan bouwen met een eenvoudige robot! Ik zal u tonen hoe dat te doen.De RobotDeze robot heeft een 3D gedrukte c
Temperatuur opnemen Arduino Robot

Temperatuur opnemen Arduino Robot

mijn zoon en ik maakte een kleine arduino robot die temperatuur registreert. Hij wilde me tot het opstellen van een robot, ik wilde om te experimenteren met knipperende LEDs doorgeven van gegevens, zodat een plan was uitgekomen. De manier waarop het