9. November 2010
Nach einer kurzen Einführung in die Welt der Servomotoren durften wir uns selber an DC-, Servo- und Steppermotor herantasten. DC-Motor Dieser Motor wird zur gleichmässigen Fortbewegung verwendet. 3 Pins wirken als Input für den Motor. Der erste Pin regelt den allgemeinen EIN/AUS-Zustand. Die anderen beiden stehen für Uhrzeiger- bzw. Gegenuhrzeigersinn. Sourcecode: #define ENABLE 12 #define DIR1 11 #define DIR2 10 #define SENSOR 0 byte message = 0; int wert = 0; int daten[] = {0, 0, 0}; boolean activated = false; boolean adapt = true; void setup() { pinMode(ENABLE, OUTPUT); pinMode(DIR1, OUTPUT); pinMode(DIR2, OUTPUT); pinMode(SENSOR, INPUT); digitalWrite(ENABLE, HIGH); digitalWrite(DIR1, LOW); digitalWrite(DIR2, LOW); Serial.begin(9600); } void loop() { wert = analogRead(SENSOR); wert /= 3; // Serial.println(daten[0]); Serial.println(activated == true); if (Serial.available() > 0){ message = Serial.read(); } if(adapt == true){ daten[0] = daten[1]; daten[1] = daten[2]; daten[2] = wert; delay(500); if (message == '1'){ analogWrite(DIR1, wert); digitalWrite(DIR2, LOW); } else if(message == '2'){ digitalWrite(DIR1, LOW); analogWrite(DIR2, wert); } } if(message == '0'){ digitalWrite(DIR1, LOW); digitalWrite(DIR2, LOW); activated = false; adapt = true; } if (daten[2] > 60 && activated == false){ Serial.println("ACTIVATED!!!"); activated = true; } if (daten[2] <= 60 && activated == true && adapt == true){ Serial.println("STOP ADAPTION!!!"); analogWrite(DIR1, daten[0]); adapt = false; } } [/sourcecode] Geschwindigkeit des DC Motors wird mittels Distanzsensor geregelt. [youtube]http://www.youtube.com/watch?v=tP7FjN9UyXo[/youtube] Wird die Hand weggezogen, behält der Motor die Geschwindigkeit (Haltepunkt). [youtube]http://www.youtube.com/watch?v=b7Q0tLl44Pw[/youtube]