Eğitimler
RobotRemoteControl
Bu örnek deneysel olarak kabul edilir, çalışması için IDE'nize Ken Shirriff tarafından IR-Remote kitaplığını yüklemeniz gerekir, daha fazla bilgi için kodu okuyun
Robota bir IR uzaktan alıcı bağlarsanız, onu TV setinizi kontrol etmek gibi kontrol edebilirsiniz. Sony uyumlu bir uzaktan kumanda alın, bazı düğmeleri farklı eylemlerle eşleştirin ve robotun dokunmadan hareket etmesini sağlayabilirsiniz!
Gerekli Donanım
- Arduino Robotu
- Kızılötesi sensör
- sensörü bağlamak için kablo
- Sony uyumlu uzaktan kumanda
Talimat
- IR sensörünü, verilen kabloyu kullanarak üst karttaki TKD2'ye bağlayın.
- Sensörü tahtaya sabitleyin
- Örneği yükleyin, USB'yi çıkarın ve gücü açın
- Başlangıç ekranından sonra komutları göndermek için uzaktan kumandayı kullanın
- Robotu hareket ettirmek için kodladığınız düğmelere basın.
- LCD'de alınan sinyalleri ve komutları (tanınıyorsa) görebilirsiniz.
- Komutlarınızı özelleştirmek istiyorsanız:
- Uzaktan kumandadaki düğmelere basın ve LCD'de gösterilen değerleri yazın.
- Örnek kodda şu satırları bulun:
#define IR_CODE_FORWARD 0x2C9B
#define IR_CODE_BACKWARDS 0x6C9B
#define IR_CODE_TURN_LEFT 0xD4B8F
#define IR_CODE_TURN_RIGHT 0x34B8F - Buradaki değerleri ekranda gördüğünüz değerlerle değiştirin.
Denemek
Uzaktan kumandayı robotla kullanma
Kod
/* 08 Remote Control
If you connect a IR receiver to the robot,
you can control it like a RC car.
Using the remote control comes with sensor
pack, You can make the robot move around
without even touching it!
Circuit:
* Arduino Robot
* Connect the IRreceiver to D2
* Remote control from Robot sensor pack
based on the IRremote library
by Ken Shirriff
http://arcfn.com
created 1 May 2013
by X. Yang
modified 12 May 2013
by D. Cuartielles
This example is in the public domain
*/
// include the necessary libraries
#include <RobotIRremote.h>
#include <RobotIRremoteTools.h>
#include <ArduinoRobot.h>
#include <Wire.h>
// Define a few commands from your remote control
#define IR_CODE_FORWARD 284154405
#define IR_CODE_BACKWARDS 284113605
#define IR_CODE_TURN_LEFT 284129925
#define IR_CODE_TURN_RIGHT 284127885
#define IR_CODE_CONTINUE -1
bool isActing = false; //If the robot is executing command from remote
long timer;
const long TIME_OUT = 150;
void setup() {
// initialize the Robot, SD card, display, and speaker
Serial.begin(9600);
Robot.begin();
Robot.beginTFT();
Robot.beginSD();
// print some text to the screen
beginIRremote(); // Start the receiver
}
void loop() {
// if there is an IR command, process it
if (IRrecived()) {
processResult();
resumeIRremote(); // resume receiver
}
//If the robot does not receive any command, stop it
if (isActing && (millis() - timer >= TIME_OUT)) {
Robot.motorsStop();
isActing = false;
}
}
void processResult() {
unsigned long res = getIRresult();
switch (res) {
case IR_CODE_FORWARD:
changeAction(1, 1); //Move the robot forward
break;
case IR_CODE_BACKWARDS:
changeAction(-1, -1); //Move the robot backwards
break;
case IR_CODE_TURN_LEFT:
changeAction(-0.5, 0.5); //Turn the robot left
break;
case IR_CODE_TURN_RIGHT:
changeAction(0.5, -0.5); //Turn the robot Right
break;
case IR_CODE_CONTINUE:
timer = millis(); //Continue the last action, reset timer
break;
}
}
void changeAction(float directionLeft, float directionRight) {
Robot.motorsWrite(255 * directionLeft, 255 * directionRight);
timer = millis();
isActing = true;
}
If you connect a IR receiver to the robot,
you can control it like a RC car.
Using the remote control comes with sensor
pack, You can make the robot move around
without even touching it!
Circuit:
* Arduino Robot
* Connect the IRreceiver to D2
* Remote control from Robot sensor pack
based on the IRremote library
by Ken Shirriff
http://arcfn.com
created 1 May 2013
by X. Yang
modified 12 May 2013
by D. Cuartielles
This example is in the public domain
*/
// include the necessary libraries
#include <RobotIRremote.h>
#include <RobotIRremoteTools.h>
#include <ArduinoRobot.h>
#include <Wire.h>
// Define a few commands from your remote control
#define IR_CODE_FORWARD 284154405
#define IR_CODE_BACKWARDS 284113605
#define IR_CODE_TURN_LEFT 284129925
#define IR_CODE_TURN_RIGHT 284127885
#define IR_CODE_CONTINUE -1
bool isActing = false; //If the robot is executing command from remote
long timer;
const long TIME_OUT = 150;
void setup() {
// initialize the Robot, SD card, display, and speaker
Serial.begin(9600);
Robot.begin();
Robot.beginTFT();
Robot.beginSD();
// print some text to the screen
beginIRremote(); // Start the receiver
}
void loop() {
// if there is an IR command, process it
if (IRrecived()) {
processResult();
resumeIRremote(); // resume receiver
}
//If the robot does not receive any command, stop it
if (isActing && (millis() - timer >= TIME_OUT)) {
Robot.motorsStop();
isActing = false;
}
}
void processResult() {
unsigned long res = getIRresult();
switch (res) {
case IR_CODE_FORWARD:
changeAction(1, 1); //Move the robot forward
break;
case IR_CODE_BACKWARDS:
changeAction(-1, -1); //Move the robot backwards
break;
case IR_CODE_TURN_LEFT:
changeAction(-0.5, 0.5); //Turn the robot left
break;
case IR_CODE_TURN_RIGHT:
changeAction(0.5, -0.5); //Turn the robot Right
break;
case IR_CODE_CONTINUE:
timer = millis(); //Continue the last action, reset timer
break;
}
}
void changeAction(float directionLeft, float directionRight) {
Robot.motorsWrite(255 * directionLeft, 255 * directionRight);
timer = millis();
isActing = true;
}
[Kodu Al]