Stap 3: Het schrijven van uw Arduino Sketch
Het idee achter dit project is dat met elke stap van een stepper motor met een vaste hoek verandering overeen komt. Bijvoorbeeld als een stappenmotor 500 stappen per omwenteling heeft, elke stap rekening moet houden bij 360/500 = 0,72 graden verschil. Op basis van die kennis, kunnen wij de telescoop dienovereenkomstig uitlijnen.
Maar eerste dingen eerste.
Laat onze schets voor de één draad sleutel Pad instellen
u zult moeten downloaden van de OnewireKeypad.h-bibliotheek uit de Arduino Playground (http://playground.arduino.cc/Code/OneWireKeyPad)
Vervolgens de constructor voor het instellen moet gemakkelijk volgen van de voorbeelden.
Ik zou eerst de lezingen van de toetsen om te zien of u een betrouwbare en consistente waarden ontvangt test
Definieer uw tekentoetsen:
char [toetsen] =
{ '1', '2', '3',
'4', '5', ' 6',
'7', '8', ' 9',
'*', '0', '#',};
Gebruik functies "Key_State", en "Getkey". Hier is een snelle schets naar te sturen de sleutelwaarde seriële afdrukken
#include
char [toetsen] = {'
1', '2', '3',
'4', '5',' 6',
'7', '8',' 9',
'*','0','#',
};
OnewireKeypad
Toetsenblok (serieel, sleutels, 5, 3, A0, 4700, 1000);
VOID Setup {}
Serial.begin(115200);
}
void loop {}
Keypad.SetHoldTime(100);
Keypad.SetDebounceTime(50);
Als ((Keypad.Key_State() == 3)) {}
char ToetsIndrukken (KeyPress) = Keypad.Getkey();
Serial.println ("toets van toetsenbord:");
Serial.println(KeyPress);
terwijl ((Keypad.Key_State())) {}
}
}
De Main-schets zal afhangen van de stappenmotor en schild die u gebruikt.
Ik gebruikte 3 verschillende motoren en schild, hun foto boven zijn aangesloten.
schets voor het Seeed Shield v2.0 met de stappenmotor Nema 11
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
NEMA stappenmotor pinnen definities
#define MOTORSHIELD_IN1 8 //8
#define MOTORSHIELD_IN2 11 //11
#define MOTORSHIELD_IN3 12 //12
#define MOTORSHIELD_IN4 13 //13
#define CTRLPIN_A 9 //9
#define CTRLPIN_B 10 //10
#define delaytime 10
int numberOfSteps;
VOID Setup
{
Definiëren van de output pinnen voor de stappenmotor nema
pinMode (MOTORSHIELD_IN1, uitvoer);
pinMode (MOTORSHIELD_IN2, uitvoer);
pinMode (MOTORSHIELD_IN3, uitvoer);
pinMode (MOTORSHIELD_IN4, uitvoer);
}
void loop
{
Nema stepper motor opdrachten verplaatsen
numberOfSteps = 500;
while(numberOfSteps>0)
{vooruit();
numberOfSteps--; }
delay(2000);
}
VOID Step_A1()
{digitalWrite(MOTORSHIELD_IN1,HIGH);
digitalWrite(MOTORSHIELD_IN2,LOW);
digitalWrite(MOTORSHIELD_IN3,LOW);
digitalWrite(MOTORSHIELD_IN4,LOW);
digitalWrite(CTRLPIN_A,HIGH);
digitalWrite(CTRLPIN_B,LOW);
}
VOID Step_B1() {}
digitalWrite(MOTORSHIELD_IN1,LOW);
digitalWrite(MOTORSHIELD_IN2,LOW);
digitalWrite(MOTORSHIELD_IN3,HIGH);
digitalWrite(MOTORSHIELD_IN4,LOW);
digitalWrite(CTRLPIN_A,LOW);
digitalWrite(CTRLPIN_B,HIGH);
}
VOID Step_C1() {}
digitalWrite(MOTORSHIELD_IN1,LOW);
digitalWrite(MOTORSHIELD_IN2,HIGH);
digitalWrite(MOTORSHIELD_IN3,LOW);
digitalWrite(MOTORSHIELD_IN4,LOW);
digitalWrite(CTRLPIN_A,HIGH);
digitalWrite(CTRLPIN_B,LOW);
}
VOID Step_D1() {}
digitalWrite(MOTORSHIELD_IN1,LOW);
digitalWrite(MOTORSHIELD_IN2,LOW);
digitalWrite(MOTORSHIELD_IN3,LOW);
digitalWrite(MOTORSHIELD_IN4,HIGH);
digitalWrite(CTRLPIN_A,LOW);
digitalWrite(CTRLPIN_B,HIGH);
}
ongeldig vooruit() {}
Step_A1();
delay(delaytime);
Step_B1();
delay(delaytime);
Step_C1();
delay(delaytime);
Step_D1();
delay(delaytime);
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Schets voor de EasyDrive schild en kleine Stepper motor ROB - 10551
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Smaall stappenmotor die easydrive Shield pinnen
int EASYSHIELDdir = 2;
int EASYSHIELDstep = 3;
VOID Setup {}
EasyShield output pinnen
pinMode (EASYSHIELDdir, uitvoer);
pinMode (EASYSHIELDstep, uitvoer);
}
void loop {}
Uitvoeren van stappenmotor verbonden met EasyShield
voor (ik = 0; ik < numberOfStep; i ++)
{
digitalWrite(EASYSHIELDstep,LOW);
digitalWrite(EASYSHIELDstep,HIGH);
delayMicroseconds(5000);
}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28BYJ Stappenmotor en schild
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Stepper motor 28BYJ pin definities
#define STEPPER1 4
#define STEPPER2 5
#define STEPPER3 6
#define STEPPER4 7
#define delaytime 8
VOID Setup {}
Definiëren van de output pinnen voor de stappenmotor 28BYj
pinMode (STEPPER1, uitvoer);
pinMode (STEPPER2, uitvoer);
pinMode (STEPPER3, uitvoer);
pinMode (STEPPER4, uitvoer);
void loop {}
while(numberOfSteps>0) {}
stepperforward();
numberOfSteps--;
}
}
VOID Step_A() {}
digitalWrite (STEPPER1, hoge);
digitalWrite (STEPPER2, hoge);
digitalWrite (STEPPER3, laag);
digitalWrite (STEPPER4, laag);
}
VOID Step_B() {}
digitalWrite (STEPPER1, laag);
digitalWrite (STEPPER2, hoge);
digitalWrite (STEPPER3, hoge);
digitalWrite (STEPPER4, laag);
}
VOID Step_C() {}
digitalWrite (STEPPER1, laag);
digitalWrite (STEPPER2, laag);
digitalWrite (STEPPER3, hoge);
digitalWrite (STEPPER4, hoge);
}
VOID Step_D() {}
digitalWrite (STEPPER1, hoge);
digitalWrite (STEPPER2, laag);
digitalWrite (STEPPER3, laag);
digitalWrite (STEPPER4, hoge);
}
ongeldig stepperforward() {}
een tand vooruit
Step_A(); delay(delaytime);
Step_B(); delay(delaytime);
Step_C(); delay(delaytime);
Step_D(); delay(delaytime);
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
We kunnen na het schrijven van de schets voor elke stappenmotor, de OnewireKeypad functie "addEventKey()" en "ListenforEventKey()" gebruiken om te bellen voor elke Stappenmotor en invoergegevens naar de waarde van een numerieke voor hun individuele stap-grootte.
Kijk naar de bijgevoegde volledige schets te zien van de volledige schets met alle de stappenmotoren LCD-display en de toetsen gebeurteniscode.