DUAL MODE ROBOT => (autonoma / manuell kontroll) (7 / 13 steg)
Steg 7: Koden: - för PING SENSOR
< p > const int serialPeriod = 250; en period av 250ms = en frekvens av 4 Hz < br > osignerade långa timeSerialDelay = 0; < /p >< p > const int UltraloopPeriod = 20; en period av 20ms = en frekvens på 50 Hz
osignerade UltraLoopDelay = 0; < /p >< p > const int sensor_1 = 10; indata/utdata från sensor_1
int motorL1 = 6; utgång för motorn förarens stift 2
int motorL2 = 7. utgång för motorn förarens stift 7
int motorR1 = 8; utgång för motor driver pin 15
int motorR2 = 9; utgång för motorn förarens stift 10
int d0 = 2; ingång från DTMF stift D0
int d1 = 3; ingång från DTMF stift D1
int d2 = 4; ingång från DTMF stift D2
int d3 = 5; ingång från DTMF stift D3
int ultrasonicTime; variabel för att spara tid
int ultrasonicDistance; variabel att lagra avståndet beräknas
void setup()
{
Serial.BEGIN(9600); inställningen för seriell kommunikationshastighet
pinMode (motorL1, produktionen);
pinMode (motorL2, produktionen);
pinMode (motorR1, produktionen);
pinMode (motorR2, produktionen);
pinMode (d0, ingång);
pinMode (d1, ingång);
pinMode (d2, ingång);
pinMode (d3, ingång);
} < /p >< p > void loop()
{
int z = digitalRead(d0);
int y = digitalRead(d1);
int x = digitalRead(d2);
int w = digitalRead(d3);
/*----------------------------------------- M A N U A L M O D E ---------------------------------------*/
IF(w == low)
{
om ((w == LOW) & &(x == LOW) & &(y == HIGH) & &(z == LOW))
{
digitalWrite (motorL1, hög);
digitalWrite (motorL2, låg);
digitalWrite (motorR1, hög);
digitalWrite (motorR2, låg);
}
om ((w == LOW) & &(x == HIGH) & &(y == LOW) & &(z == HIGH))
{
digitalWrite (motorL1, låg);
digitalWrite (motorL2, hög);
digitalWrite (motorR1, låg);
digitalWrite (motorR2, hög);
}
om ((w == LOW) & &(x == HIGH) & &(y == LOW) & &(z == LOW))
{
digitalWrite (motorL1, låg);
digitalWrite (motorL2, hög);
digitalWrite (motorR1, hög);
digitalWrite (motorR2, låg);
}
om ((w == LOW) & &(x == HIGH) & &(y == HIGH) & &(z == LOW))
{
digitalWrite (motorL1, hög);
digitalWrite (motorL2, låg);
digitalWrite (motorR1, låg);
digitalWrite (motorR2, hög);
}
om ((w == LOW) & &(x == HIGH) & &(y == HIGH) & &(z == HIGH))
{
digitalWrite (motorL1, låg);
digitalWrite (motorL2, låg);
digitalWrite (motorR1, låg);
digitalWrite (motorR2, låg);
}
}
/*----------------------------------- A U T O N O M O U S M O D E -----------------------------------*/
IF(w == High)
{
viewDistance();
IF((Millis() - UltraLoopDelay) > = UltraloopPeriod)
{
readUltrasonicsensor_1();
motorStart();
UltraLoopDelay = millis();
}
}
}
void readUltrasonicsensor_1() / / fuction att ta sensor_1 data och hitta avstånd
{
pinMode (sensor_1, produktionen);
digitalWrite (sensor_1, låg);
Delay(2);
digitalWrite (sensor_1, hög);
Delay(10);
digitalWrite (sensor_1, låg);
pinMode (sensor_1, ingång);
ultrasonicTime = pulseIn (sensor_1, hög);
ultrasonicDistance = (ultrasonicTime/2) / 29; beräkningen att mäta distansera av hinder från ultrasoni / / c sensor
} < /p >< p > void motorStart() //function att köra motorn enligt kände avståndet
{
IF(ultrasonicDistance > 10)
{
digitalWrite (motorL1, hög);
digitalWrite (motorL2, låg);
digitalWrite (motorR1, hög);
digitalWrite (motorR2, låg);
}
om ((irsL == HIGH) & &(irsR == LOW))
{
digitalWrite (motorL1, hög);
digitalWrite (motorL2, låg);
digitalWrite (motorR1, låg);
digitalWrite (motorR2, hög);
}
om ((irsL == LOW) & &(irsR == HIGH))
{
digitalWrite (motorL1, låg);
digitalWrite (motorL2, hög);
digitalWrite (motorR1, hög);
digitalWrite (motorR2, låg);
}
om ((irsL == HIGH) & &(irsR == HIGH))
{
digitalWrite (motorL1, låg);
digitalWrite (motorL2, hög);
digitalWrite (motorR1, låg);
digitalWrite (motorR2, hög);
}
}
IF(ultrasonicDistance < 10)
{
digitalWrite (motorL1, låg);
digitalWrite (motorL2, hög);
digitalWrite (motorR1, hög);
digitalWrite (motorR2, låg);
}
}
} < /p >< p > / *---Kontrollera ULTRSONIC sensorn---* / < /p >< p > void viewDistance() //function att Visa avstånd på serial monitor
{//to kontrollera om ultra sonic sensor koden fungerar
IF((Millis() - timeSerialDelay) > = serialPeriod)
{
Serial.Print("Distance");
Serial.Print(ultrasonicDistance);
Serial.Print("cm");
Serial.println();
timeSerialDelay = millis();
}
} < /p >