Sida 3 av 3

Re: Arduino stegmotor

Postat: 10 juli 2013, 08:05:14
av slatten
Steg ett i projektet klart mitsumi 42SP-7 mystiska färgkoder lösta
Lindning1: Brun/svart
Lindning2: Gul/orange
Mitt:Röd

Nu återstår programmering och lösningen med att sätta stegmotorräknaren till noll.

Re: Arduino stegmotor

Postat: 13 juli 2013, 06:58:20
av slatten
Så var man igång med lite programmering och gick naturligtvis på pumpen. Men det är nog inte så konstigt
bristande kunskap är förklaringen. Men kanske kan få lite hjälp här. Försöker få stegmotorn att gå ett steg i taget
för att när sedan I=100 stega tillbaka 100 steg, men lyckas ej kompilera klart.

#include <AFMotor.h>

AF_Stepper motor(48, 2); // 48 steg per varv port #2

void setup() {
//Serial.begin(9600);
//Serial.println("test");
int I;
motor.setSpeed(100); // 10 rpm
}

void loop() {

if(I < 100, I=I+1)
{
motor.step(1, FORWARD, SINGLE);
}
else
{
motor.step(100, BACKWARD, SINGLE);
}
hpskanner.ino: In function 'void loop()':
hpskanner:15: error: 'I' was not declared in this scope
hpskanner:19: error: 'else' without a previous 'if'
hpskanner:22: error: expected `}' at end of input


Arduino Uno
Adafruit stegmotorkort.

Re: Arduino stegmotor

Postat: 13 juli 2013, 08:48:39
av Andax
Du har deklarerat variabeln I i inuti setup() men använder den i loop(). Antingen lägger du int I ovanför setup eller i loop.

Re: Arduino stegmotor

Postat: 13 juli 2013, 10:53:58
av slatten
tack Andax såg det nu när du sa det och sedan en } på slutet fick coden att compilera.
Skrev en for-loop under tiden den fick jag att fungera, så nu äntligen har man
börjat sin bana inom C men inte lätt när man e gammal. Behöver nog mer hjälp
vad det lider.

Re: Arduino stegmotor

Postat: 13 juli 2013, 11:08:23
av swapper
Kan rekommendera detta biblotek för att hantera stegmotorer

http://www.airspayce.com/mikem/arduino/AccelStepper/

Det har stöd för acceleration m.m.
Men framförallt har det stöd för stegdrivare som tar steg + riktning.

klasser för att hantera antal steg att gå och även att läsa nuvarande läge ser det ut som.
http://www.airspayce.com/mikem/arduino/ ... 3eb14c69c1

http://www.airspayce.com/mikem/arduino/ ... 8886bf6fc5

Re: Arduino stegmotor

Postat: 13 juli 2013, 11:35:09
av slatten
oj swapper där fanns det saker. Men jag är just nu på nivån att tända och släcka lysdioder.
Så jag e mäkta stolt att ens få en stegmotor att att gå fram och åter. Men lär mig lite varje dag.

Re: Arduino stegmotor

Postat: 14 juli 2013, 19:38:57
av slatten
Nya framsteg och en del fel har söndagen erbjudit. Får stegmotorn att förflytta sig framåt x antal steg om jag skriver 1 och
omvänt om jag skriver 0 i monitorn, så långt allting väl. Men jag skulle vilja kunna fylla i antal steg när jag startar programmet.
Gjorde tre codrader som jag blankat ut med // är jag på rätt väg eller ska dom raderna ligga i mainloopen? Jag vill ju bara skriva
in steg när jag startar programmet. Sedan ska ju raden "motor.step(50, FORWARD, SINGLE); " bytas mot "motor.step(i, FORWARD, SINGLE);"

Kod: Markera allt

#include <AFMotor.h>
// Connect a stepper motor with 48 steps per revolution (7.5 degree)
// to motor port #2 (M3 and M4)
AF_Stepper motor(48, 2);

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Stepper test!");
  motor.setSpeed(100);  // 100 Varv/min 

  // while (Serial.available() == 0);
  //Serial.println("Steg?");
  //int i = Serial.read();
}

void loop() 
{
   while (Serial.available() == 0);
     int val = Serial.read() - '0';// minskar decimalvärdet
        if (val == 1) 
{                                   
   Serial.println("50 steg fram"); 
        motor.step(50, FORWARD, SINGLE); 
            //delay(5000);
} 
  else if (val == 0)
{ 
    Serial.println("50 steg bak");    
       motor.step(50, BACKWARD, SINGLE);              
        // delay(1000);                 
} 
else
{
    Serial.println("Fel input");
}
  Serial.flush();
}

Re: Arduino stegmotor

Postat: 15 juli 2013, 11:26:07
av slatten
Hej kommit en bit på väg, men fastnat i ett inmatningsproblem skriver in "1" får jag som retur decimalvärdet "10",
som en lösning hittade jag följande som hjälper med siffrorna 0-9.
int i = Serial.read() - '0';
Men hur gör jag om jag vill ha större talvärden?

Re: Arduino stegmotor

Postat: 15 juli 2013, 12:27:13
av sodjan
Om du använder code-taggarna så blir koden också läsbar...

Re: Arduino stegmotor

Postat: 15 juli 2013, 12:39:54
av slatten
"Om du använder code-taggarna så blir koden också läsbar..."

Det får du allt förklara för en amatör som jag.

Re: Arduino stegmotor

Postat: 15 juli 2013, 12:41:59
av sodjan

Kod: Markera allt

[code]
#include <AFMotor.h>
//   Connect a stepper motor with 48 steps per revolution (7.5 degree)
//   to motor port #2 (M3 and M4)
   AF_Stepper motor(48, 2);
[/code]

Re: Arduino stegmotor

Postat: 15 juli 2013, 12:44:58
av slatten
tack då ska jag naturligtvis göra det i fortsättningen.

Re: Arduino stegmotor

Postat: 17 juli 2013, 20:58:04
av slatten
Efter en stunds famlande i mörkret, så har jag trixat fram följande code som i alla fall kompilerar och verkar
fungera. Ska testa den live i morgon har inga stegmotorer hemma. Lite kosmetika ska fixas till men synpunkter
på coden tages tacksamt emot. Och var var det sodjan nu sa ja visst ja codetaggar, ler.

Kod: Markera allt

#include "math.h"               // include the Math Library
#include <AFMotor.h>

// Connect a stepper motor with 48 steps per revolution (7.5 degree)to motor port #2 (M3 and M4)
AF_Stepper motor(48, 2);
float a;
int c;
int d ;
void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
    motor.setSpeed(100);  // 100 Varv/min 
   Serial.println("Steg?");
   while (Serial.available() == 0);
   
    a = Serial.parseFloat();        // new command in 1.0 forward
    Serial.print("a = "); 
    Serial.println(a, DEC);

    }

void loop() 
{
    while (Serial.available() == 0);
     int val = Serial.read() - '0';// minskar decimalvärdet
      if (val == 1) 
    {                                   
   Serial.println(a); 
        motor.step(a, FORWARD, SINGLE); 
        d = d + 1;
        c = a * d;
        
  } 
    else if (val == 0)
  { 
    Serial.print( c  );  
      Serial.println( " steg backwards"  );
       motor.step(c, BACKWARD, SINGLE);              
  } 
else
  {
    Serial.println("Fel input");
  }
    Serial.flush();
}