Motor vezérlések
Re: Motor vezérlések
{ ezt megtalálod közvetlenül a void loop alatt
Re: Motor vezérlések
Sziasztok!
Beleszólok én is, hátha megtalálom a hibát. Most csak szintaktikusan nézve a problémát, itt a forrás (ha még mindig így néz ki):
[/quote]
Beleszólok én is, hátha megtalálom a hibát. Most csak szintaktikusan nézve a problémát, itt a forrás (ha még mindig így néz ki):
Kód: Egész kijelölése
#include <AFMotor.h>
const int pingPin = 2;
AF_DCMotor Motor1(4);
AF_DCMotor Motor2(3);
void setup()
{
Motor1.setSpeed(255);
Motor2.setSpeed(255);
Motor1.run(RELEASE);
Motor2.run(RELEASE);
}
void loop()
{
long duration, cm;
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
cm = microsecondsToCentimeters(duration);
delay(100);
} <<-------------------------------------ez a loop vége, idáig szerintem jó.
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29/ 2;
} <<-------------------------------------ez egy függvény vége, idáig szerintem jó.
<<---------------Szerintem innentől csak lóg a levegőben, és emiatt panaszkodik.
<<---------------Máshová kellene tenni. Pl. a loop()-ba a cm = ... és a delay() közé.
<<---------------Akkor talán a záró } sem fog kelleni a legvégére.
if (cm < 20){
Motor1.run(RELEASE);
Motor2.run(BACKWARD);
delay(500);
}
else {
Motor1.run(FORWARD);
Motor2.run(FORWARD);
}
}
Re: Motor vezérlések
Sajnos úgy sem jó mert akkor viszont azt dobja hogy nincs deklarálva a "cm" szerintem vagy valami fölösleges vagy valami hiányzó dolog lesz a motormozgatás előtt azaz az if előtt
Re: Motor vezérlések
Mutass légyszives egy friss forrást!
Re: Motor vezérlések
Ez nekem lefordult:
Kód: Egész kijelölése
#include <AFMotor.h>
const int pingPin = 2;
AF_DCMotor Motor1(4);
AF_DCMotor Motor2(3);
void setup()
{
Motor1.setSpeed(255);
Motor2.setSpeed(255);
Motor1.run(RELEASE);
Motor2.run(RELEASE);
}
void loop()
{
long duration, cm;
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
cm = microsecondsToCentimeters(duration);
if (cm < 20){
Motor1.run(RELEASE);
Motor2.run(BACKWARD);
delay(500);
}
else {
Motor1.run(FORWARD);
Motor2.run(FORWARD);
}
delay(100);
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29/ 2;
}
Re: Motor vezérlések
nos itt az aktuális... érdekes mert most meg elfogadja azzal a módosítással amit te javasoltál
Kód: Egész kijelölése
#include <AFMotor.h>
const int pingPin = 2;
AF_DCMotor Motor1(4);
AF_DCMotor Motor2(3);
void setup()
{
Motor1.setSpeed(255);
Motor2.setSpeed(255);
Motor1.run(RELEASE);
Motor2.run(RELEASE);
}
void loop()
{
long duration, cm;
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
cm = microsecondsToCentimeters(duration);
if (cm < 20){
Motor1.run(RELEASE);
Motor2.run(BACKWARD);
delay(500);
}
else (cm > 20);{
Motor1.run(FORWARD);
Motor2.run(FORWARD);
}
delay(100);
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29/ 2;
}
Re: Motor vezérlések
Feltöltöm ha otthon leszek és mindenképp írok hogy mi lett a végeredmény... de előre is köszönöm szépen!
Re: Motor vezérlések
Nincs mit, örülök, hogy sikerült!
Re: Motor vezérlések
Erre azért vigyázz, mert hiába fogadja el, nem jó:
Kód: Egész kijelölése
if (cm < 20){
Motor1.run(RELEASE);
Motor2.run(BACKWARD);
delay(500);
}
else (cm > 20);{ <<--- itt nem kell a '(cm > 20);' rész!!! Sőt rossz! Törölni!
Motor1.run(FORWARD);
Motor2.run(FORWARD);
}
Re: Motor vezérlések
igazad van! köszi hogy szóltál (:
Re: Motor vezérlések
hali! szóval ma feltöltöttem bekötöttem és a végeredmény érdekes... valami okból kifolyólag nem halad folyamatosan előre, hanem meg meg áll fordul egy kicsit, de amint az uh szenzor elé teszem a kezem elkezd fordulni majd folytatja a "táncot" tovább... ötlet hogy mi miatt csinálja ezt?
Re: Motor vezérlések
megpróbáltam átvariálni egy kicsit a programot, bár így sem sokkal rózsásabb a helyzet.. annyi a különbség, hogy most kicsit tovább megy előre de ugyanúgy táncol tovább :I
itt a módosított program
itt a módosított program
Kód: Egész kijelölése
#include <AFMotor.h>
const int pingPin = 2;
AF_DCMotor Motor1(4);
AF_DCMotor Motor2(3);
void setup()
{
Motor1.setSpeed(255);
Motor2.setSpeed(255);
Motor1.run(RELEASE);
Motor2.run(RELEASE);
}
void loop()
{
long duration, cm;
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
cm = microsecondsToCentimeters(duration);
if (cm < 20){
goRight ();
delay(1000);
} else {
goForward();
delay (500);
}
}
void goForward (){
Motor1.run(FORWARD);
Motor2.run(FORWARD);
}
void goRight (){
Motor1.run(RELEASE);
Motor2.run(BACKWARD);
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29/ 2;
}
Re: Motor vezérlések
Mert erről szól a programod!
Mindig mozognia kell, nincsen benne olyan meghatározás, hogy
pl.: 19 – 21cm között ne mozduljon sehova.
Mindig mozognia kell, nincsen benne olyan meghatározás, hogy
pl.: 19 – 21cm között ne mozduljon sehova.
Re: Motor vezérlések
Persze ez nekem is világos volt, csak a kérdés... hogy a két motorom miért nem hajt egyszerre? miért van hogy gondol egyet akadály nélkül fordul egy kicsit, meg néha az egyik nem hajt csak félgőzzel... ez lenne a kérdés... tápot laptopról illetve hálózatról kap adapteren keresztül...
Re: Motor vezérlések
kicsit lehalt a topic