Eğitimler
RobotLogo
Bu çizim size Robot ile temel hareketi gösterir. Çizim başladığında, robotun hareket etmesini istediğiniz yönü belirtmek için kontrol panelindeki düğmelere basın. Sıralamanızı girdikten sonra (her seferinde 20 adıma kadar), hafızadaki adımları kaydetmek için orta düğmeye basın. Programladığınız talimatları takip etmesi için robotunuzu yere koyun.
Gerekli Donanım
- Arduino Robotu
Talimat
- Örneği yükleyin, USB'yi çıkarın ve gücü açın
- Robotu, hareket edebilmesi için açık bir yere, zemine yerleştirin.
- Ekrandaki görüntüleri başlattıktan sonra robot sizden komut eklemenizi isteyecektir.
- Robotun nasıl hareket etmesini istediğinize göre düğmelere basın; komutlar daha sonra depolanacak ve yürütülecektir.
- Sol, robotu 90 derece sola çevirir, sağ ise sağa çevirir. Yukarı robotun 1 saniye ileri, aşağı 1 saniye geri gitmesini sağlar.
- Komutları tamamladıktan sonra orta düğmeye basın. Robot komutları sırayla yürütmeye başlayacaktır. Robot en fazla 20 komutu hatırlayacaktır. Hepsini doldurursanız, orta düğmeye basmadan önce robot çalışmaya başlayacaktır.
- Diziyi çalıştırdıktan sonra robot 3. adıma dönecektir. Komutlarınızı ayarlayın ve tekrar yapın!
Denemek
D pedindeki hareketleri programlayın
Hareket sırasını tekrarlayın
Kod
İlk olarak, kodu satır satır açıklayın
/* Robot Logo
This sketch demonstrates basic movement of the Robot.
When the sketch starts, press the on-board buttons to tell
the robot how to move. Pressing the middle button will
save the pattern, and the robot will follow accordingly.
You can record up to 20 commands. The robot will move for
one second per command.
This example uses images on an SD card. It looks for
files named "lg0.bmp" and "lg1.bmp" and draws them on the
screen.
Circuit:
* Arduino Robot
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>
int commands[20]; // array for storing commands
void setup() {
// initialize the Robot, SD card, and display
Robot.begin();
Robot.beginTFT();
Robot.beginSD();
// draw "lg0.bmp" and "lg1.bmp" on the screen
Robot.displayLogos();
}
void loop() {
Robot.drawBMP("intro.bmp", 0, 0); //display background image
iniCommands(); // remove commands from the array
addCommands(); // add commands to the array
delay(1000); // wait for a second
executeCommands(); // follow orders
Robot.stroke(0, 0, 0);
Robot.text("Done!", 5, 103); // write some text to the display
delay(1500); // wait for a moment
}
// empty the commands array
void iniCommands() {
for (int i = 0; i < 20; i++) {
commands[i] = -1;
}
}
// add commands to the array
void addCommands() {
Robot.stroke(0, 0, 0);
// display text on the screen
Robot.text("1. Press buttons to\n add commands.\n\n 2. Middle to finish.", 5, 5);
// read the buttons' state
for (int i = 0; i < 20;) { //max 20 commands
int key = Robot.keyboardRead();
if (key == BUTTON_MIDDLE) { //finish input
break;
} else if (key == BUTTON_NONE) { //if no button is pressed
continue;
}
commands[i] = key; // save the button to the array
PrintCommandI(i, 46); // print the command on the screen
delay(100);
i++;
}
}
// run through the array and move the robot
void executeCommands() {
// print status to the screen
Robot.text("Excuting...", 5, 70);
// read through the array and move accordingly
for (int i = 0; i < 20; i++) {
switch (commands[i]) {
case BUTTON_LEFT:
Robot.turn(-90);
break;
case BUTTON_RIGHT:
Robot.turn(90);
break;
case BUTTON_UP:
Robot.motorsWrite(255, 255);
break;
case BUTTON_DOWN:
Robot.motorsWrite(-255, -255);
break;
case BUTTON_NONE:
return;
}
// print the current command to the screen
Robot.stroke(255, 0, 0);
PrintCommandI(i, 86);
delay(1000);
// stop moving for a second
Robot.motorsStop();
delay(1000);
}
}
// convert the button press to a single character
char keyToChar(int key) {
switch (key) {
case BUTTON_LEFT:
return '<';
case BUTTON_RIGHT:
return '>';
case BUTTON_UP:
return '^';
case BUTTON_DOWN:
return 'v';
}
}
// display a command
void PrintCommandI(int i, int originY) {
Robot.text(keyToChar(commands[i]), i % 14 * 8 + 5, i / 14 * 10 + originY);
}
This sketch demonstrates basic movement of the Robot.
When the sketch starts, press the on-board buttons to tell
the robot how to move. Pressing the middle button will
save the pattern, and the robot will follow accordingly.
You can record up to 20 commands. The robot will move for
one second per command.
This example uses images on an SD card. It looks for
files named "lg0.bmp" and "lg1.bmp" and draws them on the
screen.
Circuit:
* Arduino Robot
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>
int commands[20]; // array for storing commands
void setup() {
// initialize the Robot, SD card, and display
Robot.begin();
Robot.beginTFT();
Robot.beginSD();
// draw "lg0.bmp" and "lg1.bmp" on the screen
Robot.displayLogos();
}
void loop() {
Robot.drawBMP("intro.bmp", 0, 0); //display background image
iniCommands(); // remove commands from the array
addCommands(); // add commands to the array
delay(1000); // wait for a second
executeCommands(); // follow orders
Robot.stroke(0, 0, 0);
Robot.text("Done!", 5, 103); // write some text to the display
delay(1500); // wait for a moment
}
// empty the commands array
void iniCommands() {
for (int i = 0; i < 20; i++) {
commands[i] = -1;
}
}
// add commands to the array
void addCommands() {
Robot.stroke(0, 0, 0);
// display text on the screen
Robot.text("1. Press buttons to\n add commands.\n\n 2. Middle to finish.", 5, 5);
// read the buttons' state
for (int i = 0; i < 20;) { //max 20 commands
int key = Robot.keyboardRead();
if (key == BUTTON_MIDDLE) { //finish input
break;
} else if (key == BUTTON_NONE) { //if no button is pressed
continue;
}
commands[i] = key; // save the button to the array
PrintCommandI(i, 46); // print the command on the screen
delay(100);
i++;
}
}
// run through the array and move the robot
void executeCommands() {
// print status to the screen
Robot.text("Excuting...", 5, 70);
// read through the array and move accordingly
for (int i = 0; i < 20; i++) {
switch (commands[i]) {
case BUTTON_LEFT:
Robot.turn(-90);
break;
case BUTTON_RIGHT:
Robot.turn(90);
break;
case BUTTON_UP:
Robot.motorsWrite(255, 255);
break;
case BUTTON_DOWN:
Robot.motorsWrite(-255, -255);
break;
case BUTTON_NONE:
return;
}
// print the current command to the screen
Robot.stroke(255, 0, 0);
PrintCommandI(i, 86);
delay(1000);
// stop moving for a second
Robot.motorsStop();
delay(1000);
}
}
// convert the button press to a single character
char keyToChar(int key) {
switch (key) {
case BUTTON_LEFT:
return '<';
case BUTTON_RIGHT:
return '>';
case BUTTON_UP:
return '^';
case BUTTON_DOWN:
return 'v';
}
}
// display a command
void PrintCommandI(int i, int originY) {
Robot.text(keyToChar(commands[i]), i % 14 * 8 + 5, i / 14 * 10 + originY);
}
[Kodu Al]
See Also
- begin()
- beginTFT()
- motorsWrite()
- turn()
- keyboardRead()