Motor vezérlések

A "60 nap alatt Arduino" tanfolyam házi feladatai és közvetlen témái
geripapa
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2014. április 20. vasárnap, 21:29

Re: Motor vezérlések

HozzászólásSzerző: geripapa » 2014. május 5. hétfő, 12:40

{ ezt megtalálod közvetlenül a void loop alatt

Avatar
rostasc3
Biztosítékgyilkos
Hozzászólások: 52
Csatlakozott: 2009. október 20. kedd, 6:00

Re: Motor vezérlések

HozzászólásSzerző: rostasc3 » 2014. május 5. hétfő, 16:19

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):

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);
  }   

}
[/quote]

geripapa
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2014. április 20. vasárnap, 21:29

Re: Motor vezérlések

HozzászólásSzerző: geripapa » 2014. május 5. hétfő, 16:28

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

Avatar
rostasc3
Biztosítékgyilkos
Hozzászólások: 52
Csatlakozott: 2009. október 20. kedd, 6:00

Re: Motor vezérlések

HozzászólásSzerző: rostasc3 » 2014. május 5. hétfő, 16:30

Mutass légyszives egy friss forrást!

Avatar
rostasc3
Biztosítékgyilkos
Hozzászólások: 52
Csatlakozott: 2009. október 20. kedd, 6:00

Re: Motor vezérlések

HozzászólásSzerző: rostasc3 » 2014. május 5. hétfő, 16:47

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;
    }

geripapa
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2014. április 20. vasárnap, 21:29

Re: Motor vezérlések

HozzászólásSzerző: geripapa » 2014. május 5. hétfő, 16:49

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;

geripapa
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2014. április 20. vasárnap, 21:29

Re: Motor vezérlések

HozzászólásSzerző: geripapa » 2014. május 5. hétfő, 16:57

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!

Avatar
rostasc3
Biztosítékgyilkos
Hozzászólások: 52
Csatlakozott: 2009. október 20. kedd, 6:00

Re: Motor vezérlések

HozzászólásSzerző: rostasc3 » 2014. május 5. hétfő, 17:11

Nincs mit, örülök, hogy sikerült!

Avatar
rostasc3
Biztosítékgyilkos
Hozzászólások: 52
Csatlakozott: 2009. október 20. kedd, 6:00

Re: Motor vezérlések

HozzászólásSzerző: rostasc3 » 2014. május 5. hétfő, 17:18

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);
  }

geripapa
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2014. április 20. vasárnap, 21:29

Re: Motor vezérlések

HozzászólásSzerző: geripapa » 2014. május 5. hétfő, 21:53

igazad van! köszi hogy szóltál (:

geripapa
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2014. április 20. vasárnap, 21:29

Re: Motor vezérlések

HozzászólásSzerző: geripapa » 2014. május 6. kedd, 11:29

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? :|

geripapa
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2014. április 20. vasárnap, 21:29

Re: Motor vezérlések

HozzászólásSzerző: geripapa » 2014. május 6. kedd, 12:12

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

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;

   

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3228
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: Motor vezérlések

HozzászólásSzerző: kapu48 » 2014. május 6. kedd, 12:22

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.

geripapa
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2014. április 20. vasárnap, 21:29

Re: Motor vezérlések

HozzászólásSzerző: geripapa » 2014. május 6. kedd, 13:06

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...

geripapa
DrótVégénSzéndarab
Hozzászólások: 19
Csatlakozott: 2014. április 20. vasárnap, 21:29

Re: Motor vezérlések

HozzászólásSzerző: geripapa » 2014. május 9. péntek, 14:55

kicsit lehalt a topic :D


Vissza: “60 nap alatt Arduino - Házi feladatok”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég