Arduino Robot die menselijke vermijdt (3 / 3 stap)

Stap 3: De code

Gedetailleerde werking van de ultrasone afstandssensor kon worden gevonden in het HC_SR04- gegevensblad.

De code die wordt gebruikt in deze robot is echt eenvoudig. In de hoofdlus (loop()), het meten van de afstand door het aanroepen van de functie getDistance().

Als de afstand tussen de robot en het obstakel (in dit geval, mijn handen) te sluiten (zeg 10cm), de robot in terugwaartse richting voor 300 milliseconden en willekeurig zet links of rechts voor een andere 200 milliseconden.

 void loop() { distance = getDistance(); Serial.print("Distance = "); Serial.print(distance); Serial.println("cm"); if (distance < 10) { robotBackward(300); if (random(2)==0) { robotRight(200); } else { robotLeft(200); } } robotStop(50); } 

Hier is hoe de 'getDistance()' werk functioneren:

 float getDistance() { digitalWrite(TRIGGER_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIGGER_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGGER_PIN, LOW); return ( pulseIn(ECHO_PIN, HIGH) *0.017); } 

Het stuurt een stijgende rand op "Trig" pin door het eerste verzenden van lage en gevolgd door HIGH. Na 10 micro-seconden verlaagt het het "Trig" signaal opnieuw. Dit maakt de sensor afgeven van ultrasone pulsen. Later controleert het de echo weerspiegeld door de obstakels. Als het obstakel dichter is, kost het minder tijd om te ontvangen van de echos. Aan de andere kant, als het obstakel is ver weg, duurt het meer tijd om te wachten op de echos. De sensor een hoge puls aan "Echo" pin afgeven en de pulsbreedte gelijk aan de vertraging van de heen-en terugreis van de ultrasone pulsen (in microseconden).

Aangezien de snelheid van het geluid 340 meter/seconde is, de afstand kan worden berekend door D = 0. 5 * pulse_width * 340 m/s * 1e-6

Het volledige programma staat hier:

pinnen controller motoren #define motor1_pos 3 #define motor1_neg 10 #define motor2_pos 6 #define motor2_neg 9 #define motor_en A2 #define TRIGGER_PIN 15 / / (A1) Arduino pin gebonden aan pin op de ultrasone sensor te activeren. #define ECHO_PIN 14 / / (A0) Arduino pin gebonden aan echo pin op de ultrasone sensor. float afstand; void setup {Serial.begin(57600); setupMotor();} // pins controller motors #define motor1_pos 3 #define motor1_neg 10 #define motor2_pos 6 #define motor2_neg 9 #define motor_en A2 #define TRIGGER_PIN 15 // (A1) Arduino pin tied to trigger pin on the ultrasonic sensor. #define ECHO_PIN 14 // (A0) Arduino pin tied to echo pin on the ultrasonic sensor. float distance; void setup() { Serial.begin(57600); setupMotor(); } void loop() { distance = getDistance(); Serial.print("Distance = "); Serial.print(distance); Serial.println("cm"); if (distance < 10) { robotBackward(300); if (random(2)==0) { robotRight(200); } else { robotLeft(200); } } robotStop(50); } void setupMotor() { pinMode(motor1_pos,OUTPUT); pinMode(motor1_neg,OUTPUT); pinMode(motor2_pos,OUTPUT); pinMode(motor2_neg,OUTPUT); pinMode(motor_en,OUTPUT); enableMotor(); robotStop(50); } //----------------------------------------------------------------------------------------------------- // Ultrasonic Distance Sensor //----------------------------------------------------------------------------------------------------- float getDistance() { digitalWrite(TRIGGER_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIGGER_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGGER_PIN, LOW); return ( pulseIn(ECHO_PIN, HIGH) *0.017); } //----------------------------------------------------------------------------------------------------- // motor //----------------------------------------------------------------------------------------------------- void enableMotor() { //Turn on the motor driver chip : L293D digitalWrite(motor_en, HIGH); } void disableMotor() { //Turn off the motor driver chip : L293D digitalWrite(motor_en, LOW); } void robotStop(int ms){ digitalWrite(motor1_pos, LOW); digitalWrite(motor1_neg, LOW); digitalWrite(motor2_pos, LOW); digitalWrite(motor2_neg, LOW); delay(ms); } void robotForward(int ms){ digitalWrite(motor1_pos, HIGH); digitalWrite(motor1_neg, LOW); digitalWrite(motor2_pos, HIGH); digitalWrite(motor2_neg, LOW); delay(ms); } void robotBackward(int ms){ digitalWrite(motor1_pos, LOW); digitalWrite(motor1_neg, HIGH); digitalWrite(motor2_pos, LOW); digitalWrite(motor2_neg, HIGH); delay(ms); } void robotRight(int ms){ digitalWrite(motor1_pos, LOW); digitalWrite(motor1_neg, HIGH); digitalWrite(motor2_pos, HIGH); digitalWrite(motor2_neg, LOW); delay(ms); } void robotLeft(int ms){ digitalWrite(motor1_pos, HIGH); digitalWrite(motor1_neg, LOW); digitalWrite(motor2_pos, LOW); digitalWrite(motor2_neg, HIGH); delay(ms); } VOID setupMotor() {pinMode(motor1_pos,OUTPUT); pinMode(motor1_neg,OUTPUT); pinMode(motor2_pos,OUTPUT); pinMode(motor2_neg,OUTPUT); pinMode(motor_en,OUTPUT); enableMotor(); robotStop(50);} / /---/ / ultrasone afstandssensor / /---

Gerelateerde Artikelen

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
Arduino Robot (geïmproviseerde) dwalen

Arduino Robot (geïmproviseerde) dwalen

Dit is een tutorial over hoe te maken van een Arduino robot die zal wonder rond en vermijd muren en andere obstakels. Het is een zeer eenvoudig om te doen ands voor beginners en om te leren van hen en hun in robotica is gebaseerd, het is leuk om te d
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
LDRs + Arduino = een eenvoudige robot die het licht kan voelen!

LDRs + Arduino = een eenvoudige robot die het licht kan voelen!

Een LDR is een Light Dependent Resistor en heeft vele toepassingen, bijvoorbeeld een photocel dat wanneer de lichten van uw huis kunt schakelen zijn donker buiten.Een interessante manier om te begrijpen hoe het werkt is het lezen van haar waarden met
Regel die volgt op Arduino Robot

Regel die volgt op Arduino Robot

Deze robot gebruikt een algoritme van de Vermogenssturing PID te autonoom volgen een zwarte track op een witte achtergrond. Het wordt een matrix van acht IR reflectie sensoren gebruikt om te bepalen van de positie van de robot op de regel, en de Ardu
3-fingered Arduino robot hand

3-fingered Arduino robot hand

IntroIn dit instructable zal ik de basics van het bouwen van je eigen robot hand, bestuurd door een arduino uitleggen.De hand maakt gebruik van een handschoen, uitgerust met flex-sensoren die uw handbewegingen zal vangen. De handbewegingen zal worden
Wallbots: Autonome magnetische Robots die Traverse verticale oppervlakken

Wallbots: Autonome magnetische Robots die Traverse verticale oppervlakken

dit Instructable zal je leren hoe te maken van magnetische robots die doorkruisen van verticale oppervlakken. Deze robots kunnen verplaatsen op een metalen wanden, met inbegrip van liften, whiteboards, koelkasten of metalen deuren.De robots zijn uitg
Arduino Robot bijgehouden

Arduino Robot bijgehouden

Dit Instructable zal u tonen hoe te bouwen van een robot bijgehouden Arduino bestuurde.De inhoud is als volgt georganiseerd:Sourcing onderdelen: Alle nodige onderdelen hebben opgesteld, evenals middelen hun specificaties en koppelingen naar waar de o
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
4WD alle terrein Arduino Robot voor iedereen

4WD alle terrein Arduino Robot voor iedereen

Ik heb altijd graag robots die zich in ruw terrein verplaatsen kunnen. Deze keer heb ik besloten dat ik zal gebruik maken van kant en klare chassis enigszins wijzigen en het toevoegen van een paar extra onderdelen. Met behulp van een klaar chassis ko
Arduino Robot Arm

Arduino Robot Arm

ik had beloofd in een vorige post te delen met u een arduino robot arm project op een later tijdstip. Nou, is die datum vandaag! Echter, in plaats van een joystick gebruikt om te controleren de arduino robotarm, I 'm gonna vooraf het programma van de
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
Arduino Robot Arm barman

Arduino Robot Arm barman

Wilt u wel eens een robot die kan pop uit de schoten? De toekomst van feesten is hier met de Robot Arm barman! Serveren drankjes in stijl, en maak indruk op uw gasten met de druk op de knop! Dit project maakt gebruik van een RobotGeek Snapper Arm met
(w / Video) Fundamentele Arduino Robot, lichte Seeker!

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

Vele malen heb ik Googled voor "Arduino Robot" in de hoop het vinden van een robot te bouwen. Ik uiteindelijk vinden vele versies van een obstakel vermijden robot die gebruikmaakt van hetzij een infrarood of een sonar Bereikindicatie sensor gemo