Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Si të ndërtoni një pengesë duke shmangur robotin
Hapi 1: Kutia e Zezë
hapi i parë kam përdorur një kuti të zezë si bazë për robotin tim.
Hapi 2: Arduino
Arduino është truri i të gjithë sistemit dhe orkestron motorët tanë
Hapi 3: Bashkimi i Arduino në Blackbox
Unë e bashkova arduinon në kutinë e zezë duke përdorur zam të nxehtë
Hapi 4: Sensori tejzanor
Për të krijuar një robot që mund të lëvizë vetë, ne kemi nevojë për një lloj inputi, një sensor që i përshtatet qëllimit tonë. Një sensor tejzanor është një instrument që mat distancën në një objekt duke përdorur valë zanore tejzanor. Një sensor tejzanor përdor një dhënës për të dërguar dhe marrë impulse tejzanor që transmetojnë informacione në lidhje me afërsinë e një objekti
Hapi 5: Lidhja e Breadboard e Sensorit me Arduino
Kam përdorur tela për të përcaktuar lidhjen midis dërrasës së bukës dhe arduino.
Kushtojini vëmendje që sensori juaj i pingut mund të ketë një plan urbanistik të ndryshëm të kunjave, por duhet të ketë një kunj të tensionit, kunj tokëzues, kunj trig dhe një kunj jehonë.
Hapi 6: Mburoja e motorit
Pllakat Arduino nuk mund t'i kontrollojnë motorët DC, sepse rrymat që ata prodhojnë janë shumë të ulëta. Për të zgjidhur këtë problem ne përdorim mburoja motorike. Mburoja e motorit ka 2 kanale, e cila lejon kontrollin e dy motorëve DC, ose 1 motor stepper. … Duke iu drejtuar këtyre kunjave ju mund të zgjidhni një kanal motorik për të filluar, specifikoni drejtimin e motorit (polariteti), vendosni shpejtësinë e motorit (PWM), ndaloni dhe ndizni motorin dhe monitoroni thithjen aktuale të secilit kanal
Hapi 7: Lidhni Motor Shield me Arduino
Thjesht lidhni mburojën e motorit në arduino me telat e sensorit të shtypur
Hapi 8: Lidhja e 4 motorëve dhe baterive me mburojën
Çdo Motor Shield ka (të paktën) dy kanale, një për motorët dhe një për një burim energjie, Lidhini ato në lidhje me njëri -tjetrin
Hapi 9: Programoni Robotin
ekzekutoni këtë kod
#përfshi #përfshi
Sonar NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);
AF_DC Motori motor1 (1, MOTOR12_1KHZ); AF_DC Motori motor2 (2, MOTOR12_1KHZ); AF_DCMotor motor3 (3, MOTOR34_1KHZ); AF_DC Motori motor4 (4, MOTOR34_1KHZ); Servo myservo;
#define TRIG_PIN A2 #përcakto ECHO_PIN A3 #përcakto MAX_DISTANC 150 150 #përcakto MAX_SPEED 100 #përcakto MAX_SPEED_OFFSET 10
boolean shkonPërpara = false; int distanca = 80; int speedSet = 0;
void setup () {
myservo.tash (10); myservo.shkruaj (115); vonesa (2000); distanca = lexoPing (); vonesë (100); distanca = lexoPing (); vonesë (100); distanca = lexoPing (); vonesë (100); distanca = lexoPing (); vonesë (100); }
lak void () {int distanceR = 0; int distancaL = 0; vonesa (40); nëse (distanca <= 15) {moveStop (); vonesë (50); moveBackward (); vonesa (150); moveStop (); vonesë (100); distanceR = lookRight (); vonesë (100); distanceL = lookLeft (); vonesë (100);
if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } distance = readPing (); }
int lookRight () {myservo.write (50); vonesë (250); int distance = readPing (); vonesë (50); myservo.shkruaj (100); distanca e kthimit; }
int lookLeft () {myservo.shkruaj (120); vonesë (300); int distance = readPing (); vonesë (100); myservo.shkruaj (115); distanca e kthimit; vonesë (100); }
int readPing () {vonesë (70); int cm = sonar.ping_cm (); nëse (cm == 0) {cm = 200; } cm ktheje; }
void moveStop () {motor1.run (LIRIM); motor2.run (LIRIM); motor3.run (LIRIM); motor4.run (LIRIM); } void moveForward () {
nëse (! shkonPërpara) {shkonPërpara = e vërtetë; motor1.run (PARA); motor2.run (PARA); motor3.run (PARA); motor4.run (PARA); për (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); vonesa (5); }}}
void moveBackward () {shkonForward = false; motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (BACKWARD); motor4.run (BACKWARD); për (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); vonesa (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (PARA); motor4.run (PARA); vonesë (500); motor1.run (PARA); motor2.run (PARA); motor3.run (PARA); motor4.run (PARA); }
void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (PARA); motor4.run (PARA); vonesë (500); motor1.run (PARA); motor2.run (PARA); motor3.run (PARA); motor4.run (PARA); }