Stap 7: Definitieve Code
* Programma voor een eenvoudige lichte zoeken Robot.
* gemaakt door: Anuj
* (c) copyright
*
* Robotic base moet omvat differentiële aandrijving.
*
* Fysieke installatie:
* Twee LDRs aangesloten op grond en analoge pin 1(Right) en analoge pin 2(left)
* basis van NPN-Transistors op pinnen 11(right) en 12(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 links en rechts
de Setup-methode wordt uitgevoerd zodra wanneer het programma wordt uitgevoerd. Wanneer de
Arduino wordt teruggesteld, de Setup wordt opnieuw uitgevoerd.
VOID Setup {}
pinMode (LeftMotor, uitvoer); Hiermee definieert u deze pin als uitgang. De Arduino zal schrijf waarden aan deze pin.
pinMode (RightMotor, uitvoer); Hiermee definieert u deze pin als uitgang. De Arduino zal schrijf waarden aan deze pin.
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 ("\nBeginning-licht op zoek naar gedrag"); 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 = 1023 - analogRead(LeftSensor); Dit leest de waarde van de sensor, dan slaat het op het bijbehorende gehele getal.
delay(1);
SensorRight = 1023 - analogRead(RightSensor); Dit leest de waarde van de sensor, dan slaat het op het bijbehorende gehele getal.
delay(1);
SensorDifference = abs (SensorLeft - SensorRight); Dit berekent het verschil tussen de twee sensoren en slaat het op een geheel getal.
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.
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 een tabblad (spatie) afgedrukt.
Dit gedeelte van de schets is wat interperets eigenlijk de gegevens en voert de motoren dienovereenkomstig.
Als (SensorLeft > SensorRight & & SensorDifference > 75) {/ / Dit is geïnterpreteerd alsof de linker sensor meer leest licht dan de rechts-Sensor, dit doen:
digitalWrite (RightMotor, hoge); Dit wordt gebruikt voor linksaf. Aankondiging van de
digitalWrite (LeftMotor, laag); tegenover motor loopt naar linksaf.
Serial.println("left"); Dit drukt links wanneer de robot zou eigenlijk linksaf.
}
Als (SensorLeft < SensorRight & & SensorDifference > 75) {/ / Dit is geïnterpreteerd alsof de linker sensor minder leest licht dan de rechts-Sensor, dit doen:
digitalWrite (RightMotor, laag); Dit wordt gebruikt om turn Right. Aankondiging van de
digitalWrite (LeftMotor, hoge); tegenover motor loopt naar rechts.
Serial.println("right"); Dit drukt recht wanneer de robot zou eigenlijk turn Right.
}
else if (SensorDifference < 75) {/ / Dit is geïnterpreteerd alsof het verschil tussen de twee sensoren onder 125 (Experiment is aan onze sensoren), dit doen:
digitalWrite (RightMotor, hoge); Dit wordt gebruikt om rechtdoor. Aankondiging
digitalWrite (LeftMotor, hoge); beide motoren zijn ingeschakeld om vooruit te gaan.
Serial.println("Forward"); Dit drukt Forward wanneer de robot eigenlijk vooruit zou gaan.
}
Serial.Print("\n");
}