Stap 13: Testen IR
De volgende code gebruiken om te bepalen als de IR detectie correct is ingesteld. Uploaden van de code, zet dan uw hand voor de IR LED en van de Arduino LED moet inschakelen. Wanneer u uw hand weg verplaatst moet de LED uitschakelen. (In de bovenstaande afbeelding de LED is gemarkeerd met een "L")Code:
(http://www.egrobotics.com/instructions/code/testir.ino)
#define IRsensorPin 11 VOID IR38Write() {} void loop {}
#define IRledPin 10
#define D13ledPin 13
for (int i = 0; ik < = 384; i ++) {}
digitalWrite (IRledPin, hoge);
delayMicroseconds(13);
digitalWrite (IRledPin, laag);
delayMicroseconds(13);
}
}
VOID Setup {}
pinMode (IRledPin, uitvoer);
digitalWrite (IRledPin, laag);
pinMode (D13ledPin, uitvoer);
digitalWrite (D13ledPin, laag);
}
IR38Write();
Als (digitalRead(IRsensorPin)==LOW) {}
digitalWrite (D13ledPin, hoge);
} else {}
digitalWrite (D13ledPin, laag);
}
delay(100);
}
Problemen oplossen:
Als de LED is altijd op of komt op- en uitschakelen vaak vervolgens toevoegen meer rompslomp rond het stro of plaatsen van een muur van de scheidingslijn tussen de IR LED en de IR-Sensor.
Als de LED komt niet op moet alles is verbonden en aangesloten op de juiste pinnen. Zorg ervoor dat de hoeken correct zijn. Het licht moet zitten kundig voor het object stuiteren en terug te keren naar het zwarte gedeelte van de IR-Sensor.
Deel 2
Als uw IR LED en de ontvanger correct werken is de volgende ding om te doen proberen de volgende code die de LDR zowel IR als u wilt dat de robot zoeken licht, maar bij de dezelfde tijd poging om te voorkomen dat belemmeringen die in de manier zal activeren.
Code:
(http://www.egrobotics.com/instructions/code/robotavoid.ino)
#include < Servo.h >
Servo myservo;
#define IRsensorPin 11
#define IRledPin 10
Const int RightSensor = 2;
Const int LeftSensor = 0;
int IR;
int SensorLeft;
int SensorRight;
int SensorDifference;
VOID IR38Write() {}
for (int i = 0; ik < = 384; i ++) {}
digitalWrite (IRledPin, hoge);
delayMicroseconds(13);
digitalWrite (IRledPin, laag);
delayMicroseconds(13);
}
}
VOID Setup {}
myservo.attach(5);
pinMode (IRledPin, uitvoer);
digitalWrite (IRledPin, laag);
pinMode (8, OUTPUT);
pinMode (9, OUTPUT);
pinMode (LeftSensor, INPUT);
pinMode (RightSensor, INPUT);
Serial.begin(9600);
Serial.println ("\nBeginning-licht op zoek naar gedrag");
}
void loop {}
IR38Write();
IR = digitalRead(IRsensorPin);
delay(50);
SensorLeft = 1023 - analogRead(LeftSensor);
delay(1);
SensorRight = 1023 - analogRead(RightSensor);
delay(1);
SensorDifference = abs (SensorLeft - SensorRight);
Serial.Print ("Sensor links =");
Serial.Print(SensorLeft);
Serial.Print("\t");
Serial.Print ("Sensor rechts =");
Serial.Print(SensorRight);
Serial.Print("\t");
Als (SensorLeft > SensorRight & & SensorDifference > 75 & & IR == HIGH) {}
Serial.println("left");
digitalWrite (8, hoge);
delay(250);
digitalWrite (8, laag);
delay(100);
}
Als (IR == LOW) {}
digitalWrite (8, hoge);
delay(1500);
digitalWrite (8, laag);
digitalWrite (8, laag);
delay(150);
}
Als (SensorLeft < SensorRight & & SensorDifference > 75 & & IR == HIGH) {}
digitalWrite (9, hoge);
delay(250);
digitalWrite (9, laag);
delay(100);
}
else if (SensorDifference < 75 & & IR == HIGH) {}
Serial.println("Forward");
digitalWrite (8, hoge);
digitalWrite (9, hoge);
delay(500);
digitalWrite (8, laag);
digitalWrite (9, laag);
delay(250);
}
Serial.Print("\n");
}