Arduino stegmotor

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
slatten
Inlägg: 47
Blev medlem: 29 maj 2013, 07:16:21
Ort: Kungsbacka

Re: Arduino stegmotor

Inlägg 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.
slatten
Inlägg: 47
Blev medlem: 29 maj 2013, 07:16:21
Ort: Kungsbacka

Re: Arduino stegmotor

Inlägg 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.
Användarvisningsbild
Andax
Inlägg: 4379
Blev medlem: 4 juli 2005, 23:27:38
Ort: Jönköping

Re: Arduino stegmotor

Inlägg 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.
slatten
Inlägg: 47
Blev medlem: 29 maj 2013, 07:16:21
Ort: Kungsbacka

Re: Arduino stegmotor

Inlägg 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.
Användarvisningsbild
swapper
Inlägg: 1076
Blev medlem: 14 augusti 2012, 23:18:15
Ort: Helsingborg

Re: Arduino stegmotor

Inlägg 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
slatten
Inlägg: 47
Blev medlem: 29 maj 2013, 07:16:21
Ort: Kungsbacka

Re: Arduino stegmotor

Inlägg 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.
slatten
Inlägg: 47
Blev medlem: 29 maj 2013, 07:16:21
Ort: Kungsbacka

Re: Arduino stegmotor

Inlägg 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();
}
Senast redigerad av slatten 15 juli 2013, 12:48:17, redigerad totalt 2 gånger.
slatten
Inlägg: 47
Blev medlem: 29 maj 2013, 07:16:21
Ort: Kungsbacka

Re: Arduino stegmotor

Inlägg 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?
sodjan
EF Sponsor
Inlägg: 43250
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Arduino stegmotor

Inlägg av sodjan »

Om du använder code-taggarna så blir koden också läsbar...
slatten
Inlägg: 47
Blev medlem: 29 maj 2013, 07:16:21
Ort: Kungsbacka

Re: Arduino stegmotor

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43250
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Arduino stegmotor

Inlägg 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]
slatten
Inlägg: 47
Blev medlem: 29 maj 2013, 07:16:21
Ort: Kungsbacka

Re: Arduino stegmotor

Inlägg av slatten »

tack då ska jag naturligtvis göra det i fortsättningen.
slatten
Inlägg: 47
Blev medlem: 29 maj 2013, 07:16:21
Ort: Kungsbacka

Re: Arduino stegmotor

Inlägg 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();
}

 
Skriv svar