Stap 10: Code
De code kan worden gevonden in de bijlagen. Voel je vrij om de code te wijzigen maar verlaat enkel een commentaar op wat u kwam met het.
Code
#include
Servo servoMain;
float temp;
int tempPin = 0;
int r_motor_n = 2; PWM-controle Motor recht-
int r_motor_p = 4; PWM-controle recht Motor +
int l_motor_p = 5; PWM-controle Motor links +
int l_motor_n = 7; PWM-controle Motor links-
int inschakelen = 3;
int licht = 9;
int enable2 = 6; PWM-CONTROLE-SNELHEID
int speed1 = 0; PWM-controle-snelheid
int incomingByte = 0; voor binnenkomende seriële gegevens
#include
#define TRIGGER_PIN 12 / / Arduino pin gebonden aan pin op de ultrasone sensor te activeren.
#define ECHO_PIN 11 / / Arduino pin gebonden aan echo pin op de ultrasone sensor.
#define MAX_DISTANCE 200 / / maximale afstand die wij wilt pingen voor (in centimeters). Maximale sensor afstand wordt begroot op 400-500cm.
NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); NewPing installatie van pennen en maximale afstand.
VOID Setup
{
servoMain.attach(10);
pinMode (r_motor_n, OUTPUT); Besturingselement instellen pinnen te worden uitgangen
pinMode (r_motor_p, OUTPUT);
pinMode (l_motor_p, OUTPUT);
pinMode (l_motor_n, OUTPUT);
pinMode (inschakelen, uitvoer);
pinMode (enable2, OUTPUT);
pinMode (lichtopbrengst,);
digitalWrite (r_motor_n, laag); beide motoren verrekening voor start-up
digitalWrite (r_motor_p, laag);
digitalWrite (l_motor_p, laag);
digitalWrite (l_motor_n, laag);
digitalWrite (inschakelen, laag);
digitalWrite (enable2, laag);
digitalWrite (light, hoge);
Serial.begin(9600);
Serial.Print ("Whats up im atoom, afgestemd!!! \n");
Serial.Print ("w = vooruit \n");
Serial.Print ("s = achterwaarts \n");
Serial.Print ("d = juiste \n");
Serial.Print ("een = linker \n");
Serial.Print ("f = Stop \n");
Serial.Print ("lame freaks robotics");
}
void loop
{
Als (Serial.available() > 0) {}
Lees de binnenkomende byte:
incomingByte = Serial.read();
}
switch(incomingByte)
{
geval van ': / / control om te stoppen met de robot
digitalWrite (r_motor_n, laag); Motor richting, 1 laag, 2 laag instellen
digitalWrite (r_motor_p, laag);
digitalWrite (l_motor_p, laag);
digitalWrite (l_motor_n, laag);
analogWrite (inschakelen, 0);
analogWrite (enable2, 0);
Serial.println("Stop\n");
incomingByte ='* ';
breken;
kast 'R': //control voor recht
digitalWrite (r_motor_n, hoge); Motor richting, 1 hoog, 2 laag instellen
digitalWrite (r_motor_p, laag);
digitalWrite (l_motor_p, hoge);
digitalWrite (l_motor_n, laag);
analogWrite (inschakelen, speed1);
analogWrite (enable2, speed1);
Serial.println("right\n");
incomingByte ='* ';
breken;
geval 'L': //control voor links
digitalWrite (r_motor_n, laag); Motor richting, 1 laag, 2 hoog instellen
digitalWrite (r_motor_p, hoge);
digitalWrite (l_motor_p, laag);
digitalWrite (l_motor_n, hoge);
analogWrite (inschakelen, speed1);
analogWrite (enable2, speed1);
Serial.println("left\n");
incomingByte ='* ';
breken;
Case "F": //control voor forward
digitalWrite (r_motor_n, hoge); Motor richting, 1 hoog, 2 hoog instellen
digitalWrite (r_motor_p, laag);
digitalWrite (l_motor_p, laag);
digitalWrite (l_motor_n, hoge);
analogWrite (inschakelen, speed1);
analogWrite (enable2, speed1);
Serial.println("forward\n");
incomingByte ='* ';
breken;
Case "B": //control voor achterwaartse
digitalWrite (r_motor_n, laag); Motor richting, 1 laag, 2 laag instellen
digitalWrite (r_motor_p, hoge);
digitalWrite (l_motor_p, hoge);
digitalWrite (l_motor_n, laag);
analogWrite (inschakelen, speed1);
analogWrite (enable2, speed1);
Serial.println("backwards\n");
incomingByte ='* ';
breken;
Case "f":
digitalWrite (r_motor_n, laag); Motor richting, 1 laag, 2 laag instellen
digitalWrite (r_motor_p, laag);
digitalWrite (l_motor_p, laag);
digitalWrite (l_motor_n, laag);
analogWrite (inschakelen, 0);
analogWrite (enable2, 0);
Serial.println("Stop\n");
incomingByte ='* ';
breken;
geval zou ':
digitalWrite (r_motor_n, hoge); Motor richting, 1 hoog, 2 laag instellen
digitalWrite (r_motor_p, laag);
digitalWrite (l_motor_p, hoge);
digitalWrite (l_motor_n, laag);
analogWrite (inschakelen, speed1);
analogWrite (enable2, speed1);
Serial.println("right\n");
incomingByte ='* ';
breken;
geval 'a':
digitalWrite (r_motor_n, laag); Motor richting, 1 laag, 2 hoog instellen
digitalWrite (r_motor_p, hoge);
digitalWrite (l_motor_p, laag);
digitalWrite (l_motor_n, hoge);
analogWrite (inschakelen, speed1);
analogWrite (enable2, speed1);
Serial.println("left\n");
incomingByte ='* ';
breken;
Case 'w':
digitalWrite (r_motor_n, hoge); Motor richting, 1 hoog, 2 hoog instellen
digitalWrite (r_motor_p, laag);
digitalWrite (l_motor_p, laag);
digitalWrite (l_motor_n, hoge);
analogWrite (inschakelen, speed1);
analogWrite (enable2, speed1);
Serial.println("forward\n");
incomingByte ='* ';
breken;
geval van ':
digitalWrite (r_motor_n, laag); Motor richting, 1 laag, 2 laag instellen
digitalWrite (r_motor_p, hoge);
digitalWrite (l_motor_p, hoge);
digitalWrite (l_motor_n, laag);
analogWrite (inschakelen, speed1);
analogWrite (enable2, speed1);
Serial.println("backwards\n");
incomingByte ='* ';
breken;
geval 'r': / / servo hoeken
servoMain.write(0);
breken;
't geval ':
servoMain.write(45);
breken;
Case 'y':
servoMain.write(90);
breken;
Case 'u':
servoMain.write(135);
breken;
Case 'i':
servoMain.write(180);
breken;
geval ' o ': / / PWM snelheid waarden
speed1 = 0;
breken;
Case '1':
speed1 = 155;
breken;
Case '2':
speed1 = 165;
breken;
Case '3':
speed1 = 175;
breken;
Case '4':
speed1 = 185;
breken;
Case '5':
speed1 = 195;
breken;
Case "6":
speed1 = 205;
breken;
Case '7':
speed1 = 215;
breken;
zaak '8':
speed1 = 225;
breken;
Case '9':
speed1 = 235;
breken;
Case "q":
speed1 = 255;
breken;
geval ben ':
Temp = analogRead(tempPin); Lees de temperatuur
temp temp = * 0.48828125;
Serial.Print ("TEMPRATUUR =");
Serial.Print(temp);
Serial.Print("*C");
Serial.println();
delay(1000);
breken;
kast 'p': / / tijd om te ping thr ultasonic sensor
delay(50); Wachten 50 MS tussen pings (ongeveer 20 pings/sec). 29ms moet de kortste wachttijd tussen pings.
unsigned int ons = sonar.ping(); Ping te sturen, ping tijd in microseconden (VS).
Serial.Print ("Ping:");
Serial.Print(US / US_ROUNDTRIP_CM); Ping tijd omzetten in afstand in cm en print resultaat (0 = buiten bepaalde afstand bereik)
Serial.println("cm");
breken;
delay(5000);
}
}
Steun mij en stemmen, als ik win ik garandeer je dat je tal van projecten zoals dit zien zou en als u eventuele problemen voelen vrij om PM mij.