Eğitimler
RobotRescue
Robotikteki kurtarma zorluğu, robotunuzun bir görevi yerine getireceği bir konuma ulaşıncaya kadar bir çizgiyi takip etmesini sağlamaktır. Bu durumda, robot bir engele çıkarır, yoldan çeker ve devam eder.
Gerekli Donanım
- Arduino Robotu
- Büyük kağıt
- Kalın siyah işaretleyici
- Boş kutular veya çok ağır olmayan oyuncaklar gibi engeller
- "mağdur" nesneler
Talimat
- Parkuru hazırlamak için aşağıdaki örnekte verilen talimatları izleyin. Birkaç fark var:
- Robotun durması için bazı bitiş çizgileri ekleyin. Satırda bir boşluk oluşturun ve boşluktaki robotun boyutu hakkında bir dikdörtgen çizin.
- "Kurban" nesnesini dikdörtgenin içine koyun.
- Örneği yükleyin, USB'yi çıkarın ve gücü açın.
- Robotu yolda, hatta koyun.
- Robot çizgiyi takip etmeye başlayacak ve kurbanı bulunduğu yerden itecektir.
- Robot çizgiyi iyi takip etmiyorsa , kalibrasyonla ilgili ayrıntılar için lineFollowConfig () öğesine bakın.
Denemek
İlk olarak, yarış pistinizi çizin ve robotun engellerin nerede olacağını bilmesi için duraklar (dik çizgiler) ekleyin.
Yarış parkurunuzu tasarlamak için bir işaretleyici kullanın
Engellerinizi piste yerleştirin. Robot, boş soda kutuları veya küçük plastik oyuncaklar gibi bazı engelleri zorlayabilir.
Engelleri yerleştirin
Robotu piste koyun ve meydan okumayı çözüp çözemeyeceğini görmek için açın.
Robotu çalıştır
Bir engelin önünde robot yavaşlar, nesneyi itmeye başlar, yedeklenir ve tekrar yarışmaya başlar.
Robot engel bastırıyor
Kod
/* Robot Rescue
In this example, the robot enters the line following mode and
plays some music until it reaches its target. Once it finds the
target, it pushes it out of the track. It then returns to the
track and looks for a second target.
You can make the robot push as many objects as you want to, just
add more to calls to the rescue function or even move that code
into the loop.
Circuit:
* Arduino Robot
* some objects for the robot to push
* a line-following circuit
created 1 May 2013
by X. Yang
modified 12 May 2013
by D. Cuartielles
This example is in the public domain
*/
#include <ArduinoRobot.h> // include the robot library
#include <Wire.h>
void setup() {
// initialize the Robot, SD card, display, and speaker
Robot.begin();
Robot.beginTFT();
Robot.beginSD();
Robot.beginSpeaker();
// draw "lg0.bmp" and "lg1.bmp" on the screen
Robot.displayLogos();
// display the line following instructional image from the SD card
Robot.drawBMP("lf.bmp", 0, 0);
// play the chase music file
Robot.playFile("chase.sqm");
// add the instructions
Robot.text("Rescue\n\n place the robot on\n the rescue track\n pushing the\n obstacles away", 5, 5);
Robot.text("Press the middle\n button to start...", 5, 61);
Robot.waitContinue();
// start
Robot.fill(255, 255, 255);
Robot.stroke(255, 255, 255);
Robot.rect(0, 0, 128, 80); // erase the previous text
Robot.stroke(0, 0, 0);
Robot.text("Start", 5, 5);
// use this to calibrate the line following algorithm
// uncomment one or the other to see the different behaviors of the robot
// Robot.lineFollowConfig(14, 9, 50, 10);
Robot.lineFollowConfig(11, 7, 60, 5);
// run the rescue sequence
rescueSequence();
// find the track again
goToNext();
// run the rescue sequence a second time
rescueSequence();
// here you could go on ...
}
void loop() {
//nothing here, the program only runs once.
}
// run the sequence
void rescueSequence() {
//set the motor board into line-follow mode
Robot.setMode(MODE_LINE_FOLLOW);
while (!Robot.isActionDone()) { // wait until it is no longer following the line
}
delay(1000);
// do the rescue operation
doRescue();
delay(1000);
}
void doRescue() {
// Reached the endline, engage the target
Robot.motorsWrite(200, 200);
delay(250);
Robot.motorsStop();
delay(1000);
// Turn the robot
Robot.turn(90);
Robot.motorsStop();
delay(1000);
// Move forward
Robot.motorsWrite(200, 200);
delay(500);
Robot.motorsStop();
delay(1000);
// move backwards, leave the target
Robot.motorsWrite(-200, -200);
delay(500);
Robot.motorsStop();
}
void goToNext() {
// Turn the robot
Robot.turn(-90);
Robot.motorsStop();
delay(1000);
}
In this example, the robot enters the line following mode and
plays some music until it reaches its target. Once it finds the
target, it pushes it out of the track. It then returns to the
track and looks for a second target.
You can make the robot push as many objects as you want to, just
add more to calls to the rescue function or even move that code
into the loop.
Circuit:
* Arduino Robot
* some objects for the robot to push
* a line-following circuit
created 1 May 2013
by X. Yang
modified 12 May 2013
by D. Cuartielles
This example is in the public domain
*/
#include <ArduinoRobot.h> // include the robot library
#include <Wire.h>
void setup() {
// initialize the Robot, SD card, display, and speaker
Robot.begin();
Robot.beginTFT();
Robot.beginSD();
Robot.beginSpeaker();
// draw "lg0.bmp" and "lg1.bmp" on the screen
Robot.displayLogos();
// display the line following instructional image from the SD card
Robot.drawBMP("lf.bmp", 0, 0);
// play the chase music file
Robot.playFile("chase.sqm");
// add the instructions
Robot.text("Rescue\n\n place the robot on\n the rescue track\n pushing the\n obstacles away", 5, 5);
Robot.text("Press the middle\n button to start...", 5, 61);
Robot.waitContinue();
// start
Robot.fill(255, 255, 255);
Robot.stroke(255, 255, 255);
Robot.rect(0, 0, 128, 80); // erase the previous text
Robot.stroke(0, 0, 0);
Robot.text("Start", 5, 5);
// use this to calibrate the line following algorithm
// uncomment one or the other to see the different behaviors of the robot
// Robot.lineFollowConfig(14, 9, 50, 10);
Robot.lineFollowConfig(11, 7, 60, 5);
// run the rescue sequence
rescueSequence();
// find the track again
goToNext();
// run the rescue sequence a second time
rescueSequence();
// here you could go on ...
}
void loop() {
//nothing here, the program only runs once.
}
// run the sequence
void rescueSequence() {
//set the motor board into line-follow mode
Robot.setMode(MODE_LINE_FOLLOW);
while (!Robot.isActionDone()) { // wait until it is no longer following the line
}
delay(1000);
// do the rescue operation
doRescue();
delay(1000);
}
void doRescue() {
// Reached the endline, engage the target
Robot.motorsWrite(200, 200);
delay(250);
Robot.motorsStop();
delay(1000);
// Turn the robot
Robot.turn(90);
Robot.motorsStop();
delay(1000);
// Move forward
Robot.motorsWrite(200, 200);
delay(500);
Robot.motorsStop();
delay(1000);
// move backwards, leave the target
Robot.motorsWrite(-200, -200);
delay(500);
Robot.motorsStop();
}
void goToNext() {
// Turn the robot
Robot.turn(-90);
Robot.motorsStop();
delay(1000);
}
[Kodu Al]