Eğitimler
RobotPictureBrowser
Robot yardımıyla kendi galeri / resim şovunuzu yapabilirsiniz. SD karta bazı resimler koyun, taslağı başlatın ve LCD'de gösterildiğini görebilirsiniz. Önceki veya sonraki görüntüye gitmek için D-pad üzerindeki sol ve sağ düğmelerini kullanın. "Eğim navigasyonu" moduna girmek için yukarı veya aşağı düğmesine basın.
Gerekli Donanım
- Arduino Robotu
- SD karttaki bazı resimler
Talimat
- Örneği yükleyin. Güç için USB'yi takılı tutabilirsiniz.
- Başlangıç ekranından sonra çizim ile ilgili bazı talimatlar göreceksiniz.
- Galeriden bir resim ekranda görünecektir.
- Resimler arasında gezinmek için sol / sağ / orta tuşlarına basın
- Modu değiştirmek için yukarı / aşağı düğmesine basın, geçerli modun ekranın üstünde görüntülendiğini göreceksiniz.
- Eğim kontrol modunda galeride gezinmek için robotunuzu döndürün.
- Kendi resimlerinizi eklemek istiyorsanız, bunları 128 * 160, 24 bit bmp yapın. Bunları " PicN .bmp" olarak adlandırın (burada N, 1-9 arasında bir sayıdır) ve sd karta kopyalayın.
- Program yalnızca 10 resim, Pic0.bmp - Pic9.bmp'yi destekler. Daha fazla eklemek ister misiniz? Programı kendiniz geliştirin!
Denemek
Sol ve sağ düğmelerle resimlere göz atın
Görüntü gezinme modunu aşağı düğmesine basarak değiştirebilir ve bir sonraki resmi kontrol etmek için robotu eğebilirsiniz.
Robotu yatırarak resimlere göz atın
Kod
/* Picture Browser
You can make your own gallery/picture show with the
Robot. Put some pictures on the SD card, start the
sketch, they will diplay on the screen.
Use the left/right buttons to navigate through the
previous and next images.
Press up or down to enter a mode where you change
the pictures by rotating the robot.
You can add your own pictures onto the SD card, and
view them in the Robot's gallery!
Pictures must be uncompressed BMP, 24-bit color depth,
160 pixels wide, and 128 pixels tall.
They should be named as "picN.bmp". Replace 'N' with a
number between 0 and 9.
The current code only supports 10 pictures. How would you
improve it to handle more?
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>
const int NUM_PICS = 4; //Total number of pictures in Gallery
// name the modes
const int CONTROL_MODE_KEY = 0;
const int CONTROL_MODE_COMPASS = 1;
char buffer[] = "pic1.bmp"; // current file name
int i = 1; // Current gallery sequence counter
int mode = 0; // Current mode
// text to display on screen
char modeNames[][9] = { "keyboard", "tilt " };
void setup() {
// initialize the Robot, SD card, display, and speaker
Robot.beginSD();
Robot.beginTFT();
Robot.begin();
// draw "lg0.bmp" and "lg1.bmp" on the screen
Robot.displayLogos();
// draw init3.bmp from the SD card on the screen
Robot.drawBMP("init3.bmp", 0, 0);
// display instructions
Robot.stroke(0, 0, 0);
Robot.text("The gallery\n\n has 2 modes, in\n keyboard mode, L/R\n key for switching\n pictures, U/D key\n for changing modes", 5, 5);
delay(6000);
Robot.clearScreen();
Robot.drawBMP("pb.bmp", 0, 0);
Robot.text("In tilt mode,\n quickly tilt the\n robot to switch\n pictures", 5, 5);
delay(4000);
}
void loop() {
buffer[3] = '0' + i; // change filename of the img to be displayed
Robot.drawBMP(buffer, 0, 0); // draw the file on the screen
// change control modes
switch (mode) {
case CONTROL_MODE_COMPASS:
compassControl(3);
break;
case CONTROL_MODE_KEY:
keyboardControl();
break;
}
delay(200);
}
void keyboardControl() {
//Use buttons to control the gallery
while (true) {
int keyPressed = Robot.keyboardRead(); // read the button values
switch (keyPressed) {
case BUTTON_LEFT: // display previous picture
if (--i < 1) {
i = NUM_PICS;
}
return;
case BUTTON_MIDDLE: // do nothing
case BUTTON_RIGHT: // display next picture
if (++i > NUM_PICS) {
i = 1;
}
return;
case BUTTON_UP: // change mode
changeMode(-1);
return;
case BUTTON_DOWN: // change mode
changeMode(1);
return;
}
}
}
// if controlling by the compass
void compassControl(int change) {
// Rotate the robot to change the pictures
while (true) {
// read the value of the compass
int oldV = Robot.compassRead();
//get the change of angle
int diff = Robot.compassRead() - oldV;
if (diff > 180) {
diff -= 360;
} else if (diff < -180) {
diff += 360;
}
if (abs(diff) > change) {
if (++i > NUM_PICS) {
i = 1;
}
return;
}
// chage modes, if buttons are pressed
int keyPressed = Robot.keyboardRead();
switch (keyPressed) {
case BUTTON_UP:
changeMode(-1);
return;
case BUTTON_DOWN:
changeMode(1);
return;
}
delay(10);
}
}
// Change the control mode and display it on the LCD
void changeMode(int changeDir) {
// alternate modes
mode += changeDir;
if (mode < 0) {
mode = 1;
} else if (mode > 1) {
mode = 0;
}
// display the mode on screen
Robot.fill(255, 255, 255);
Robot.stroke(255, 255, 255);
Robot.rect(0, 0, 128, 12);
Robot.stroke(0, 0, 0);
Robot.text("Control:", 2, 2);
Robot.text(modeNames[mode], 52, 2);
delay(1000);
}
You can make your own gallery/picture show with the
Robot. Put some pictures on the SD card, start the
sketch, they will diplay on the screen.
Use the left/right buttons to navigate through the
previous and next images.
Press up or down to enter a mode where you change
the pictures by rotating the robot.
You can add your own pictures onto the SD card, and
view them in the Robot's gallery!
Pictures must be uncompressed BMP, 24-bit color depth,
160 pixels wide, and 128 pixels tall.
They should be named as "picN.bmp". Replace 'N' with a
number between 0 and 9.
The current code only supports 10 pictures. How would you
improve it to handle more?
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>
const int NUM_PICS = 4; //Total number of pictures in Gallery
// name the modes
const int CONTROL_MODE_KEY = 0;
const int CONTROL_MODE_COMPASS = 1;
char buffer[] = "pic1.bmp"; // current file name
int i = 1; // Current gallery sequence counter
int mode = 0; // Current mode
// text to display on screen
char modeNames[][9] = { "keyboard", "tilt " };
void setup() {
// initialize the Robot, SD card, display, and speaker
Robot.beginSD();
Robot.beginTFT();
Robot.begin();
// draw "lg0.bmp" and "lg1.bmp" on the screen
Robot.displayLogos();
// draw init3.bmp from the SD card on the screen
Robot.drawBMP("init3.bmp", 0, 0);
// display instructions
Robot.stroke(0, 0, 0);
Robot.text("The gallery\n\n has 2 modes, in\n keyboard mode, L/R\n key for switching\n pictures, U/D key\n for changing modes", 5, 5);
delay(6000);
Robot.clearScreen();
Robot.drawBMP("pb.bmp", 0, 0);
Robot.text("In tilt mode,\n quickly tilt the\n robot to switch\n pictures", 5, 5);
delay(4000);
}
void loop() {
buffer[3] = '0' + i; // change filename of the img to be displayed
Robot.drawBMP(buffer, 0, 0); // draw the file on the screen
// change control modes
switch (mode) {
case CONTROL_MODE_COMPASS:
compassControl(3);
break;
case CONTROL_MODE_KEY:
keyboardControl();
break;
}
delay(200);
}
void keyboardControl() {
//Use buttons to control the gallery
while (true) {
int keyPressed = Robot.keyboardRead(); // read the button values
switch (keyPressed) {
case BUTTON_LEFT: // display previous picture
if (--i < 1) {
i = NUM_PICS;
}
return;
case BUTTON_MIDDLE: // do nothing
case BUTTON_RIGHT: // display next picture
if (++i > NUM_PICS) {
i = 1;
}
return;
case BUTTON_UP: // change mode
changeMode(-1);
return;
case BUTTON_DOWN: // change mode
changeMode(1);
return;
}
}
}
// if controlling by the compass
void compassControl(int change) {
// Rotate the robot to change the pictures
while (true) {
// read the value of the compass
int oldV = Robot.compassRead();
//get the change of angle
int diff = Robot.compassRead() - oldV;
if (diff > 180) {
diff -= 360;
} else if (diff < -180) {
diff += 360;
}
if (abs(diff) > change) {
if (++i > NUM_PICS) {
i = 1;
}
return;
}
// chage modes, if buttons are pressed
int keyPressed = Robot.keyboardRead();
switch (keyPressed) {
case BUTTON_UP:
changeMode(-1);
return;
case BUTTON_DOWN:
changeMode(1);
return;
}
delay(10);
}
}
// Change the control mode and display it on the LCD
void changeMode(int changeDir) {
// alternate modes
mode += changeDir;
if (mode < 0) {
mode = 1;
} else if (mode > 1) {
mode = 0;
}
// display the mode on screen
Robot.fill(255, 255, 255);
Robot.stroke(255, 255, 255);
Robot.rect(0, 0, 128, 12);
Robot.stroke(0, 0, 0);
Robot.text("Control:", 2, 2);
Robot.text(modeNames[mode], 52, 2);
delay(1000);
}
[Kodu Al]