Arduino Robot V2 (snabb) också röst kontrollerat (10 / 11 steg)
Steg 10: kod
Koden finns i bilagor. Känn dig fri att ändra koden men bara lämna en kommentar om vad du kom med den.
Koden
#include
Servo servoMain;
float härda;
int tempPin = 0;
int r_motor_n = 2; PWM kontroll rätt Motor-
int r_motor_p = 4; PWM kontroll rätt Motor +
int l_motor_p = 5; PWM kontroll vänster Motor +
int l_motor_n = 7. PWM kontroll vänster Motor-
int aktiverar = 3;
int ljus = 9.
int enable2 = 6; PWM KONTROLL HASTIGHET
int ET1 = 0; PWM controll hastighet
int incomingByte = 0; för inkommande seriella data
#include
#define TRIGGER_PIN 12 / / Arduino PIN-kod knuten till utlösa pin på ultrasonic sensor.
#define ECHO_PIN 11 / / Arduino PIN-kod knuten till echo pin på ultrasonic sensor.
#define MAX_DISTANCE 200 / / maximalt avstånd vi vill skicka ping (i centimeter). Maximal sensorn avståndet är dimensionerade för 400-500cm.
NewPing sonar (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); NewPing inställning av stift och maximalt avstånd.
void setup()
{
servoMain.attach(10);
pinMode (r_motor_n, produktionen); Ställa in kontroll stiften att utgångar
pinMode (r_motor_p, produktionen);
pinMode (l_motor_p, produktionen);
pinMode (l_motor_n, produktionen);
pinMode (aktiverar, OUTPUT);
pinMode (enable2, produktionen);
pinMode (ljus, OUTPUT);
digitalWrite (r_motor_n, låg); kvitta båda motorer för start
digitalWrite (r_motor_p, låg);
digitalWrite (l_motor_p, låg);
digitalWrite (l_motor_n, låg);
digitalWrite (aktivera, låg);
digitalWrite (enable2, låg);
digitalWrite (ljus, hög);
Serial.BEGIN(9600);
Serial.Print ("Whats up im ATOM, laddade upp!!! \n");
Serial.Print ("w = framåt \n");
Serial.Print ("s = bakåt \n");
Serial.Print ("d = rätt \n");
Serial.Print ("en = vänster \n");
Serial.Print ("f = stopp \n");
Serial.Print ("lame freaks robotteknik").
}
void loop()
{
om (Serial.available() > 0) {
Läs den inkommande byten:
incomingByte = Serial.read();
}
Switch(incomingByte)
{
fallet ": / / kontroll för att stoppa roboten
digitalWrite (r_motor_n, låg); Ställa in motor riktning, 1 låg, 2 låg
digitalWrite (r_motor_p, låg);
digitalWrite (l_motor_p, låg);
digitalWrite (l_motor_n, låg);
analogWrite (aktivera, 0);
analogWrite (enable2, 0);
Serial.println("Stop\n");
incomingByte ='* ';
bryta;
"R" i mål: //control för rätt
digitalWrite (r_motor_n, hög); Ställa in motor riktning, 1 hög, 2 låg
digitalWrite (r_motor_p, låg);
digitalWrite (l_motor_p, hög);
digitalWrite (l_motor_n, låg);
analogWrite (aktivera, ET1);
analogWrite (enable2, speed1);
Serial.println("right\n");
incomingByte ='* ';
bryta;
ärende 'L': //control för vänster
digitalWrite (r_motor_n, låg); Ställa in motor riktning, 1 låg, 2 hög
digitalWrite (r_motor_p, hög);
digitalWrite (l_motor_p, låg);
digitalWrite (l_motor_n, hög);
analogWrite (aktivera, ET1);
analogWrite (enable2, speed1);
Serial.println("left\n");
incomingByte ='* ';
bryta;
ärende 'F': //control för framåt
digitalWrite (r_motor_n, hög); Ställa in motor riktning, 1 hög, 2 hög
digitalWrite (r_motor_p, låg);
digitalWrite (l_motor_p, låg);
digitalWrite (l_motor_n, hög);
analogWrite (aktivera, ET1);
analogWrite (enable2, speed1);
Serial.println("forward\n");
incomingByte ='* ';
bryta;
ärende 'B': //control för bakåt
digitalWrite (r_motor_n, låg); Ställa in motor riktning, 1 låg, 2 låg
digitalWrite (r_motor_p, hög);
digitalWrite (l_motor_p, hög);
digitalWrite (l_motor_n, låg);
analogWrite (aktivera, ET1);
analogWrite (enable2, speed1);
Serial.println("backwards\n");
incomingByte ='* ';
bryta;
fallet "f":
digitalWrite (r_motor_n, låg); Ställa in motor riktning, 1 låg, 2 låg
digitalWrite (r_motor_p, låg);
digitalWrite (l_motor_p, låg);
digitalWrite (l_motor_n, låg);
analogWrite (aktivera, 0);
analogWrite (enable2, 0);
Serial.println("Stop\n");
incomingByte ='* ';
bryta;
fall skulle ":
digitalWrite (r_motor_n, hög); Ställa in motor riktning, 1 hög, 2 låg
digitalWrite (r_motor_p, låg);
digitalWrite (l_motor_p, hög);
digitalWrite (l_motor_n, låg);
analogWrite (aktivera, ET1);
analogWrite (enable2, speed1);
Serial.println("right\n");
incomingByte ='* ';
bryta;
fallet "a":
digitalWrite (r_motor_n, låg); Ställa in motor riktning, 1 låg, 2 hög
digitalWrite (r_motor_p, hög);
digitalWrite (l_motor_p, låg);
digitalWrite (l_motor_n, hög);
analogWrite (aktivera, ET1);
analogWrite (enable2, speed1);
Serial.println("left\n");
incomingByte ='* ';
bryta;
fallet "w":
digitalWrite (r_motor_n, hög); Ställa in motor riktning, 1 hög, 2 hög
digitalWrite (r_motor_p, låg);
digitalWrite (l_motor_p, låg);
digitalWrite (l_motor_n, hög);
analogWrite (aktivera, ET1);
analogWrite (enable2, speed1);
Serial.println("forward\n");
incomingByte ='* ';
bryta;
fallet ":
digitalWrite (r_motor_n, låg); Ställa in motor riktning, 1 låg, 2 låg
digitalWrite (r_motor_p, hög);
digitalWrite (l_motor_p, hög);
digitalWrite (l_motor_n, låg);
analogWrite (aktivera, ET1);
analogWrite (enable2, speed1);
Serial.println("backwards\n");
incomingByte ='* ';
bryta;
fallet "r": / / servo vinklar
servoMain.write(0);
bryta;
't i mål ":
servoMain.write(45);
bryta;
fall "y":
servoMain.write(90);
bryta;
fallet "u":
servoMain.write(135);
bryta;
fallet "i":
servoMain.write(180);
bryta;
fallet "o-: / / PWM hastighet värden
ET1 = 0;
bryta;
fall '1':
ET1 = 155;
bryta;
fallet "2":
ET1 = 165;
bryta;
fallet "3":
ET1 = 175;
bryta;
fallet "4":
ET1 = 185;
bryta;
fallet "5":
ET1 = 195;
bryta;
fallet "6":
ET1 = 205;
bryta;
fallet "7":
ET1 = 215.
bryta;
fallet "8":
ET1 = 225;
bryta;
fall '9':
ET1 = 235.
bryta;
fallet "q":
ET1 = 255;
bryta;
fallet är ":
Temp = analogRead(tempPin); Läs temperaturen
Temp = temp * 0.48828125;
Serial.Print ("TEMPRATURE =");
Serial.Print(temp);
Serial.Print("*C");
Serial.println();
Delay(1000);
bryta;
"p" i mål: / / tid till ping thr ultasonic sensor
Delay(50); Vänta 50 ms mellan pingmeddelandena (ca 20 ping/SEK). 29ms bör vara den kortaste fördröjningen mellan pingar.
unsigned int oss = sonar.ping(); Skicka ping, ping tid i mikrosekunder (oss) att få.
Serial.Print ("Ping:");
Serial.Print(US / US_ROUNDTRIP_CM); Konvertera ping tid till avståndet i cm och utskriftsresultatet (0 = utanför förutbestämd distans intervall)
Serial.println("cm");
bryta;
Delay(5000);
}
}
Stödja mig och rösta, om jag vinner jag garanterar dig att du skulle se massor av projekt som detta och om du har några problem känner gratis till PM mig.