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ás Szerző: geripapa »

{ 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ás Szerző: rostasc3 »

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ás Szerző: geripapa »

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ás Szerző: rostasc3 »

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ás Szerző: rostasc3 »

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ás Szerző: geripapa »

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ás Szerző: geripapa »

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ás Szerző: rostasc3 »

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ás Szerző: rostasc3 »

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ás Szerző: geripapa »

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ás Szerző: geripapa »

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ás Szerző: geripapa »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Motor vezérlések

Hozzászólás Szerző: kapu48 »

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ás Szerző: geripapa »

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ás Szerző: geripapa »

kicsit lehalt a topic :D
Válasz küldése