IMG_0496

Hej!
Så nästa steg var att koppla in alla delarna, jag valde att löda fast så att dom inte lossnar lika lätt.
Men det går med en lödningsfri breadboard med.
Jag satte fast sensorerna med med vanligt varmlim.
Sensorerna måste vara riktade åt rätt håll och rätt vinkel.
Jag riktade sensorerna lite för lågt vilket gjorde att bilen svängde när golvet var ojämt, så gör inte det. :)
Det sitter en liten röd rund grej på styrmotorn, klipp bort den med en tång.
(det är en diod som gör att strömmen bara kan gå åt ett håll men det behöver ni inte).
Vidare så monterade jag ett 9v batteri baktill på bilen för att driva arduinon.
Men använde batterierna som satt i bilen från början för att driva motorerna.
Sedan laddade jag upp koden och så var det bara att låta den köra.
Nedan följer en skiss över hur det var kopplat och koden att skicka över till arduinon. UltrasonicCar_bb
————————————————————————–
#include <NewPing.h>

const int trigPin1 = 2;
const int echoPin1 = 3;
const int trigPin2 = 4;
const int echoPin2 = 5;
const int trigPin3 = 6;
const int echoPin3 = 7;
int motor1Pin1 = 12; // pin 2 on L293D
int motor1Pin2 = 11; // pin 7 on L293D
int motor2Pin1 = 10; // pin 15 on L293D
int motor2Pin2 = 9; // pin 10 on L293D
int enablePin = 13; // pin 1 on L293D
int enablePin2 = 8; // pin 9 on L293D

void setup() {

Serial.begin(9600);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(enablePin, OUTPUT);
pinMode(enablePin2, OUTPUT);

digitalWrite(enablePin, HIGH);
digitalWrite(enablePin2, HIGH);
}

void loop()
{
long duration1, cm1;
pinMode(trigPin1, OUTPUT);
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
pinMode(echoPin1, INPUT);
duration1 = pulseIn(echoPin1, HIGH);
cm1 = microsecondsToCentimeters(duration1);

if (cm1 > 70) {
cm1 = 70;
}

Serial.print(cm1);
Serial.print(“cm1″);
Serial.print(“Right”);
Serial.println();
delay(100);

long duration2, cm2;
pinMode(trigPin2, OUTPUT);
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
pinMode(echoPin2, INPUT);
duration2 = pulseIn(echoPin2, HIGH);
cm2 = microsecondsToCentimeters(duration2);

if (cm2 > 70) {
cm2 = 70;
}

Serial.print(cm2);
Serial.print(“cm2″);
Serial.print(“Forward”);
Serial.println();
delay(100);

long duration3, cm3;
pinMode(trigPin3, OUTPUT);
digitalWrite(trigPin3, LOW);
delayMicroseconds(2);
digitalWrite(trigPin3, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin3, LOW);
pinMode(echoPin3, INPUT);
duration3 = pulseIn(echoPin3, HIGH);
cm3 = microsecondsToCentimeters(duration3);

if (cm3 > 70) {
cm3 = 70;
}

Serial.print(cm3);
Serial.print(“cm3″);
Serial.print(“Left”);
Serial.println();
delay(100);

// Left??
if (cm3 > 50) {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
Serial.print(“Left”);
Serial.println();
delay (300);
}

// Right??
if (cm1 < 50) {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
Serial.print(“Right”);
Serial.println();
delay (300);
}

// Back
if (cm2 < 40) {
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
Serial.print(“Back”);
Serial.println();
delay (300);
}

// Forward??
if (cm2 > 40) {
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
Serial.print(“Forward”);
Serial.println();
delay (300);
}

digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);

}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;

}

————————————————————————–
Jag hoppas att ni kunde titta och lära er av detta och om ni har frågor så är det bara att maila så ska jag nog kunna hjälpa.
MVH Ruben