|
|
Elektronika.lt portalo forumas
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 2024 04 20, 03:56. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » Roboto ranka
|
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
|
|
|
Puslapis 2 iš 2 Pereiti prie Atgal 1, 2 |
|
|
Roboto ranka |
Parašytas: 2016 05 16, 23:25 |
|
|
|
altair rašo: |
Gal, kasnos padėdumėte parašyti visa kodą? Labai būčiau dėkingas |
Idek savo koda cia, o mes padesim paziuret, pirstu pabadyt ir pan. |
|
|
|
|
|
Roboto ranka |
Parašytas: 2016 05 17, 07:22 |
|
|
|
Socrates rašo: |
altair rašo: |
Gal, kasnos padėdumėte parašyti visa kodą? Labai būčiau dėkingas |
Idek savo koda cia, o mes padesim paziuret, pirstu pabadyt ir pan. |
Aš tai tokiu atveju sakau pasijuoksim kartu. na aišku ne iš piktumo. |
|
_________________ Do not argue with an idiot. He will drag you down to his level and beat you with experience.
mane rasite: mano profilyje |
|
|
|
|
|
Roboto ranka |
Parašytas: 2016 05 23, 00:00 |
|
|
|
Sveiki visi! Nenoriu, kadkas nors baksnotumėte bet tiesiog padėkite, taigi, aš įkėliau savo video kaip kas atrodo pas mane
https://youtu.be/qBLS0X_9Vks
Ir tame video, viskas veikia su šiem dviem kodais --->
----------------------------------------------
GLOVE:
int Finger1 = 1;
int Finger2 = 2;
int Finger3 = 3;
int Finger4 = 3;
int Finger5 = 5;
void setup()
{
Serial.begin(9600);
}
void loop()
{
byte servoValue1;
byte servoValue2;
byte servoValue3;
byte servoValue4;
byte servoValue5;
int FingerV1 = analogRead(Finger1);
int FingerV2 = analogRead(Finger2);
int FingerV3 = analogRead(Finger3);
int FingerV4 = analogRead(Finger4);
int FingerV5 = analogRead(Finger5);
byte servoVal1 = map(FingerV1,0, 1023, 0, 179);
byte servoVal2 = map(FingerV2,0, 1023, 0, 179);
byte servoVal3 = map(FingerV3,0, 1023, 0, 179);
byte servoVal4 = map(FingerV4,0, 1023, 0, 179);
byte servoVal5 = map(FingerV5,0, 1023, 0, 179);
Serial.println(servoVal1);
Serial.println(servoVal2);
Serial.println(servoVal3);
Serial.println(servoVal4);
Serial.println(servoVal5);
delay(1000);
}
---------------------------------------------------
AND HAND:
#include <Servo.h>
Servo myservo1; // create servo object to control a servo
Servo myservo2;
Servo myservo3;
Servo myservo4;
Servo myservo5;
void setup()
{
Serial.begin(9600);
myservo1.attach(11); // attaches the servo on pin 9 to the servo object
myservo2.attach(10);
myservo3.attach(9);
myservo4.attach(6);
myservo5.attach(5);
}
void loop()
{
if(Serial.available() >=5)
{
byte servoVal1 = Serial.read();
byte servoVal2 = Serial.read();
byte servoVal3 = Serial.read();
byte servoVal4 = Serial.read();
byte servoVal5 = Serial.read();
// Send the servo to the position read... (note: you get to make this happen)
myservo1.write(servoVal1);
myservo2.write(servoVal2);
myservo3.write(servoVal3);
myservo4.write(servoVal4);
myservo5.write(servoVal5);
}
}
-----------------------------------------------------
Viską noriu padaryti pagal:
http://www.instructables.com/id/Arduino-Wireless-Animatronic-Hand/?ALLSTEPS
Bet kas gali būti blogai? Gal kad vietoje flex sensoriu naudoju LDR? |
|
|
|
|
|
|
Roboto ranka |
Parašytas: 2016 05 24, 22:41 |
|
|
|
Radau problemą...
vietoj println reikėjo parašyti write:
Kodas: |
Serial.println(servoVal1);
Serial.println(servoVal2);
Serial.println(servoVal3);
Serial.println(servoVal4);
Serial.println(servoVal5);
----->
Serial.write(servoVal1);
Serial.write(servoVal2);
Serial.write(servoVal3);
Serial.write(servoVal4);
Serial.write(servoVal5);
|
Tokiu būdu veikia sujungus abu arduino, dviem laidais RX -> TX ; TX -> RX
bet kai pajungiu bluetooth, krečia tas pačias nesamones kaip ir video rodžiau[/code] |
|
|
|
|
|
Roboto ranka |
Parašytas: 2016 05 24, 22:53 |
|
|
|
O tu pabandyk pradzioj per bluetooth nusiusti penkias fiksuotas reiksmes, pvz.: 1,2,3,4,5. Tada paziurek ar priimi viska teisingai. |
|
|
|
|
|
|
Roboto ranka |
Parašytas: 2016 05 24, 23:24 |
|
|
|
Todel, kad piktybiskai ignoruoji duomenu sinchronizacija.
trumpai uzvedu ant temos:
duomenys pas tave [0..179] ribose
kanalai/sensoriai [1..5], tad...
siustuve:
Kodas: |
byte a[5]={-1,-1,-1,-1,-1};
for (int n=0; n<5; n++){
byte value=map(analogRead(n), 0, 1023, 0, 179));
// jei reikia, papildomai pafiltruoji del trikziu ir t.t.
if(value != a[n]){
Serial.write(value);
Serial.write(n+181);
a[n]=value;
}// if
}// for
|
imtuve:
Kodas: |
byte a[5]={-1, -1, -1, -1, -1};
void loop(void){
static byte tmp, sensor-1, value=-1;
if(Serial.available()){
tmp=Serial.read();
if(tmp < 180) value=tmp;
else
if(tmp >= 181 && tmp <= 185){
if(value < 180) sensor=tmp-181;
a[sensor]=value;
sensor=-1;
}
else value=-1;
}// available
for(int n=0; n<5; n++){
if(a[n] != -1){
tmp=a[n];
switch (n+1) {
case 1: Servo_1.write(tmp); break;
case 2: Servo_2.write(tmp); break;
case 3: Servo_3.write(tmp); break;
case 4: Servo_4.write(tmp); break;
case 5: Servo_5.write(tmp); break;
}// switch
a[n]=-1;
}// if
}// for
// kiti veiksmai
}// loop
|
algoritmo paaiskinimas:
kai pasikeicia kanalo reiksme
siustuvas siuncia kanalo reiksme, paskui kanalo numeri+max reiksmes verte
imtuvas gaves simboli ivertina kurias ribas jis atitinka (reiksmiu [0...179] ar kanalo [1..5])
jei tai reiksme - isaugo value
jei tai kanalo numeris, tada tikrina kokia anksciau priimta reiksme
jei reiksme savo ribose, tai issaugo masyve tolesniam apdorojimui
toliau gali iskarto siusti reiksmes i servas, jei buvo atnaujiti duomenys
-1 inicijuojant nurodo kad duomenys dar nebuvo atnaujinti arba jie yra neteisingi arba jie pirma karta turi buti ne [0..179] ribise
tam kartui tiek, nors dar reiktu daryti ir bent kazkokia CRC, o jai turi reiksmes [180,186..255], jei nezadi transliuoti kazkokiu kitu komandu
beje, komandas gali perduoti per papildoma/us kanalus ir kiekvienos
servos kanalas galetu perduoti komandas [0..179]
P.S. dar tau uzduotele pasidaryti adaptyvini reiksmiu filtra ivedant masyvus map reiksmems, pvz:
int mAnalogMin[5]={0,0,0,0,0};
int mAnalogMax[5]={1023,1023,1023,1023,1023};
int mAngleMin[5]={0,0,0,0,0};
int mAngleMax[5]={179,179,179,179,179};
ir pritaikyti praktikoje |
|
|
|
|
|
|
Roboto ranka |
Parašytas: 2016 05 27, 03:34 |
|
|
|
Ką reikštų šis dalykas?, kai visai į potenciometra nereaguoja ir išveda servo štai ką...
|
|
|
|
|
|
|
Roboto ranka |
Parašytas: 2016 05 27, 07:52 |
|
|
|
nieko, tik tai, kad nemoki debugint ir galbut potensus bala zino kur pajungei
P.S. nezinau ar 1.6.0 turi kokiu keistenybiu su analogRead(), bet jei neprijima numeracijos nuo nulio, tai pakeisk i analogRead(A0+n)
P.S Jei zydras dantis pagadina duomenu srauta, tai pakoreguok taip, kad siustu tik 7-bit simbolius, arba tikslinkis zydradancio specifikacijas del 8-bit srauto.
siustuve
Kodas: |
void setup(){
Serial.begin(9600);
}
byte a[5]={-1,-1,-1,-1,-1};
void loop(){
for (int n=0; n<5; n++){
byte servoVal1=map(analogRead(n), 0, 1023, 0, 179);
// jei reikia, papildomai pafiltruoji del trikziu ir t.t.
if(servoVal1 != a[n]){
Serial.print(servoVal1, HEX); Serial.write(n + 'G');
a[n]=servoVal1;
}// if
}// for
delay(30);
}
|
imtive:
Kodas: |
#include <Servo.h>
Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;
Servo myservo5;
void setup(){
Serial.begin(9600);
myservo1.attach(11);
myservo2.attach(10);
myservo3.attach(9);
myservo4.attach(6);
myservo5.attach(5);
}
byte a[5]={-1, -1, -1, -1, -1};
void loop(void){
static byte tmp, sensor=-1, value=-1;
if(Serial.available()){
tmp=Serial.read(); Serial.write(tmp);
// Serial.write('<'); Serial.print(tmp); Serial.write('>');
if(tmp >= '0' && tmp <= '9'){
value = (value << 4) + (tmp - '0');
} else
if (tmp >= 'A' && tmp <= 'F'){
value = (value << 4) + (tmp - 'A') + 10;
} else
if(tmp >= 'G' && tmp <= 'K' && value < 180){
sensor = tmp - 'G'; a[sensor] = value;
} else {
value=-1; sensor=-1;
}
/*
if(tmp < 180) value=tmp;
else
if(tmp >= 181 && tmp <= 185){
if(value < 180) sensor=tmp-181;
Serial.print("Sensor#"); Serial.print(sensor+1); Serial.write('='); Serial.println(value);
a[sensor]=value;
sensor= -1;
}
else value= -1;
*/
}// available
for(int n=0; n<5; n++){
tmp=a[n];
if(tmp < 180){
Serial.print("Servo#"); Serial.print(n+1); Serial.print(" angle="); Serial.println(tmp);
switch (n+1) {
case 1: myservo1.write(tmp); break;
case 2: myservo2.write(tmp); break;
case 3: myservo3.write(tmp); break;
case 4: myservo4.write(tmp); break;
case 5: myservo5.write(tmp); break;
}// switch
a[n]= -1;
}// if
}// for
// kiti veiksmai
}// loop
|
|
|
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS 22 Tractors
Farming Simulator 19 Mods,
FS 22 Maps,
FS22 Mods |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS22 Trucks |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
Paskola internetu
Vartojimo paskola,
paskola automobiliui,
paskola būsto remontui |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS22 Mods
FS22 Harvesters,
FS22 Tractors Mods,
FS22 Maps Mods |
|
FS22 Mods
FS22 Maps,
FS22 Harvesters,
FS22 Tractors |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
Sims 4 Mods
Sims 4 CC Clothes,
Sims 4 Hair CC,
Sims 4 Skill Cheat |
|
Optic sight
Binoculars for hunting elk,
Best compact binoculars,
Riflescope hunting |
|
|
|