Arduino-n miért nem akar rendesen működni a program?
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;}
}
"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.
"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...
#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;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!