Strona 2 z 2

Re: sterowanie silnikami krokowymi przez bluetooth android/arduino

: 29 sie 2016, 09:00
autor: jagus
barman_pl pisze:Taką ma ;)
https://play.google.com/store/apps/deta ... controller

Tylko tyle wychwyciłem z całego tematu :he

Pozdr.
Tak dokładnie mam tą aplikację i za jej pomocą chciałbym sterować proszę tylko o pomoc w zmianie kodu bo jak na razie to dla mnie czarna magia jeśli chodzi o sterowanie po bluetooth.
Posiadam również jak już pisałem moduł bluetooth hc-05

Re: sterowanie silnikami krokowymi przez bluetooth android/arduino

: 29 sie 2016, 10:37
autor: Sławek
Ok, pomyslimy w wolnej chwili.

Re: sterowanie silnikami krokowymi przez bluetooth android/arduino

: 29 sie 2016, 12:15
autor: jagus
Ok będę bardzo wdzieczny sam też coś pomyślę.

Re: sterowanie silnikami krokowymi przez bluetooth android/arduino

: 07 wrz 2016, 14:36
autor: jagus
A wiec udało mi się uruchomić czołga ::) ale musiałem zrobić małą modyfikację zamiast silników krokowych (które od początku wydawały mi się złym pomysłem) zastosowałem tanie serwa 9g które przerobiłem na silniki DC z przekładnią.
Wgrałem wcześniejszy kod do arduino z pierwszego postu i wszystko zaczęło działać ale jeszcze nie tak jak powinno głównie skręcanie nie było jak należy i zamiast klaksonu chciałem użyć przycisku w aplikacji

https://play.google.com/store/apps/deta ... controller

na androidzie
do zapalania świateł tylnych i udało mi się to również dokonać poprzez edycję kodu. Jak tylko wydrukuję nowa własną obudowę do mojego czołgu zamieszczę filmik z działania jak i również będę chciał udostępnić projekt czołgu do druku.
Może wydać się to śmieszny wyczyn ale jak dla zielonego w temacie jak ja to wyczyn ::) powoli coś dociera do mnie ::)
Tu zmieniony code:



#####################################################################################
# File name: Arduino_Rover_bluetooth_V5
# Processor: Arduino UNO, MEGA ou Teensy++ 2.0
# Language: Wiring / C /Processing /Fritzing / Arduino IDE
#
# Objectives: ROVERBot - Bluetooth controlled Rover Car
#
# Behavior: This car can be controlled by an Android device like a
# CellPhone or Tablet using directionals or accelorometer
#
#
# Author: Marcelo Moraes
# Date: 22/03/14
# place: Brazil, Sorocaba City
#
#####################################################################################

This project contains public domain code.
The modification is allowed without notice.


//Libraries
#include <AFMotor.h>

//Objects
AF_DCMotor motorRight(1, MOTOR12_64KHZ); // create motor #1, 64KHz pwm
AF_DCMotor motorLeft(2, MOTOR12_64KHZ); // create motor #3, 64KHz pwm

//Constants and variable
char dataIn = 'S';
char determinant;
char det;
int vel = 0; //Bluetooth Stuff
int frontLight = 2;
int backLight = 13;


void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps

pinMode(frontLight, OUTPUT);
pinMode(backLight, OUTPUT);

//Initalization messages
Serial.println("ArduinoBymyself - ROVERBot");
Serial.println(" AF Motor test!");

//turn off motors
motorRight.setSpeed(0);
motorLeft.setSpeed(0);
motorRight.run(RELEASE);
motorLeft.run(RELEASE);

digitalWrite(frontLight, LOW);
digitalWrite(backLight, LOW);

}

void loop() {
det = check(); //call check() subrotine to get the serial code

//serial code analysis
switch (det){
case 'F': // F, move forward
motorRight.setSpeed(vel);
motorLeft.setSpeed(vel);
motorRight.run(FORWARD);
motorLeft.run(FORWARD);
det = check();
break;

case 'B': // B, move back
motorRight.setSpeed(vel);
motorLeft.setSpeed(vel);
motorRight.run(BACKWARD);
motorLeft.run(BACKWARD);
det = check();
break;

case 'L':// L, move wheels left
motorRight.setSpeed(vel);
motorLeft.setSpeed(vel);
motorRight.run(BACKWARD);
motorLeft.run(FORWARD);
det = check();
break;

case 'R': // R, move wheels right
motorRight.setSpeed(vel);
motorLeft.setSpeed(vel);
motorRight.run(FORWARD);
motorLeft.run(BACKWARD);
det = check();
break;

case 'I': // I, turn right forward
motorRight.setSpeed(vel/4);
motorLeft.setSpeed(vel);
motorRight.run(FORWARD);
motorLeft.run(FORWARD);
det = check();
break;

case 'J': // J, turn right back
motorRight.setSpeed(vel/4);
motorLeft.setSpeed(vel);
motorRight.run(BACKWARD);
motorLeft.run(BACKWARD);
det = check();
break;

case 'G': // G, turn left forward
motorRight.setSpeed(vel);
motorLeft.setSpeed(vel/2);
motorRight.run(FORWARD);
motorLeft.run(FORWARD);
det = check();
break;

case 'H': // H, turn left back
motorRight.setSpeed(vel);
motorLeft.setSpeed(vel/2);
motorRight.run(BACKWARD);
motorLeft.run(BACKWARD);
det = check();
break;

case 'S': // S, stop
motorRight.setSpeed(vel);
motorLeft.setSpeed(vel);
motorRight.run(RELEASE);
motorLeft.run(RELEASE);
det = check();
break;


case 'U': //U, Back light on
//Serial.println("Back light on");
digitalWrite(backLight, HIGH);
break;

case 'u': //u, Back light on
//Serial.println("Back light off");
digitalWrite(backLight, LOW);
break;

case 'W': //W, Front Lights On
//Serial.println("Front Lights On");
digitalWrite(frontLight, HIGH);
break;

case 'w': //w, Front Lights Off
//Serial.println("Front Lights Off");
digitalWrite(frontLight, LOW);
break;

}
}

//get bluetooth code received from serial port
int check(){
if (Serial.available() > 0){// if there is valid data in the serial port
dataIn = Serial.read();// stores data into a varialbe

//check the code
if (dataIn == 'F'){//Forward
determinant = 'F';
}
else if (dataIn == 'B'){//Backward
determinant = 'B';
}
else if (dataIn == 'L'){//Left
determinant = 'L';
}
else if (dataIn == 'R'){//Right
determinant = 'R';
}
else if (dataIn == 'I'){//Froward Right
determinant = 'I';
}
else if (dataIn == 'J'){//Backward Right
determinant = 'J';
}
else if (dataIn == 'G'){//Forward Left
determinant = 'G';
}
else if (dataIn == 'H'){//Backward Left
determinant = 'H';
}
else if (dataIn == 'S'){//Stop
determinant = 'S';
}
else if (dataIn == '0'){//Speed 0
vel = 0;
}
else if (dataIn == '1'){//Speed 25
vel = 25;
}
else if (dataIn == '2'){//Speed 50
vel = 50;
}
else if (dataIn == '3'){//Speed 75
vel = 75;
}
else if (dataIn == '4'){//Speed 100
vel = 100;
}
else if (dataIn == '5'){//Speed 125
vel = 125;
}
else if (dataIn == '6'){//Speed 150
vel = 150;
}
else if (dataIn == '7'){//Speed 175
vel = 175;
}
else if (dataIn == '8'){//Speed 200
vel = 200;
}
else if (dataIn == '9'){//Speed 225
vel = 225;
}
else if (dataIn == 'q'){//Speed 255
vel = 255;
}
else if (dataIn == 'U'){//Back Lights On
determinant = 'U';
}
else if (dataIn == 'u'){//Back Lights Off
determinant = 'u';
}
else if (dataIn == 'W'){//Front Lights On
determinant = 'W';
}
else if (dataIn == 'w'){//Front Lights Off
determinant = 'w';
}
else if (dataIn == 'V'){//Horn On
determinant = 'V';
}
else if (dataIn == 'v'){//Horn Off
determinant = 'v';
}
else if (dataIn == 'X'){//Extra On
determinant = 'X';
}
else if (dataIn == 'x'){//Extra Off
determinant = 'x';
}
}
return determinant;
}


PYTANIE:
A teraz mam pytanie i prośbę chciałbym do tego dodać sterowanie serwem by ruszać wieżyczką w czołgu da się do tego kodu to jakoś dodać tak aby np. po naciśnięciu w aplikacji ikonki trójkąta która odpowiada za literkę "X" w kodzie
nastąpiło uruchomienie serwa a wyłączenie sterowania silnikami DC tak by był możliwy ruch serwa prawo-lewo po
naciśnięciu na telefonie klawiszy w tym wypadku w kodzie "L" i "R" ??