Intellekten Edison - Robot (10 / 12 steg)
Steg 10: kod
Ladda upp koden du behöver Arduino IDE med Intel Edison Anslut, koden laddas återfinns nedan. Den Intel Edison Plugin kan installeras från Arduino IDE styrelsen manager genom att installera Intel x86 paketet. Kontrollera att du har valde rätt hamnen samtidigt ladda upp koden till styrelsen.
#include
Servo servoMain;
float härda;
int tempPin = 0;
int r_motor_n = 4; PWM kontroll rätt Motor-
int r_motor_p = 5; PWM kontroll rätt Motor +
int l_motor_p = 6; 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);
}
}