Dies ist eine alte Version des Dokuments!
int trigger = 34; int echo = 36; int rotation=0; int array[180]; int weitesteEntfernung; int optimalerWinkel; int step1=24; int dir1=22; int step2=26; int dir2=28; int step3=30; int dir3=32; #include <Servo.h> Servo myservo; long duration, inches, cm; void setup() { pinMode(step1, OUTPUT); pinMode(dir1, OUTPUT); pinMode(step2, OUTPUT); pinMode(dir2, OUTPUT); pinMode(step3, OUTPUT); pinMode(dir3, OUTPUT); digitalWrite(dir2, HIGH); digitalWrite(dir3, HIGH); Serial.begin(9600); myservo.attach(42); pinMode(trigger, OUTPUT); pinMode(echo, INPUT); } void loop() { entfernungsMesser(); if(cm<10) { array[89]=0; digitalWrite(dir2, HIGH); digitalWrite(dir3, LOW); for(int i=90;i<180;i++) { myservo.write(i); array[i]=cm; if(array[i]>array[i-1]) { weitesteEntfernung=array[i]; optimalerWinkel=i; } } for(int i=180;i<0;i--) { myservo.write(i); entfernungsMesser(); array[i]=cm; if(array[i]>array[i-1]) { weitesteEntfernung=array[i]; optimalerWinkel=i; } } for(int j=1;j<143;j++) { digitalWrite(step2, HIGH); digitalWrite(step3, HIGH); delay(10); digitalWrite(step2, LOW); digitalWrite(step3, LOW); delay(10); } } } void entfernungsMesser() { digitalWrite(trigger, LOW); delayMicroseconds(2); digitalWrite(trigger, HIGH); delayMicroseconds(10); digitalWrite(trigger, LOW); //duration = pulseIn(echo, HIGH); inches = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); Serial.println(cm, DEC); delay(100); } long microsecondsToInches(long microseconds){ return microseconds / 74 / 2; } long microsecondsToCentimeters(long microseconds){ return microseconds / 29 / 2; }