$5 stepper föraren (5 / 6 steg)
Steg 5: Riktig kod
byte stepporty; //what del av steg att gå till
byte val = 3; //delay mellan stegen
byte db = 4; / / db, da, pb, pa, och i alla kan någon pin stift 7 (digital pin2, andalog in1) på det standard pinout
det klämmer fast måste vara ingångsstift klocka/steg.
DB är out4
byte da = 3; //out3
byte pa = 0; //out1
byte pb = 1; //out2
byte = 1; //direction ingångsstift gör inte denna förändring
långa dsd = 100; //where vi vill motorn vara
långa pos; //where det är
void setup() {
Serial.BEGIN(9600);
attachInterrupt (0, count, RISING); //executes "void count" när stift 7 (avbrott 0) kommas med hög
pinMode (db, produktionen); //sets utgångar och ingångar
pinMode (da, produktionen);
pinMode (pb, produktionen);
pinMode (pa, produktionen);
pinMode (i, ingång);
}
void loop() {//this bara kontroller för att se om den behöver för att flytta framåt eller bakåt och går därför
om (dsd! = pos) {
IF(DSD < POS) {
Back();
Delay(val);
}
om (dsd > pos) {
FWD();
Delay(val);
// }
}}
void count() {//this steg i önskat läge när detta stift kommas med hög
Det måste använda samma PIN-koden eftersom
attiny85 bara har 5 stift (även återställning kunde användas som en i/o pin, det kan inte
vara reprogramed när det är gjort.
om (analogRead(in) > 1) {//this avgör om riktning är hög eller låg
dont fråga mig varför en fungerar, men det gör. Efter ca 7 timmar i sträck för att försöka fixa
här en rad kod, jag ger inte en råttas bakom varför det fungerar som det gör
DSD-= 1; framåt om positivt
} annat {
DSD += 1; //backward om dess inte
}}
void fwd() {//both fwd och figur som en del av steget är nästa, och öka ståndpunkten
och makt motorn därför.
POS ++;
växel (stepporty) {
fall 0:
One();
stepporty = 1;
bryta;
fall 1:
OneHalf();
stepporty = 2;
bryta;
fall 2:
Two();
stepporty = 3;
bryta;
fall 3:
twohalf();
stepporty = 4;
bryta;
fall 4:
Three();
stepporty = 5;
bryta;
fall 5:
threehalf();
stepporty = 6;
bryta;
fall 6:
Four();
stepporty = 7.
bryta;
fall 7:
fourhalf();
stepporty = 0;
bryta;
} }
void back() {
POS--;
växel (stepporty) {
fall 2:
One();
stepporty = 1;
bryta;
fall 3:
OneHalf();
stepporty = 2;
bryta;
fall 4:
Two();
stepporty = 3;
bryta;
fall 5:
twohalf();
stepporty = 4;
bryta;
fall 6:
Three();
stepporty = 5;
bryta;
fall 7:
threehalf();
stepporty = 6;
bryta;
fall 0:
Four();
stepporty = 7.
bryta;
fall 1:
fourhalf();
stepporty = 0;
bryta;
} }
void fourhalf() {
digitalWrite (db, hög), //4
digitalWrite (da, låg);
digitalWrite (pb, låg);
digitalWrite (pa, hög);
}
void four() {
digitalWrite (db, hög);
digitalWrite (da, låg);
digitalWrite (pb, låg);
digitalWrite (pa, låg);
}
void threehalf() {
digitalWrite (db, hög);
digitalWrite (da, hög);
digitalWrite (pb, låg);
digitalWrite (pa, låg);
}
void three() {
digitalWrite (db, låg);
digitalWrite (da, hög);
digitalWrite (pb, låg);
digitalWrite (pa, låg);
}
void twohalf() {
digitalWrite (db, låg);
digitalWrite (da, hög);
digitalWrite (pb, hög);
digitalWrite (pa, låg);
}
void two() {
digitalWrite (db, låg);
digitalWrite (da, låg);
digitalWrite (pb, hög);
digitalWrite (pa, låg);
}
void onehalf() {
digitalWrite (db, låg);
digitalWrite (da, låg);
digitalWrite (pb, hög);
digitalWrite (pa, hög);
}
void one() {
digitalWrite (db, låg), //1
digitalWrite (da, låg);
digitalWrite (pb, låg);
digitalWrite (pa, hög);
}