Apka na arduino i xbee

Regulatory, sterowniki, serwa, pakiety itp.
Awatar użytkownika
kisielt
Kierowca
Posty: 74
Rejestracja: 01 maja 2015, 20:48

Re: Apka na arduino i xbee

Post autor: kisielt »

Zobaczymy, jeszcze rozważam wymianę joysticka i może instalację drugiego, czegoś typu: http://www.tme.eu/pl/details/om400a-m4/ ... mter-tyxn/" onclick="window.open(this.href);return false;

Awatar użytkownika
kajoj333
Kierowca
Posty: 163
Rejestracja: 29 sty 2015, 21:04
Been thanked: 1 time

Re: Apka na arduino i xbee

Post autor: kajoj333 »

Bardzo fajna sprawa, czesto robie tam zamowienia

Wysłane z mojego LG-E610 przy użyciu Tapatalka

Awatar użytkownika
luki
Kierowca
Posty: 1630
Rejestracja: 03 lip 2012, 15:18

Re: Apka na arduino i xbee

Post autor: luki »

Fajna sprawa aparatura custom ale jak na razie koszt wyjdzie ci drożej niż dobrej apki , xbee możesz zastąpić NRF24L01 + 2.4GHz fakt biblioteki nie są jeszcze tym czym powinny ale można to dopracować do tego joistiki tu masz taniej bo i tak ten sklep zamawia od chińczyków http://www.ebay.co.uk/itm/231577261517" onclick="window.open(this.href);return false; zamówiłem sobie bo maja regulację na potencjometrach a ten switch na górze można łatwo samemu dorobić jak ktoś go potrzebuje. Działaj dalej ,pozdrawiam.

Awatar użytkownika
Motyl
Kierowca
Posty: 586
Rejestracja: 26 gru 2011, 20:18
Has thanked: 2 times
Been thanked: 6 times

Re: Apka na arduino i xbee

Post autor: Motyl »

W modelarstwie nieraz jest tak że samemu zrobienie czegoś jest droższe niż kupno gotowca ;)

Awatar użytkownika
kisielt
Kierowca
Posty: 74
Rejestracja: 01 maja 2015, 20:48

Re: Apka na arduino i xbee

Post autor: kisielt »

luki pisze:Fajna sprawa aparatura custom ale jak na razie koszt wyjdzie ci drożej niż dobrej apki , xbee możesz zastąpić NRF24L01 + 2.4GHz fakt biblioteki nie są jeszcze tym czym powinny ale można to dopracować do tego joistiki tu masz taniej bo i tak ten sklep zamawia od chińczyków http://www.ebay.co.uk/itm/231577261517" onclick="window.open(this.href);return false; zamówiłem sobie bo maja regulację na potencjometrach a ten switch na górze można łatwo samemu dorobić jak ktoś go potrzebuje. Działaj dalej ,pozdrawiam.
I tak i nie. Do napędu, skrętu, podnośnika, świateł wszelakich, kierunkowskazów, koguta, obsługi przyczepy tudzież innej maszyny potrzebowałbym dużo kanałów. Takiego odbiornika nie zmieściłbym w traktorze w skali 1:32. Co do NRF24L01, to dowiedziałem się o tym jak już miałem XBee kupione więc już szkoda mi, żeby się zmarnowało. Dzięki za namiary na joystick. Tu zapewne skorzystam.

Awatar użytkownika
kisielt
Kierowca
Posty: 74
Rejestracja: 01 maja 2015, 20:48

Re: Apka na arduino i xbee

Post autor: kisielt »

Trwa nierówna walka

https://youtu.be/NWVMr0UG1mU" onclick="window.open(this.href);return false;

Joystick z centrum do max przód i z opóźnieniem przyspiesza w 2-3 krokach. Joystick z max przód do centrum i z opóźnieniem staje w 2-3 krokach.
Arduino pro mini miga mi diodą zieloną po każdym odebraniu pakietu danych i te odbiory ze zmianą prędkości się pokrywają. Zgupiałem już zupełnie czy problem mam po stronie Apki, czy po stronie traktora.

Kod apki:

Kod: Zaznacz cały

#include <SendOnlySoftwareSerial.h>

int ValueX = 0;
int ValueY = 0;
int ValueXsend = 0;
int ValueYsend = 0;
int DiffX;
int DiffY;
int i;
int sensorValueX = 0;
int sensorValueY = 0;
const int histereza_joystick = 1; //bylo 20
const int OffsetX = 0;
const int OffsetY = 0;
boolean SendDataX; //*****************88 skończyć wysyłanie jak będzie komunikacja
boolean SendDataY;
byte wlaczniki = 0;
byte wlacznikiLast = 0;
byte wlaczniki2 = 0;
byte wlaczniki2Last = 0;
byte ID1 = 0x39; //9
byte commandOut;
byte valueOut;
byte dataOut[6];

SendOnlySoftwareSerial ExternalSerial(1);

void setup() {
// initialize serial communication at 9600 bits per second:
ExternalSerial.begin(38400);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, INPUT_PULLUP); // kierunek lewy, prawy
pinMode(11, INPUT_PULLUP); // pozycyjne, krótkie
pinMode(12, INPUT_PULLUP); // kabina przód, tył
pinMode(13, INPUT_PULLUP); // awaryjne, kogut
}

void loop() {
i = i+1;
if (i>=4000) i=0;

//if (i==25) {
// odczyt joystick
sensorValueX = analogRead(A1) + OffsetX;
sensorValueY = analogRead(A0) + OffsetY;
// }
//uwzglednienie histerezy
if (sensorValueX >= ValueX) {
DiffX = sensorValueX – ValueX;
if (DiffX > histereza_joystick){
ValueX = sensorValueX;
}
}
else {
DiffX = ValueX – sensorValueX;
if (DiffX > histereza_joystick){
ValueX = sensorValueX;
}
}

if (sensorValueY >= ValueY) {
DiffY = sensorValueY – ValueY;
ValueY = sensorValueY;

}
else {
DiffY = ValueY – sensorValueY;
ValueY = sensorValueY;
}

/****************************** obsluga włączników ******************************/
//check prog before 09 2015

/******************************* obsługa komunikacji ********************************/
dataOut[0] = ID1;
dataOut[1] = 0x42;
dataOut[2] = map(ValueY, 0, 670, 0x00, 0xFF);
if (i==99){
ExternalSerial.write(dataOut,3); //do xbee
// Serial.write(dataOut,6); //do monitora

Serial.write(dataOut,3);
Serial.println(ValueY);
}
}
Kod traktora:

Kod: Zaznacz cały

String inputString = “”; // a string to hold incoming data
boolean stringComplete = false; // whether the string is complete
boolean odebrano = false;
byte dat1 = 0x00; // Stores received byte
byte dat2 = 0x00; // Stores received byte
byte dat3 = 0x00; // Stores received byte
byte ID1 = 0x39; //9560
byte drive_max = 255; // but you can change these values if you need to
byte drive_min = 0;
byte drive_center = 128;
int move2 = 100;
byte command_val = 0x00; // Stores the command value
byte data_val = 0x7F; // Stores the data value
int servo_val = 128; // Variable used to ensure data_val is between servo limits
int servo_val2 = 128;
int data = 0; // Variable to indicate serial data is available
int i;
int j = 0;
const int leftana=11;
const int connled=13;
const int motorcon1=2;
const int motorcon2=3;

void setup() {
// initialize serial:
Serial.begin(38400);
inputString.reserve(3);
pinMode(13, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(11, OUTPUT);
pinMode(15, OUTPUT);
}

void loop() {
i = i+1;
if (i>=10) i=0;
// j = i / 10;
if (dat1 == ID1){ // Confirm that the correct vehicle ID has been recieved
command_val = dat2; // Store the new command value
data_val = dat3;
}

if (odebrano==true && i==1){
odebrano = false;
digitalWrite(connled,LOW);
}
servo_val = map(data_val, 0x00, 0xFF, drive_min, drive_max); // scale the data value for use with the motor

if (servo_val2 > servo_val && i==1) servo_val2=servo_val2-1;
if (servo_val2 < servo_val && i==1) servo_val2=servo_val2+1;

if (servo_val2 < (drive_center-10)){ // These if functions leave a buffer zone of 15 bits above and below the drive center value
move2=map(servo_val2,0,128,255,100);
digitalWrite(motorcon2, HIGH); // Set the direction with pins 7 and 8
digitalWrite(motorcon1, LOW);
}
else if (servo_val2 > (drive_center+10)){
move2=map(servo_val2,128,255,100,255);
digitalWrite(motorcon2, LOW); // Set the direction with pins 7 and 8
digitalWrite(motorcon1, HIGH);
}
else { // If within the buffer turn off the motor
move2=100;
digitalWrite(motorcon2, LOW); // Set the direction with pins 7 and 8
digitalWrite(motorcon1, LOW);
}
analogWrite(leftana,move2);

if (Serial.available()) {
inputString=Serial.readString();
dat1=inputString[0];
dat2=inputString[1];
dat3=inputString[2];
odebrano = true;
digitalWrite(connled,HIGH);
}
}
Kombinowałem ostatnio i we wszystkich digital i analog writach pozamieniałem numeryczne oznaczenia portów na zmienne int, kombinowałem też z buforowaniem w XBee bezpośrednio, ale nic z tego nie wynika.
Ktoś coś jakiś pomysł?

Awatar użytkownika
Sławek
Site Admin
Posty: 14530
Rejestracja: 21 gru 2011, 22:12
Has thanked: 15 times
Been thanked: 21 times

Re: Apka na arduino i xbee

Post autor: Sławek »

A po co masz tą pętlę 0-4000 ?

Awatar użytkownika
griszaa
Złomiarz
Posty: 10987
Rejestracja: 22 sie 2012, 04:52
Been thanked: 2 times

Re: Apka na arduino i xbee

Post autor: griszaa »

No wlasnie tez sie nad tym zastanawiam :hehe

Awatar użytkownika
Sławek
Site Admin
Posty: 14530
Rejestracja: 21 gru 2011, 22:12
Has thanked: 15 times
Been thanked: 21 times

Re: Apka na arduino i xbee

Post autor: Sławek »

A opóźnienie (jeżeli o to chodzi) wynika z niskiej predkosci transmisji szeregowej (38400) :)
Ja testowałem jakis moduł bezprzewodowy na 433mhz i przy transmisji 4kb/s też było za wolno. Dlatego przerzuciłem sie na 2mb/s :)

http://rctruck.pl/forum/viewtopic.php?p=33990#p33990" onclick="window.open(this.href);return false;

Pozdr

Awatar użytkownika
kisielt
Kierowca
Posty: 74
Rejestracja: 01 maja 2015, 20:48

Re: Apka na arduino i xbee

Post autor: kisielt »

No właśnie tą pętlę 0-4000 wrzuciłem by ograniczyć ilość wysyłanych komed do jednego na ileś cykli. Co ciekawe i niezrozumiałe dla mnie próba zmniejszenia tej wartości powoduje, że traktor jest martwy.

ODPOWIEDZ