Πρόγραμμα απλού τηλεχειρισμού R2
Πρόγραμμα Arduino ide 
Βιβλιοθήκες
Η συνολική δυνατότητα τηλεχειρισμού θα περιγραφεί όπως είπαμε σε επόμενη ενότητα και περιλαμβάνει την δυνατότητα χερισιμού πολλών ενεργοποιητών. Προκειμένου να αποφύγουμε περίπλοκες διαδικασίες θα περιγράψουμε προς το παρόν το απλό τηλεχειρισμό του ρομποτ με 4 επιλογές, Μπρός – Πίσω – Αριστερά – Δεξιά.
Δεν είναι ζητούμενο και παρακαλώ μην επικεντρωθείτε σε αυτό. Παρακολουθώντας το βίντεο θα κάνουμε απλά μια αντιγραφή και μια επικόλληση.
Η λογική είναι απλή. Η εφαρμογή μέσω του tablet στέλνει ένα μύνημα στο ρομπότ. Αυτό είναι ένας χαρακτήρας ανάλογα με το κουμπί που θα επιλέξουμε : U,D,L,R. Το πρόγραμμα που γράφουμε εμείς λοιπόν (Αυτό που βρίσκεται παρακάτω) οδηγεί τον Franky σε μπροστινή κίνηση με το U, πίσω κίνηση με το D κ.ο.κ.
Όλα τα παραπάνω γίνονται με μία μεταβλητή ( cmd ) που λαμβάνει την τιμή που στέλνει το tablet
cmd = Serial.read();
και με μια σύνθετη συνθήκη επιλογής If για τον καθορισμό της κίνησης.
if (cmd == ‘U’) {
moveForward();
}
else if (cmd == ‘D’) {
moveBackward();
}
else if (cmd == ‘L’) {
turnLeft();
}
else if (cmd == ‘R’) {
turnRight();
}
else if (cmd == ‘S’) {
stopMove();
Κώδικας για Manual Editing Mind+
Κατά την αντιγραφή του παρακάτω κειμένου, προσέξτε στην επιλογή σας με τον κέρσορα, προκειμένου να μην παραλείψετε κάποιον χαρακτήρα. Τους χρειαζόμαστε όλους!
/*!
* StoR23 – R2 Bluetooth Telecontrol
* Λήψη χαρακτήρα → άμεση ενέργεια
*/
#include <TB6612FNG.h>
// Αντικείμενο ελέγχου κινητήρων
TB6612FNG tb_alx(5, 4, 6, 7);
// Μεταβλητές
char cmd = '0';
int speedMove = 100;
int stepTime = 200; // διάρκεια κίνησης (ms)
// Δηλώσεις συναρτήσεων
void moveForward();
void moveBackward();
void turnLeft();
void turnRight();
void stopMove();
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
cmd = Serial.read();
if (cmd == 'U') {
moveForward();
}
else if (cmd == 'D') {
moveBackward();
}
else if (cmd == 'L') {
turnLeft();
}
else if (cmd == 'R') {
turnRight();
}
else if (cmd == 'S') {
stopMove();
}
}
}
/* ===== Κινήσεις ===== */
void moveForward() {
tb_alx.setSpeed(M1, CCW, speedMove);
tb_alx.setSpeed(M2, CW, speedMove);
delay(stepTime);
stopMove();
}
void moveBackward() {
tb_alx.setSpeed(M1, CW, speedMove);
tb_alx.setSpeed(M2, CCW, speedMove);
delay(stepTime);
stopMove();
}
void turnLeft() {
tb_alx.setSpeed(M1, CCW, speedMove);
tb_alx.setSpeed(M2, CCW, speedMove);
delay(stepTime);
stopMove();
}
void turnRight() {
tb_alx.setSpeed(M1, CW, speedMove);
tb_alx.setSpeed(M2, CW, speedMove);
delay(stepTime);
stopMove();
}
void stopMove() {
tb_alx.setSpeed(M1, CW, 0);
tb_alx.setSpeed(M2, CW, 0);
}