Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h>
- #include <Stepper.h>
- // analoge pin voor de lichtsensor
- int lightSensorpin = A0;
- int lightValue = 950; // > 900 zodat er in de eerste cycle geen object wordt gedetecteerd
- //afstandsensorpinnen
- int distanceSensorTrig = 2;
- int distanceSensorEcho = 4;
- // servo
- int ServoPin = 7;
- int ServoPositie = 0;
- Servo servo;
- // lopende band
- int pwm_a = 3; // pin voor aandrijving
- int dir_a = 2; // pin voor richting
- int snelheidLopendeBand = 255; // snelheid tussen 0 en 255
- // motor om magneet te hijsen
- const int stepsVoorHijsen = 1300;
- Stepper myStepper(stepsVoorHijsen, 8, 10, 9, 11); // pinnen 8, 10, 9, 11
- int snelheidStepper = 30;
- // afstandsensor
- int trigPin = 2;
- int echoPin = 4;
- long duration;
- int distance;
- //
- //
- //
- void setup() {
- // setup lichtsensor
- Serial.begin(9600);
- // setup voor de loopbandmotor
- pinMode(pwm_a, OUTPUT);
- pinMode(dir_a, OUTPUT);
- analogWrite(pwm_a, snelheidLopendeBand); //motor aanzetten
- // setup servomotor
- servo.attach(ServoPin);
- servo.write(170);
- // setup steppermotor
- myStepper.setSpeed(snelheidStepper);
- }
- //
- //
- //
- void loop() {
- // lichtwaarde
- lightValue = analogRead(lightSensorpin);
- // afstandsensor
- long duration, inches, cm;
- // zet de sensor aan voor 10 microseconden
- pinMode(trigPin, OUTPUT);
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- // waarde lezen en omzetten naar cm
- pinMode(echoPin, INPUT);
- duration = pulseIn(echoPin, HIGH);
- cm = microsecondsToCentimeters(duration);
- // waarde printen naar de console
- Serial.print(cm);
- Serial.println("cm");
- // detecteren van een (doorzichtig) object
- boolean ondoorzichtigobject = false;
- boolean doorzichtig = false;
- Serial.println(lightValue);
- if (lightValue > 900 && cm < 15) {
- Serial.println("DOORZICHTIG OBJECT GEVONDEN");
- doorzichtig = true;
- } else if (lightValue < 900 && cm < 15) {
- Serial.println("ONDOORZICHTIG OBJECT GEVONDEN");
- ondoorzichtigobject = true;
- }
- // steppermotor iets omhoog
- myStepper.step(100);
- // bij een ondoorzichtig object de magneet laten zakken en snel weer omhoog
- if (ondoorzichtigobject) {
- myStepper.step(-stepsVoorHijsen);
- Serial.println("magneet wordt gehesen");
- delay(100);
- myStepper.step(stepsVoorHijsen);
- }
- // servomotor
- // doorzichtige objecten van de band af slaan
- if (doorzichtig) {
- delay(4000); // eerst wachten tot het object bij de servo is aangekomen
- servo.write(0);
- delay(1000);
- servo.write(170);
- }
- // lichtwaarde
- lightValue = analogRead(lightSensorpin);
- }
- //
- //
- //
- long microsecondsToCentimeters(long microseconds)
- {
- // The speed of sound is 340 m/s or 29 microseconds per centimeter.
- // The ping travels out and back, so to find the distance of the
- // object we take half of the distance travelled.
- return microseconds / 29 / 2;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement