Kezdőoldal » Számítástechnika » Programozás » Arduino-n miért nem akar...

Arduino-n miért nem akar rendesen működni a program?

Figyelt kérdés

Van egy viszonylag egyszerű programom,mely 2 db szervót irányít. Mikor megcsinálja az első feladatot, a következőt, mint pl.: servo2.write(100);;; Már nem akarja. Miért van ez?


#include <Servo.h>

Servo servo1, servo2;

double start1, end1, increment1, pos1;

double start2, end2, increment2, pos2;

int i=1000;

int o=45;



void servo_init() {

start1 = 45;

end1 = 90;

start2 = 90;

end2 = 0;

increment1 = 0.5;

increment2 = -1;

servo1.attach(7);

servo2.attach(6);

servo1.write(start1);

servo2.write(start2);

pos1 = start1;

pos2 = start2;


}


void servo_update () {

if (increment1 > 0 && pos1 < end1)

{

pos1 = pos1 + increment1;

}

if (increment1 < 0 && pos1 > end1)

{

pos1 = pos1 + increment1;

}

if (increment2 > 0 && pos2 < end2)

{

pos2 = pos2 + increment2;

}

if (increment2 < 0 && pos2 > end2)

{

pos2 = pos2 + increment2;

}

servo1.write(int(pos1));

servo2.write(int(pos2));

i;

delay(10);

}


void vissza() {

i;

if(end2=end2)

{

servo2.write(o);

i;

}

}



void setup() {

servo_init();

}


void loop() {

{servo_update();

i;}

}



2014. nov. 20. 20:27
1 2
 1/13 anonim ***** válasza:
Nem értek az Arduniohoz, de ez a kód mondjuk elég meredek, nem csodálkozom, ha nem nagyon megy.
2014. nov. 20. 21:25
Hasznos számodra ez a válasz?
 2/13 anonim ***** válasza:

i;


Ezek mik?

2014. nov. 20. 21:40
Hasznos számodra ez a válasz?
 3/13 anonim ***** válasza:
Igen ez egy nagyszerű kérdés.
2014. nov. 20. 21:42
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:
az "i" egy delay(1000) parancs. Csak ha ugy beírom, hogy delay(1000),akkor a szervók fokai között lévő időt növeli 1 sec-el.
2014. nov. 20. 21:54
 5/13 anonim ***** válasza:
100%

"az "i" egy delay(1000) parancs"

Az bizony ugyan nem.

Az egy egész szám, ami önmagában abszolút nem csinál semmit.

2014. nov. 20. 22:00
Hasznos számodra ez a válasz?
 6/13 anonim ***** válasza:
Pontosan, az i az tuti, hogy nem az.
2014. nov. 20. 22:10
Hasznos számodra ez a válasz?
 7/13 A kérdező kommentje:
Most itt nem az "i" a lényeg, mert amit annak kell csinálni azt csinálja. Hanem az, hogy miért nem tudok a "servo_update" után más,szervóval kapcsolatos programot hozzárakni. Nem akarja végrehajtani. Ez a kérdés.
2014. nov. 21. 09:03
 8/13 anonim ***** válasza:

"Most itt nem az "i" a lényeg, mert amit annak kell csinálni azt csinálja."

A semmit? Mert mást nem csinál.


"Hanem az, hogy miért nem tudok a "servo_update" után más,szervóval kapcsolatos programot hozzárakni. Nem akarja végrehajtani. Ez a kérdés."

Nyilván azért, mert elrontod a feltételeidet és többet nem teljesülnek.


Javaslom töröld le a komplett kódot és írd újra nulláról, mert az egész borzasztó ahogy van.


A csellengő i;-től kezdve, az ugyanolyan törzsű elágazásokig, "if(end2=end2)" erről meg inkább ne is beszéljünk...

2014. nov. 21. 09:47
Hasznos számodra ez a válasz?
 9/13 A kérdező kommentje:
Van arduino-d?? Lefutattad? Ha nincs,akkor ne irogassál hülyeséget. Ha van,akkor futtasdle "i" helyett delay(1000)-rel, és látni fogod, hogy a fokok közé teszi a késleltetés, vagyis 1 fokot 1 másodperc alatt hajt végre. Ha pedig a delay(1000) helyett az "i" hívod be, akkor a parancs után fogja rakni a késleltetés, és ez idáig rendben is van. De te nem érted, hogy nem ez a hiba, hanem az, hogy a servo_update után ha berakok mondjuk egy servo1.write(60),, akkor nem teljesíti.
2014. nov. 21. 11:33
 10/13 A kérdező kommentje:

#include <Servo.h>

Servo servo1, servo2;

double start1, end1, increment1, pos1;

double start2, end2, increment2, pos2;

int i=1000;


void servo_init() {

start1 = 45;

end1 = 90;

start2 = 90;

end2 = 0;

increment1 = 0.5;

increment2 = -1;

servo1.attach(7);

servo2.attach(6);

servo1.write(start1);

servo2.write(start2);

pos1 = start1;

pos2 = start2;


}


void servo_update () {

if (increment1 > 0 && pos1 < end1)

{

pos1 = pos1 + increment1;

}

if (increment1 < 0 && pos1 > end1)

{

pos1 = pos1 + increment1;

}

if (increment2 > 0 && pos2 < end2)

{

pos2 = pos2 + increment2;

}

if (increment2 < 0 && pos2 > end2)

{

pos2 = pos2 + increment2;

}

servo1.write(int(pos1));

servo2.write(int(pos2));

delay(10);

}


void vissza() {

servo1.write(60);

}



void setup() {

servo_init();

}


void loop() {

servo_update();

i;

}

2014. nov. 21. 11:35
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!