Stap 7: De lichte zoeken Arduino schets
De volgende code belichaamt de Arduino schets voor het zoeken naar een helder licht met een stappenmotor.
/*
Stepper Motor Control - hunt te vinden een sterke lichtbron dit programma rijdt een unipolaire of bipolaire stappenmotoren. De motor is gekoppeld aan digitale pinnen 8-11 van de Arduino. De motor moet een revolutie in één richting, dan een revolutie in de andere richting draaien. Gemaakt door Scott Turnbull, 30 oktober 2014 * /
#include
Const int stepsPerRevolution = 72; verandering aanpassen aan het aantal stappen per omwenteling / / voor uw motor
de stepper-bibliotheek op pennen 8 t/m 11 initialiseren:
Stepper myStepper (stepsPerRevolution, 8,11,12,13);
int sensorPin = A4; Selecteer de invoer pin voor de photoresistor
int sensorPin2 = A5; Selecteer de invoer pin voor 2e photoresistor
int sensorValue = 0; variabele voor lichte invoerwaarde
int sensorValue2 = 0; variabele voor 2de licht ingangswaarde
int sensecalibrate = 0; een waarde om te kalibreren gecompenseerde sensor-waardes
int sensorValue_old = 0; vorige waarde van de sensor
int stepvalue = 2; de waarde voor stap om te gaan
int stepbump = stepvalue; waarde (met teken) op elke update verplaatsen
int stepmax = stepsPerRevolution/4; Hoe ver moet vegen aan weerszijden
int steptally = 0; aantal stappen behoeden voor aanvangspositie
VOID Setup {}
Zet de snelheid bij 5 omwentelingen per minuut:
myStepper.setSpeed(5); Initialiseer de seriële poort:
Serial.begin(9600);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
sensorValue = analogRead(sensorPin);
sensorValue2 = analogRead(sensorPin2);
sensecalibrate = sensorValue - sensorValue2;
}
void loop {/ / Lees de waarde van de sensor:
sensorValue = analogRead(sensorPin);
sensorValue2 = analogRead (sensorPin2) + sensecalibrate;
Serial.Print ("waarde van de Sensor:");
Serial.Print(sensorValue);
Serial.Print ("Sensor waarde 2:");
Serial.println(sensorValue2); Serial.Print ("stap Tally:"); Serial.println(steptally);
als licht sterker is, blijven bewegen in die richting
Als (sensorValue > sensorValue2) {}
Als (abs(steptally+stepvalue) < stepmax) {}
myStepper.step(stepvalue);
steptally = steptally + stepvalue;
} else {}
myStepper.step(-10);
steptally = steptally -10;
}
} else {}
licht is minder scherp, richting schakelen als dubbel terug
stepbump = 0-stepvalue;
Als (abs(steptally+stepbump) < stepmax) {}
myStepper.step(stepbump);
steptally = steptally + stepbump;
} else {}
myStepper.step(10);
steptally = steptally + 10;
}
}
delay(400);
}