Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- INEM Robot Motoric 2017 - platform 1
- Copyright by Antonius (Ringlayer)
- www.ringlayer.net - www.ringlayer.com
- Prototype designed for Ringlayer Robotic
- Start Project on :
- ---------------------------------
- ringlayer-X453SA test # date
- Mon Jan 23 04:58:25 WIB 2017
- ---------------------------------
- known commands:
- mobility functions :
- - f|speed => move forward with intended speed
- - b|speed => move backward with intended speed
- -ml|speed => left manouver with intended speed
- - mr|speed => right manouver with intended speed
- - r|speed => move right with intended speed
- - l|speed => move left with intended speed
- - s -> stop movement
- sensor functions :
- - u|1 => front sonar
- - u|2 => right sonar
- - u|3 => left sonar
- head movement functions :
- - h1|degree
- - h2|degree
- - h1_quick|degree
- - h2_quick|degree
- - h_init
- - h_reattach
- - h_redetach
- - h_all_rev|degree1|degree2
- - h_all|degree1|degree2
- arm movement functions :
- - a1|degree
- - a2|degree
- - a3|degree
- - a4|degree
- - a5|degree
- - a6|degree
- - a1_quick|degree
- - a2_quick|degree
- - a3_quick|degree
- - a4_quick|degree
- - a5_quick|degree
- - a_init1
- - a_init2
- - a_init3
- - a_reattach
- - a_redetach
- - a_all|degree1|degree2|degree3|degree4|degree5|degree6
- - a_all_rev|degree1|degree2|degree3|degree4|degree5|degree6
- */
- #include <Servo.h>
- #include <NewPing.h>
- #include <string.h>
- #include <stdlib.h>
- /* general servo vars */
- int _servo_delay_low_ms = 400;
- int _servo_delay_ms = 700;
- /* eof general servo vars */
- /* vars for servo - head servo */
- int _servo_head_last_degree[2] = {100,30};
- int _servo_head_init_degree[2] = {100, 30};
- Servo servo_head1;
- Servo servo_head2;
- int _servo_head1_max_left_degree = 10;
- int _servo_head1_max_right_degree = 170;
- int _servo_head1_pin = 22;
- int _servo_head2_max_up_degree = 140;
- int _servo_head2_max_down_degree = 15;
- int _servo_head2_pin = 23;
- /* eof vars for servo - head servo */
- /* vars for servo - arm servo */
- int _servo_arm_last_degree[6] = {90,90,90,90,90,90};
- int _servo_arm_init_degree_1[6] = {90,90,90,90,90,90};
- int _servo_arm_init_degree_2[6] = {90,90,90,90,90,90};
- int _servo_arm_init_degree_3[6] = {90,90,90,90,90,90};
- Servo servo_arm1, servo_arm2, servo_arm3, servo_arm4, servo_arm5, servo_arm6;
- int _servo_arm1_max_left_degree = 40;
- int _servo_arm1_max_right_degree = 140;
- int _servo_arm1_pin = 24;
- int _servo_arm2_max_left_degree = 40;
- int _servo_arm2_max_right_degree = 140;
- int _servo_arm2_pin = 25;
- int _servo_arm3_max_left_degree = 40;
- int _servo_arm3_max_right_degree = 140;
- int _servo_arm3_pin = 26;
- int _servo_arm4_max_left_degree = 40;
- int _servo_arm4_max_right_degree = 140;
- int _servo_arm4_pin = 27;
- int _servo_arm5_max_left_degree = 40;
- int _servo_arm5_max_right_degree = 140;
- int _servo_arm5_pin = 28;
- int _servo_arm6_max_left_degree = 40;
- int _servo_arm6_max_right_degree = 140;
- int _servo_arm6_pin = 29;
- /* eof vars for servo - arm servo */
- /* start motoric vars */
- int speed_pin_right = 9;
- int right_pin1 = 5;
- int right_pin2 = 6;
- int speed_pin_left = 8;
- int left_pin1 = 3;
- int left_pin2 = 4;
- /* eof motoric vars */
- /* start sonar vars */
- #define front_echo 14
- #define front_trigger 15
- #define right_echo 16
- #define right_trigger 17
- #define left_echo 18
- #define left_trigger 19
- #define MAX_DISTANCE 200
- int _distance = 0;
- int _tmp_check = 0;
- String send_sonar_data = "";
- String preceed_sonar_data = "";
- String _dist = "";
- NewPing front_sonar(front_trigger, front_echo, MAX_DISTANCE);
- NewPing left_sonar(left_trigger, left_echo, MAX_DISTANCE);
- NewPing right_sonar(right_trigger, right_echo, MAX_DISTANCE);
- /* eof sonar vars */
- void setup() {
- Serial.begin(115200);
- pinMode(left_pin1,OUTPUT);
- pinMode(left_pin2,OUTPUT);
- pinMode(speed_pin_left,OUTPUT);
- pinMode(right_pin1,OUTPUT);
- pinMode(right_pin2,OUTPUT);
- pinMode(speed_pin_right,OUTPUT);
- digitalWrite(speed_pin_right, HIGH);
- digitalWrite(speed_pin_left, HIGH);
- servo_arm1.attach(_servo_arm1_pin);
- servo_arm2.attach(_servo_arm2_pin);
- servo_arm3.attach(_servo_arm3_pin);
- servo_arm4.attach(_servo_arm4_pin);
- servo_arm5.attach(_servo_arm5_pin);
- servo_arm6.attach(_servo_arm6_pin);
- servo_head1.attach(_servo_head1_pin);
- servo_head2.attach(_servo_head2_pin);
- }
- /* ------------------------------------------------------ */
- /* system functions */
- /*
- delay with serial check, created by Ringlayer on
- Wed Feb 22 23:40:49 WIB 2017
- */
- void _delay(int second) {
- int i;
- int mili_second = second * 1000;
- int count_unblock = mili_second / 100;
- delay(100);
- for (i = 0; i < count_unblock; i++) {
- _main(1);
- delay(100);
- }
- }
- void _delay_ms(int mili_second) {
- int i;
- int count_unblock = mili_second / 100;
- delay(100);
- for (i = 0; i < count_unblock; i++) {
- _main(1);
- delay(100);
- }
- }
- /* eof system functions */
- /* ------------------------------------------------------ */
- /* sonar function */
- void _get_distances_from_sonars(int _num) {
- switch (_num) {
- case 1:
- _tmp_check = front_sonar.ping_cm();
- preceed_sonar_data = "f|";
- break;
- case 2:
- _tmp_check = right_sonar.ping_cm();
- preceed_sonar_data = "r|";
- break;
- case 3:
- _tmp_check = left_sonar.ping_cm();
- preceed_sonar_data = "l|";
- break;
- }
- if ((_tmp_check > 1) && (_tmp_check < 201)) {
- _distance = _tmp_check;
- _dist = String(_distance);
- _dist.trim();
- if (_dist.length() > 0) {
- send_sonar_data = preceed_sonar_data + _dist;
- Serial.println(send_sonar_data);
- }
- }
- delay(50);
- }
- /* eof sonar function */
- /* ------------------------------------------------------ */
- /* motor functions */
- void _diam() {
- _op_motor_kanan(0, "stop");
- _op_motor_kiri(0, "stop");
- }
- void mundur(int speed) {
- if (speed == 0) {
- speed = 255;
- }
- _op_motor_kanan(speed, "mundur");
- _op_motor_kiri(speed, "mundur");
- }
- void maju(int speed) {
- if (speed == 0) {
- speed = 255;
- }
- _op_motor_kanan(speed, "maju");
- _op_motor_kiri(speed, "maju");
- }
- void belok_kanan(int speed) {
- if (speed == 0) {
- speed = 255;
- }
- _op_motor_kanan(speed, "mundur");
- _op_motor_kiri(speed, "maju");
- if (speed > 220) {
- _delay_ms(750);
- }
- else if((speed < 221) and (speed > 170)) {
- _delay_ms(800);
- }
- else {
- _delay_ms(900);
- }
- _diam();
- }
- void belok_kiri(int speed) {
- if (speed == 0) {
- speed = 255;
- }
- _op_motor_kanan(speed, "maju");
- _op_motor_kiri(speed, "mundur");
- if (speed > 220) {
- _delay_ms(750);
- }
- else if((speed < 221) and (speed > 170)) {
- _delay_ms(800);
- }
- else {
- _delay_ms(900);
- }
- _diam();
- }
- void manuver_kanan(int speed) {
- if (speed == 0) {
- speed = 255;
- }
- _op_motor_kanan(speed, "mundur");
- _op_motor_kiri(speed, "maju");
- }
- void manuver_kiri(int speed) {
- if (speed == 0) {
- speed = 255;
- }
- _op_motor_kanan(speed, "maju");
- _op_motor_kiri(speed, "mundur");
- }
- void _op_motor_kanan(int speed, const char *op) {
- analogWrite(speed_pin_right, speed);
- if (op == "mundur") {
- digitalWrite(right_pin1, LOW);
- digitalWrite(right_pin2, HIGH);
- }
- else if (op == "maju") {
- digitalWrite(right_pin1, HIGH);
- digitalWrite(right_pin2, LOW);
- }
- else if (op == "stop") {
- digitalWrite(right_pin1, LOW);
- digitalWrite(right_pin2, LOW);
- }
- }
- void _op_motor_kiri(int speed, const char *op) {
- analogWrite(speed_pin_left, speed);
- if (op == "maju") {
- digitalWrite(left_pin1, LOW);
- digitalWrite(left_pin2, HIGH);
- }
- else if (op == "mundur") {
- digitalWrite(left_pin1, HIGH);
- digitalWrite(left_pin2, LOW);
- }
- else if (op == "stop") {
- digitalWrite(left_pin1, LOW);
- digitalWrite(left_pin2, LOW);
- }
- }
- /* eof motor functions */
- /* ------------------------------------------------------ */
- /* common servo operations */
- int _adjust_degree(int _degree) {
- if (_degree == 0) {
- _degree = 1;
- }
- if (_degree == 180) {
- _degree = 179;
- }
- return _degree;
- }
- void _servo_init_position(int _init_degree,Servo _servo) {
- if (_init_degree == 0) {
- _init_degree = 1;
- }
- _servo.write(_init_degree);
- _delay_ms(_servo_delay_low_ms);
- }
- void _servo_move(int _servo_ar_num, int _servo_degree, String mode, Servo _servo) {
- int _orig_servo_degree = 0;
- if (mode == "head") {
- _orig_servo_degree = _servo_head_last_degree[_servo_ar_num];
- }
- else {
- _orig_servo_degree = _servo_arm_last_degree[_servo_ar_num];
- }
- if (_orig_servo_degree > _servo_degree) {
- while (_orig_servo_degree >= _servo_degree) {
- _servo.write(_orig_servo_degree);
- delay(14);
- _orig_servo_degree -= 1;
- }
- }
- else if (_orig_servo_degree < _servo_degree) {
- while (_orig_servo_degree <= _servo_degree) {
- _servo.write(_orig_servo_degree);
- delay(14);
- _orig_servo_degree += 1;
- }
- }
- if (mode == "head") {
- _servo_head_last_degree[_servo_ar_num] = _orig_servo_degree;
- }
- else if (mode == "arm") {
- _servo_arm_last_degree[_servo_ar_num] = _orig_servo_degree;
- }
- _delay_ms(_servo_delay_ms);
- }
- void _servo_quick_move(int _servo_ar_num, int _servo_degree, String mode, Servo _servo) {
- int _orig_servo_degree = _servo_degree;
- _servo.write(_servo_degree);
- if (mode == "head") {
- _servo_head_last_degree[_servo_ar_num] = _orig_servo_degree;
- }
- else if (mode == "arm") {
- _servo_arm_last_degree[_servo_ar_num] = _orig_servo_degree;
- }
- _delay_ms(_servo_delay_ms);
- }
- /* eof common servo operations */
- /* ------------------------------------------------------ */
- /* attach and deach servo operations */
- void _reattach_head_servo() {
- servo_head1.attach(_servo_head1_pin);
- servo_head2.attach(_servo_head2_pin);
- }
- void _redetach_head_servo() {
- if (servo_head1.attached()) {
- servo_head1.detach();
- }
- if (servo_head2.attached()) {
- servo_head2.detach();
- }
- }
- void _reattach_arm_servo() {
- servo_arm1.attach(_servo_arm1_pin);
- servo_arm2.attach(_servo_arm2_pin);
- servo_arm3.attach(_servo_arm3_pin);
- servo_arm4.attach(_servo_arm4_pin);
- servo_arm5.attach(_servo_arm5_pin);
- servo_arm6.attach(_servo_arm6_pin);
- }
- void _redetach_arm_servo() {
- if (servo_arm1.attached()) {
- servo_arm1.detach();
- }
- if (servo_arm2.attached()) {
- servo_arm2.detach();
- }
- if (servo_arm3.attached()) {
- servo_arm3.detach();
- }
- if (servo_arm4.attached()) {
- servo_arm4.detach();
- }
- if (servo_arm5.attached()) {
- servo_arm5.detach();
- }
- if (servo_arm6.attached()) {
- servo_arm6.detach();
- }
- }
- /* eof attach and deach servo operations */
- /* ------------------------------------------------------ */
- /* head servo operations */
- void _head_joint_1_degree(int _degree, String mode) {
- /*
- Serial.println("head1 degree");
- Serial.println(_degree);
- */
- _degree = _adjust_degree(_degree);
- if (mode == "sweep") {
- _servo_move(0, _degree, "head", servo_head1);
- }
- else if (mode == "quick") {
- _servo_quick_move(0, _degree, "head", servo_head1);
- }
- }
- void _head_joint_2_degree(int _degree, String mode) {
- _degree = _adjust_degree(_degree);
- if (mode == "sweep") {
- _servo_move(0, _degree, "head", servo_head2);
- }
- else if (mode == "quick") {
- _servo_quick_move(0, _degree, "head", servo_head2);
- }
- }
- void _head_all_degree(int _degree1, int _degree2, String mode) {
- _degree1 = _adjust_degree(_degree1);
- _degree2 = _adjust_degree(_degree2);
- _head_joint_1_degree(_degree1, mode);
- _delay_ms(_servo_delay_low_ms);
- _head_joint_2_degree(_degree2, mode);
- _delay_ms(_servo_delay_low_ms);
- }
- void _head_all_degree_rev(int _degree1, int _degree2, String mode) {
- _degree1 = _adjust_degree(_degree1);
- _degree2 = _adjust_degree(_degree2);
- _head_joint_2_degree(_degree2, mode);
- _delay_ms(_servo_delay_low_ms);
- _head_joint_1_degree(_degree1, mode);
- _delay_ms(_servo_delay_low_ms);
- }
- void _head_init() {
- Serial.println("head init");
- _head_joint_1_init(_servo_head_init_degree[0]);
- _servo_head_last_degree[0] = _servo_head_init_degree[0];
- _delay_ms(_servo_delay_low_ms);
- _head_joint_2_init(_servo_head_init_degree[1]);
- _servo_head_last_degree[1] = _servo_head_init_degree[1];
- _delay_ms(_servo_delay_low_ms);
- }
- void _head_joint_1_init(int _init_degree) {
- _servo_head_last_degree[0] = _init_degree;
- _servo_init_position(_init_degree, servo_head1);
- _delay_ms(_servo_delay_ms);
- }
- void _head_joint_2_init(int _init_degree) {
- _servo_head_last_degree[1] = _init_degree;
- _servo_init_position(_init_degree,servo_head2);
- _delay_ms(_servo_delay_ms);
- }
- /* eof head servo operations */
- /* ------------------------------------------------------ */
- /* arm servo operations */
- void _arm1_init(int _init_degree) {
- _servo_arm_last_degree[0] = _init_degree;
- _servo_init_position(_init_degree, servo_arm1);
- _delay_ms(_servo_delay_ms);
- }
- void _arm2_init(int _init_degree) {
- _servo_arm_last_degree[1] = _init_degree;
- _servo_init_position(_init_degree, servo_arm2);
- _delay_ms(_servo_delay_ms);
- }
- void _arm3_init(int _init_degree) {
- _servo_arm_last_degree[2] = _init_degree;
- _servo_init_position(_init_degree, servo_arm3);
- _delay_ms(_servo_delay_ms);
- }
- void _arm4_init(int _init_degree) {
- _servo_arm_last_degree[3] = _init_degree;
- _servo_init_position(_init_degree, servo_arm4);
- _delay_ms(_servo_delay_ms);
- }
- void _arm5_init(int _init_degree) {
- _servo_arm_last_degree[4] = _init_degree;
- _servo_init_position(_init_degree, servo_arm5);
- _delay_ms(_servo_delay_ms);
- }
- void _arm6_init(int _init_degree) {
- _servo_arm_last_degree[5] = _init_degree;
- _servo_init_position(_init_degree, servo_arm6);
- _delay_ms(_servo_delay_ms);
- }
- void _arm_init_1() {
- _arm1_init(_servo_arm_init_degree_1[0]);
- _arm2_init(_servo_arm_init_degree_1[1]);
- _arm3_init(_servo_arm_init_degree_1[2]);
- _arm4_init(_servo_arm_init_degree_1[3]);
- _arm5_init(_servo_arm_init_degree_1[4]);
- _arm6_init(_servo_arm_init_degree_1[5]);
- _servo_arm_last_degree[0] = _servo_arm_init_degree_1[0];
- _servo_arm_last_degree[1] = _servo_arm_init_degree_1[1];
- _servo_arm_last_degree[2] = _servo_arm_init_degree_1[2];
- _servo_arm_last_degree[3] = _servo_arm_init_degree_1[3];
- _servo_arm_last_degree[4] = _servo_arm_init_degree_1[4];
- _servo_arm_last_degree[5] = _servo_arm_init_degree_1[5];
- }
- void _arm_init_2() {
- _arm1_init(_servo_arm_init_degree_2[0]);
- _arm2_init(_servo_arm_init_degree_2[1]);
- _arm3_init(_servo_arm_init_degree_2[2]);
- _arm4_init(_servo_arm_init_degree_2[3]);
- _arm5_init(_servo_arm_init_degree_2[4]);
- _arm6_init(_servo_arm_init_degree_2[5]);
- _servo_arm_last_degree[0] = _servo_arm_init_degree_2[0];
- _servo_arm_last_degree[1] = _servo_arm_init_degree_2[1];
- _servo_arm_last_degree[2] = _servo_arm_init_degree_2[2];
- _servo_arm_last_degree[3] = _servo_arm_init_degree_2[3];
- _servo_arm_last_degree[4] = _servo_arm_init_degree_2[4];
- _servo_arm_last_degree[5] = _servo_arm_init_degree_2[5];
- }
- void _arm_init_3() {
- _arm1_init(_servo_arm_init_degree_3[0]);
- _arm2_init(_servo_arm_init_degree_3[1]);
- _arm3_init(_servo_arm_init_degree_3[2]);
- _arm4_init(_servo_arm_init_degree_3[3]);
- _arm5_init(_servo_arm_init_degree_3[4]);
- _arm6_init(_servo_arm_init_degree_3[5]);
- _servo_arm_last_degree[0] = _servo_arm_init_degree_3[0];
- _servo_arm_last_degree[1] = _servo_arm_init_degree_3[1];
- _servo_arm_last_degree[2] = _servo_arm_init_degree_3[2];
- _servo_arm_last_degree[3] = _servo_arm_init_degree_3[3];
- _servo_arm_last_degree[4] = _servo_arm_init_degree_3[4];
- _servo_arm_last_degree[5] = _servo_arm_init_degree_3[5];
- }
- void _arm1_degree(int _degree, String mode) {
- _degree = _adjust_degree(_degree);
- if (mode == "sweep") {
- _servo_move(0, _degree, "arm", servo_arm1);
- }
- else if (mode == "quick") {
- _servo_quick_move(0, _degree, "arm", servo_arm1);
- }
- }
- void _arm2_degree(int _degree, String mode) {
- _degree = _adjust_degree(_degree);
- if (mode == "sweep") {
- _servo_move(1, _degree, "arm", servo_arm2);
- }
- else if (mode == "quick") {
- _servo_quick_move(1, _degree, "arm", servo_arm2);
- }
- }
- void _arm3_degree(int _degree, String mode) {
- _degree = _adjust_degree(_degree);
- if (mode == "sweep") {
- _servo_move(2, _degree, "arm", servo_arm3);
- }
- else if (mode == "quick") {
- _servo_quick_move(2, _degree, "arm", servo_arm3);
- }
- }
- void _arm4_degree(int _degree, String mode) {
- _degree = _adjust_degree(_degree);
- if (mode == "sweep") {
- _servo_move(3, _degree, "arm", servo_arm4);
- }
- else if (mode == "quick") {
- _servo_quick_move(3, _degree, "arm", servo_arm4);
- }
- }
- void _arm5_degree(int _degree, String mode) {
- _degree = _adjust_degree(_degree);
- if (mode == "sweep") {
- _servo_move(4, _degree, "arm", servo_arm5);
- }
- else if (mode == "quick") {
- _servo_quick_move(4, _degree, "arm", servo_arm5);
- }
- }
- void _arm6_degree(int _degree, String mode) {
- _degree = _adjust_degree(_degree);
- if (mode == "sweep") {
- _servo_move(5, _degree, "arm", servo_arm6);
- }
- else if (mode == "quick") {
- _servo_quick_move(5, _degree, "arm", servo_arm6);
- }
- }
- void _arm_all_degree(int _degree1, int _degree2, int _degree3, int _degree4, int _degree5, int _degree6, String mode) {
- _arm6_degree(_degree6, mode);
- _delay_ms(_servo_delay_low_ms);
- _arm5_degree(_degree5, mode);
- _delay_ms(_servo_delay_low_ms);
- _arm4_degree(_degree4, mode);
- _delay_ms(_servo_delay_low_ms);
- _arm3_degree(_degree3, mode);
- _delay_ms(_servo_delay_low_ms);
- _arm2_degree(_degree2, mode);
- _delay_ms(_servo_delay_low_ms);
- _arm1_degree(_degree1, mode);
- _delay_ms(_servo_delay_low_ms);
- }
- void _arm_all_degree_rev(int _degree1, int _degree2, int _degree3, int _degree4, int _degree5, int _degree6, String mode) {
- _arm1_degree(_degree6, mode);
- _delay_ms(_servo_delay_low_ms);
- _arm2_degree(_degree5, mode);
- _delay_ms(_servo_delay_low_ms);
- _arm3_degree(_degree4, mode);
- _delay_ms(_servo_delay_low_ms);
- _arm4_degree(_degree3, mode);
- _delay_ms(_servo_delay_low_ms);
- _arm5_degree(_degree2, mode);
- _delay_ms(_servo_delay_low_ms);
- _arm6_degree(_degree1, mode);
- _delay_ms(_servo_delay_low_ms);
- }
- /* ------------------------------------------------------ */
- /* eof arm servo operations */
- /* ------------------------------------------------------ */
- /* command processing functions */
- void _do_proc_cmd(String cmd, int _num1, int _num2, int _num3, int _num4, int _num5, int _num6) {
- /* arm functions */
- if (cmd == "a1") {
- _arm1_degree(_num1, "sweep");
- }
- else if (cmd == "a2") {
- _arm2_degree(_num2, "sweep");
- }
- else if (cmd == "a3") {
- _arm3_degree(_num3, "sweep");
- }
- else if (cmd == "a4") {
- _arm4_degree(_num4, "sweep");
- }
- else if (cmd == "a5") {
- _arm5_degree(_num5, "sweep");
- }
- else if (cmd == "a6") {
- _arm6_degree(_num6, "sweep");
- }
- else if (cmd == "a1_quick") {
- _arm1_degree(_num1, "quick");
- }
- else if (cmd == "a2_quick") {
- _arm2_degree(_num2, "quick");
- }
- else if (cmd == "a3_quick") {
- _arm3_degree(_num3, "quick");
- }
- else if (cmd == "a4_quick") {
- _arm4_degree(_num4, "quick");
- }
- else if (cmd == "a5_quick") {
- _arm5_degree(_num5, "quick");
- }
- else if (cmd == "a6_quick") {
- _arm6_degree(_num6, "quick");
- }
- else if (cmd == "a_init1") {
- _arm_init_1();
- }
- else if (cmd == "a_init2") {
- _arm_init_2();
- }
- else if (cmd == "a_init3") {
- _arm_init_3();
- }
- else if (cmd == "a_reattach") {
- _reattach_arm_servo();
- }
- else if (cmd == "a_redetach") {
- _redetach_arm_servo();
- }
- else if (cmd == "a_all") {
- _arm_all_degree(_num1, _num2, _num3, _num4, _num5, _num6, "sweep");
- }
- else if (cmd == "a_all_rev") {
- _arm_all_degree_rev(_num1, _num2, _num3, _num4, _num5, _num6, "sweep");
- }
- /* eof arm functions */
- /* head functions */
- else if (cmd == "h_reattach") {
- _reattach_head_servo();
- }
- else if (cmd == "h_redetach") {
- _redetach_head_servo();
- }
- else if (cmd == "h1") {
- /*
- Serial.println("head 1 degree");
- Serial.println(_num1);
- */
- _head_joint_1_degree(_num1, "sweep");
- }
- else if (cmd == "h2") {
- Serial.println("head 2 degree");
- Serial.println(_num1);
- _head_joint_2_degree(_num1, "sweep");
- }
- else if (cmd == "h1_quick") {
- _head_joint_1_degree(_num1, "quick");
- }
- else if (cmd == "h2_quick") {
- _head_joint_2_degree(_num1, "quick");
- }
- else if (cmd == "h_all") {
- _head_all_degree(_num1, _num2, "sweep");
- }
- else if (cmd == "h_all_rev") {
- _head_all_degree_rev(_num1, _num2, "sweep");
- }
- else if (cmd == "h_init") {
- _head_init();
- }
- /* eof head functions */
- /* mobility functions */
- else if (cmd == "f") {
- maju(_num1);
- }
- else if (cmd == "b") {
- mundur(_num1);
- }
- else if (cmd == "ml") {
- manuver_kiri(_num1);
- }
- else if (cmd == "mr") {
- manuver_kanan(_num1);
- }
- else if (cmd == "r") {
- belok_kanan(_num1);
- }
- else if (cmd == "l") {
- belok_kiri(_num1);
- }
- else if (cmd == "s") {
- _diam();
- }
- else if (cmd == "u") {
- /*
- Serial.println("_get_distances_from_sonars");
- */
- _get_distances_from_sonars(_num1);
- }
- else {
- _diam();
- }
- /* eof mobility functions */
- }
- void _main(int is_this_a_thread) {
- String data = "";
- int cmd_len = 0;
- const char *delimeter = "|";
- char *pch;
- int _num1 = 0;
- int _num2 = 0;
- int _num3 = 0;
- int _num4 = 0;
- int _num5 = 0;
- int _num6 = 0;
- String _cmd = "";
- int loop = 1;
- while (loop == 1) {
- if (is_this_a_thread == 1) {
- loop = 0;
- }
- if (Serial.available() > 0) {
- data = Serial.readString();
- data.trim();
- cmd_len = data.length();
- char _buf[cmd_len + 1];
- data.toCharArray(_buf,cmd_len + 1);
- pch = strtok(_buf, delimeter);
- _cmd = String(pch);
- if (_cmd != "s") {
- pch = strtok(NULL, delimeter);
- _num1 = atoi(pch);
- if ( (_cmd == "h_all") or (_cmd == "h_all_rev") or (_cmd == "a_all") or (_cmd == "a_all_rev")) {
- pch = strtok(NULL, delimeter);
- _num2 = atoi(pch);
- if ((_cmd == "a_all") or (_cmd == "a_all_rev")) {
- pch = strtok(NULL, delimeter);
- _num3 = atoi(pch);
- pch = strtok(NULL, delimeter);
- _num4 = atoi(pch);
- pch = strtok(NULL, delimeter);
- _num5 = atoi(pch);
- pch = strtok(NULL, delimeter);
- _num6 = atoi(pch);
- }
- }
- }
- _do_proc_cmd(_cmd, _num1, _num2, _num3, _num4, _num5, _num6);
- }
- }
- }
- /* eof command processing functions */
- /* ------------------------------------------------------ */
- void loop() {
- _head_init();
- _main(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement