Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 05 02, 12:36. Visos datos yra GMT + 2 valandos.
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
-------------------------------------------------------------------------
Šiame kode viskas gerai, keičiant potenciometro varžą, vertė(value) keičiasi, tos vertės perduodamos per bluetooth į kitą arduino ir į servo, bet kažkas yra negerai, gal su antruoju kodu nes viską įjungus servo nereguoja į potenciometro vertės keitimą, o tiesiog servo trukčioja apie 5 laipsnius(pirmyn ir atgal)...
Ir is esmes jei ten priimi skaiciu didesni uz nurodyta masyvo dydi, tai rasai duomenis per virsu.
Issivesk visus skaicius ka gauni per BT. Nezinau koks tikslas masyvo indeksa pasiimti is zinutes? Ar ten ilga zinute kapota gabalais? Nors is idejos neatrodo kad taip tu nori padaryti.
Ir is esmes jei ten priimi skaiciu didesni uz nurodyta masyvo dydi, tai rasai duomenis per virsu.
Issivesk visus skaicius ka gauni per BT. Nezinau koks tikslas masyvo indeksa pasiimti is zinutes? Ar ten ilga zinute kapota gabalais? Nors is idejos neatrodo kad taip tu nori padaryti.
Gali būti, kad kažko nesuprantu vadinasi.... į serial monitor potenciometras išveda skaičius nuo tarkim 8 iki 150 , priklauso, kokia varža potenciometre...
// Variable that will contain the character of start package set in the GloveTX sketch, "<"
byte startPackage;
// Kintamas dydis su vertėmis (tarp 0 ir 180)
// Variables with the values for the servomotors (between 0 and 180)
int Ang_1 = 0;
int Ang_2 = 0;
int Ang_3 = 0;
int Ang_4 = 0;
int Ang_5 = 0;
void setup()
{
// Serial sujungimui aktivuojama 9600 baud/s.
// Serial communication is activated at 9600 baud/s.
Serial.begin(9600);
// Servo varikliukai susiejami su Arduino UNO jungtimis
// The servomotors are asigned to the pins of the Arduino UNO board.
Servo_1.attach(11);
delay(300); // 300ms delsa nustatyta saugiam sujungimui (neprivaloma)
// A delay of 300ms is set for a secure connection (this can be optional)
Servo_2.attach(10);
delay(300);
Servo_3.attach(9);
delay(300);
Servo_4.attach(6);
delay(300);
Servo_5.attach(5);
delay(300);
Serial.println("Ready to receive... // Pasiruošes gauti...");
}
void loop()
{
// Laukiami duomenys siunčiami iš kito bluetooth modulio
// Waiting for data incoming from the other bluetooth module
if(Serial.available()) {
// Pirma vertė bus "<", kita yra priskirta pirštui
// The first value will be "<", the other are assigned to the finger
startPackage = Serial.read();
Ang_1 = Serial.read();
Ang_2 = Serial.read();
Ang_3 = Serial.read();
Ang_4 = Serial.read();
Ang_5 = Serial.read();
// Tikrinama, kad pirma vertė yra "<"
// Verifying that the first value is "<"
if(startPackage == '<'){
if(Ang_1!=255) // You can remove this line for every finger if you don't have a of problems
// Servo varikliukas pasisuka priskirtam laipsniui
// The servomotors rotates of the assigned degrees
Servo_1.write(Ang_1);
if(Ang_2!=255)
Servo_2.write(Ang_2);
if(Ang_3!=255)
Servo_3.write(Ang_3);
if(Ang_4!=255)
Servo_4.write(Ang_4);
if(Ang_5!=255)
Servo_5.write(Ang_5);
}
}
// Delsa daroma, kad servo varikliukai veiktų teisingai (dėl žemesnės vertės sistema gali neveikti, dėl aukštesnės - veiks lėčiau)
// a delay to make the servomotors working correctly (a lower value could make the system not working, higher value make it slower)
delay(30);
}
int Res_Finger_1 = A1; // Variables of the analog read form the flex sensors connected to the analog pins of Arduino LilyPad
int Res_Finger_2 = A2;
int Res_Finger_3 = A3;
int Res_Finger_4 = A4;
int Res_Finger_5 = A5;
int Opened_Finger_1 = 0; // Variables of the values when the hand is completely opened
int Opened_Finger_2 = 0; // This is needed for a continuous calibration
int Opened_Finger_3 = 0;
int Opened_Finger_4 = 0;
int Opened_Finger_5 = 0;
int Closed_Finger_1; // Variables of the values when the hand is completely closed
int Closed_Finger_2; // We can't set it to zero since that the minimum value reached
int Closed_Finger_3; // in the analog read never reach zero. We'll assign the value of
int Closed_Finger_4; // a first analog read, then the program in the loop will
int Closed_Finger_5; // automatically assing lower values
int Finger_1 = 0; // Variables of the values to send
int Finger_2 = 0;
int Finger_3 = 0;
int Finger_4 = 0;
int Finger_5 = 0;
void setup()
{
Serial.begin(9600); // Activating serial communication, XBee Series 1 are pre-programmed at 9600 baud/s
pinMode(Res_Finger_1, INPUT); // The variables of the sensor are set as input
pinMode(Res_Finger_2, INPUT);
pinMode(Res_Finger_3, INPUT);
pinMode(Res_Finger_4, INPUT);
pinMode(Res_Finger_5, INPUT);
if(Finger_1 > Opened_Finger_1) // Calibration reading and setting the maximum values. This needs you to completely open your hand a few times
Opened_Finger_1 = Finger_1;
if(Finger_2 > Opened_Finger_2)
Opened_Finger_2 = Finger_2;
if(Finger_3 > Opened_Finger_3)
Opened_Finger_3 = Finger_3;
if(Finger_4 > Opened_Finger_4)
Opened_Finger_4 = Finger_4;
if(Finger_5 > Opened_Finger_5)
Opened_Finger_4 = Finger_5;
if(Finger_1 < Closed_Finger_1) // Calibration reading and setting the minimum values. This needs you to completely close your hand a few times
Closed_Finger_1 = Finger_1;
if(Finger_2 < Closed_Finger_2)
Closed_Finger_2 = Finger_2;
if(Finger_3 < Closed_Finger_3)
Closed_Finger_3 = Finger_3;
if(Finger_4 < Closed_Finger_4)
Closed_Finger_4 = Finger_4;
if(Finger_5 < Closed_Finger_5)
Closed_Finger_5 = Finger_5;
Finger_1 = map(Finger_1 ,Closed_Finger_1 ,Opened_Finger_1 ,0,180); // The analog read has to be readapted in values between 0 and 180 to be used by the servomotors.
Finger_2 = map(Finger_2 ,Closed_Finger_2 ,Opened_Finger_2 ,0,180); // The minimum and maximum values from the calibrations are used to correctly set the analog reads.
Finger_3 = map(Finger_3 ,Closed_Finger_3 ,Opened_Finger_3 ,0,180);
Finger_4 = map(Finger_4 ,Closed_Finger_4 ,Opened_Finger_4 ,0,180);
Finger_5 = map(Finger_5 ,Closed_Finger_5 ,Opened_Finger_5 ,0,180);
Serial.write("<"); // This character represent the beginning of the package of the five values
Serial.write(Finger_1); // The values are sent via the Tx pin (the digital pin 1)
Serial.write(Finger_2);
Serial.write(Finger_3);
Serial.write(Finger_4);
Serial.write(Finger_5);
delay(30);
}
Na, radau panašų būdą su Xbee, bet ar tą pati galima naudoti hc-05 ir hc-06
Tu ne svetimų kodu talpinimu užsiimk, o gilinkis į kažkurį ir bandyk jį koreguoti, kad tiktų tavo poreikiams. Pirmoj vietoje tau reiktų pajungti ekraniuką siustuve ir teisingai nuskaityti ADC, tada sugalvok kaip atrodys siunčiamas paketas su tais duomenim, tada gauk tuos duomenis ir išvesk į ekraniuką imtuve, ir tik tada jau generuok PPM signalą servoms. Ekraniukas bus kaip pagalba derinant programą, kad matytum jog ji veikia taip kaip tau reikia.
{
// Laukiami duomenys siunčiami iš kito bluetooth modulio
// Waiting for data incoming from the other bluetooth module
if(Serial.available()) {
// Pirma vertė bus "<", kita yra priskirta pirštui
// The first value will be "<", the other are assigned to the finger
startPackage = Serial.read();
Ang_1 = Serial.read(); <--- iskur kontroleris zino apie situos kintamuosius?!!!!!!!!!!
Ang_2 = Serial.read();
Ang_3 = Serial.read();
Ang_4 = Serial.read();
Ang_5 = Serial.read();
// Tikrinama, kad pirma vertė yra "<"
// Verifying that the first value is "<"
if(startPackage == '<'){
Na, radau panašų būdą su Xbee, bet ar tą pati galima naudoti hc-05 ir hc-06
serial taip nedirba. pastave gaunasi tx 01234
rx 23
rx 01
rx 4
ir t.t. ziurek pavizdius. ar bentjau skaityti ismok gal tada gausis.
Tu ne svetimų kodu talpinimu užsiimk, o gilinkis į kažkurį ir bandyk jį koreguoti...
Tame esmė, kad aš beveik, nieko nežinau apie bluetooth ir teoriškai nežinau kaipparašyt tinkamą kodą, nes tik mėnesis, kai susipažystu su bluetooth ir mėginu suderinti jį su arduino.
Prie ko čia tas bliutufo žinojimas, jei vienam paduodi duomenis per UART, o iš kito tą patį gauni? Kad datašytą teks paskaityti ir abu bliutufus reikės suporuoti čia turėtų būti ir taip aišku. O jei trūksta žinių tai studijuoji datašytus arba nesiimi tokių projektų.
Prie ko čia tas bliutufo žinojimas, jei vienam paduodi duomenis per UART, o iš kito tą patį gauni? Kad datašytą teks paskaityti ir abu bliutufus reikės suporuoti čia turėtų būti ir taip aišku. O jei trūksta žinių tai studijuoji datašytus arba nesiimi tokių projektų.
Pagaliau išsiaiškinau kaip pajungti, viskas gerai su bluetooth, perduoda info...
dabar tik reikia kodus susitvarkyti... kažkaip... hell