Sensor kran (4 / 5 steg)
Steg 4: kod
I följande kod används för att styra motorn baserat på RC-kretsdesign. CapacitiveSensor biblioteket som används för att förenkla fjärranalys. Du kan hitta och ladda ner det här biblioteket här. Kommentarer i kod förhoppningsvis tänds kodens syfte.
#include CapacitiveSensor
cs_4_6 = CapacitiveSensor(4,6); 10M motstånd mellan stift 4 & 6. Stift 4 är signal-pin och pin 6 är givarstaven.
#define pin1 12 / / detta är Arduino stiften som vi använder för att aktivera rullar 1-4 av stegmotor
#define pin2 13
#define pin3 10
#define pin4 11
#define fördröjningstid x //delay tid i ms att styra stepper motor fördröjningstid.
int x = 8. //8 handlar om den snabbaste som kan ge tillförlitlig drift utan saknas steg
void Step_A() {
digitalWrite (pin1, hög), //turn på spole 1
digitalWrite (pin2, låg);
digitalWrite (pin3, låg);
digitalWrite (pin4, låg);
}
void Step_B() {
digitalWrite (pin1, låg);
digitalWrite (pin2, hög), //turn på spolen 2
digitalWrite (pin3, låg);
digitalWrite (pin4, låg);
}
void Step_C() {
digitalWrite (pin1, låg);
digitalWrite (pin2, låg);
digitalWrite (pin3, hög); slå på spole 3
digitalWrite (pin4, låg);
}
void Step_D() {
digitalWrite (pin1, låg);
digitalWrite (pin2, låg);
digitalWrite (pin3, låg);
digitalWrite (pin4, hög); slå på spolen 4
}
void step_OFF() {
digitalWrite (pin1, låg); stänga alla spolar
digitalWrite (pin2, låg);
digitalWrite (pin3, låg);
digitalWrite (pin4, låg);
}
dessa funktioner köra framåt och bakåt för de ovannämnda konfigurationerna
riktning mot en stegmotor beror på den ordning i vilken spolarna är påslagna.
void forward() {//one tand fram
step_OFF();
lång total2 = cs_4_6.capacitiveSensor(30);
Serial.Print(total2); seriella avtrycken sensoren utgång 2. Detta är nödvändigt för att säkerställa signalen uppdateras från början.
Serial.Print("\n");
Delay(delaytime);
Step_A();
Delay(delaytime);
Step_B();
Delay(delaytime);
Step_C();
Delay(delaytime);
Step_D();
Delay(delaytime);
}
void backward() {//one tand bakåt
step_OFF();
lång total2 = cs_4_6.capacitiveSensor(30);
Serial.Print(total2); seriella avtrycken sensoren utgång 2. Detta är nödvändigt för att säkerställa signalen uppdateras från början.
Serial.Print("\n");
Delay(delaytime);
Step_D();
Delay(delaytime);
Step_C();
Delay(delaytime);
Step_B();
Delay(delaytime);
Step_A();
Delay(delaytime);
}
/***************************setup function****************************************************/
void setup() {
Serial.BEGIN (9600); //start seriell kommunikation
pinMode (pin1, produktionen); initiera motor pins
pinMode (pin2, produktionen);
pinMode (pin3, produktionen);
pinMode (pin4, produktionen);
}
/***************************main loop*********************************************************/
void loop() {
fördröjningstid = x;
int numberOfSteps = 30.
lång total2 = cs_4_6.capacitiveSensor(30);
Serial.Print(total2); sensor utdata 2
Serial.Print("\n");
om (total2 > 2000) {//Capacitive Avkännings villkorad. OBS: DESSA TRÖSKELVÄRDEN VARIERA MED FOLIE, RESISTOR STORLEK OCH ANDRA VARIABLER. Var noga med att testa dessa värden innan projektet konstruktion.
While(numberOfSteps>0) //After ökar med en viss tröskel mellan två mätperioder, initiera stegmotor bakåt
{
Backward(); gå bakåt
numberOfSteps--;}}
om (total2 < 500 & & total2 > 150) {//If minskar förbi en tröskel, initiera stegmotor fram
While(numberOfSteps>0)
{
Forward(); framöver
numberOfSteps--;}}
om (total2 < 150) {/ / detta villkor görs så buller hålls våra av ekvationen.
step_OFF();
}
Delay(50);
}