Advertisement
wpinda

Arduino programma

Feb 22nd, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.09 KB | None | 0 0
  1. #include <Servo.h>
  2. #include <Stepper.h>
  3.  
  4.   // analoge pin voor de lichtsensor
  5.   int lightSensorpin = A0;
  6.   int lightValue = 950; // > 900 zodat er in de eerste cycle geen object wordt gedetecteerd
  7.  
  8.   //afstandsensorpinnen
  9.   int distanceSensorTrig = 2;
  10.   int distanceSensorEcho = 4;
  11.  
  12.   // servo
  13.   int ServoPin = 7;
  14.   int ServoPositie = 0;
  15.   Servo servo;
  16.  
  17.   // lopende band
  18.   int pwm_a = 3; // pin voor aandrijving
  19.   int dir_a = 2; // pin voor richting
  20.   int snelheidLopendeBand = 255; // snelheid tussen 0 en 255
  21.  
  22.   // motor om magneet te hijsen
  23.   const int stepsVoorHijsen = 1300;
  24.   Stepper myStepper(stepsVoorHijsen, 8, 10, 9, 11); // pinnen 8, 10, 9, 11
  25.   int snelheidStepper = 30;
  26.  
  27.   // afstandsensor
  28.   int trigPin = 2;
  29.   int echoPin = 4;
  30.   long duration;
  31.   int distance;
  32.  
  33.   //
  34.   //
  35.   //
  36.  
  37. void setup() {
  38.  
  39.   // setup lichtsensor
  40.   Serial.begin(9600);
  41.  
  42.   // setup voor de loopbandmotor
  43.   pinMode(pwm_a, OUTPUT);
  44.   pinMode(dir_a, OUTPUT);
  45.   analogWrite(pwm_a, snelheidLopendeBand); //motor aanzetten
  46.  
  47.   // setup servomotor
  48.   servo.attach(ServoPin);
  49.   servo.write(170);
  50.  
  51.   // setup steppermotor
  52.   myStepper.setSpeed(snelheidStepper);
  53.  
  54. }
  55.  
  56.  
  57.   //
  58.   //
  59.   //
  60.  
  61.  
  62. void loop() {
  63.  
  64.     // lichtwaarde
  65.   lightValue = analogRead(lightSensorpin);
  66.  
  67.     // afstandsensor
  68.   long duration, inches, cm;
  69.  
  70.   // zet de sensor aan voor 10 microseconden
  71.   pinMode(trigPin, OUTPUT);
  72.   digitalWrite(trigPin, LOW);
  73.   delayMicroseconds(2);
  74.   digitalWrite(trigPin, HIGH);
  75.   delayMicroseconds(10);
  76.   digitalWrite(trigPin, LOW);
  77.  
  78.   // waarde lezen en omzetten naar cm
  79.   pinMode(echoPin, INPUT);
  80.   duration = pulseIn(echoPin, HIGH);
  81.   cm = microsecondsToCentimeters(duration);
  82.  
  83.   // waarde printen naar de console
  84.   Serial.print(cm);
  85.   Serial.println("cm");
  86.  
  87.  
  88.   // detecteren van een (doorzichtig) object
  89.   boolean ondoorzichtigobject = false;
  90.   boolean doorzichtig = false;
  91.  
  92.   Serial.println(lightValue);
  93.  
  94.   if (lightValue > 900 && cm < 15) {
  95.     Serial.println("DOORZICHTIG OBJECT GEVONDEN");
  96.     doorzichtig = true;
  97.   } else if (lightValue < 900 && cm < 15) {
  98.     Serial.println("ONDOORZICHTIG OBJECT GEVONDEN");
  99.     ondoorzichtigobject = true;
  100.   }
  101.  
  102.  
  103.   // steppermotor iets omhoog
  104.   myStepper.step(100);
  105.  
  106.     // bij een ondoorzichtig object de magneet laten zakken en snel weer omhoog
  107.   if (ondoorzichtigobject) {
  108.     myStepper.step(-stepsVoorHijsen);
  109.     Serial.println("magneet wordt gehesen");
  110.     delay(100);
  111.     myStepper.step(stepsVoorHijsen);
  112.   }
  113.  
  114.  
  115.   // servomotor
  116.   // doorzichtige objecten van de band af slaan
  117.   if (doorzichtig) {
  118.     delay(4000); // eerst wachten tot het object bij de servo is aangekomen
  119.     servo.write(0);
  120.     delay(1000);
  121.     servo.write(170);
  122.   }
  123.  
  124.  
  125.     // lichtwaarde
  126.   lightValue = analogRead(lightSensorpin);
  127.  
  128. }
  129.  
  130.  
  131.   //
  132.   //
  133.   //
  134.  
  135.  
  136. long microsecondsToCentimeters(long microseconds)
  137. {
  138.   // The speed of sound is 340 m/s or 29 microseconds per centimeter.
  139.   // The ping travels out and back, so to find the distance of the
  140.   // object we take half of the distance travelled.
  141.   return microseconds / 29 / 2;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement