Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

Motoren

14. November 2010

DC-Motor

-
-
-

Servo Motor

YouTube Preview Image
-
-
-

Stepper

- - -

Gruppenarbeit

Die Aufgabe war, irgend ein Countdown zu erstellen. Er musste nichts mit Zeit zu tun haben. Wir entschlossen uns, ein Rad mit einem Farbverlauf von rot zu grün als Countdown zu erstellen. Als Antrieb wählten wir einen Servo. Um das ganze möglichst stabil zu bauen, gingen wir in die Werkstatt und erstellten aus Holz, Karton und Styropor unser Gebilde.
Zuschneiden der Grundplatte
Anschrauben des Servos an unser Styroporrad
Anbringen des Rades an das Grundgerüst aus Holz
Die hälfte der Konstruktion steht
Das Rad haben wir mit einem Papier mit Verlauf beklebt.
Die gesamte Elektronik wird im Innern verstaut
Anlöten der Druckknöpfe
Anfang des Countdowns (rot)
Ende des Countdowns (grün)
Hinter dem Model befinden sich 2 Knöpfe für 2 Funktionen. Der untere lässt das Rad in 10 Schritten drehen. Beim Oberen dreht das Rad ruckfrei 180°. YouTube Preview Image YouTube Preview Image

// Sweep
// by BARRAGAN <http://barraganstudio.com>
// This example code is in the public domain.

#define BUT1 5                   // Button 1
#define BUT2 3                   // Button 2
#define LED 13                   // Licht für Rad
#define LEDSLEEP 11              // Licht für Schlafzustand
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
                // a maximum of eight servo objects can be created

boolean button1 = LOW;
boolean button2 = LOW;
int pos = 0;    // variable to store the servo position
int zaehler = 1;
boolean up = 1;

void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  Serial.begin( 9600 );
  pinMode(BUT1, INPUT);
  pinMode(BUT2, INPUT);
  pinMode(LED, OUTPUT);
  pinMode(LEDSLEEP, OUTPUT);
  digitalWrite(LED, HIGH);
  digitalWrite(BUT1, HIGH);      // Activate internal Pullups
  digitalWrite(BUT2, HIGH);      // Activate internal Pullups
}

void loop()
{

  button1 = digitalRead(BUT1);    // read a button connected to pin 4
  button2 = digitalRead(BUT2);    // read a button connected to pin 3

  Serial.print("button1");
  Serial.println(button1, DEC);
  Serial.print("button2");
  Serial.println(button2, DEC);

  if (button1 == LOW){        // in order to decide in which direction
         digitalWrite(LED, HIGH);
         analogWrite(LEDSLEEP, 0);
         myservo.write(180);    // tell servo to go to position in variable 'pos'

         for(pos = 180; pos>=0; pos-=18)     // goes from 180 degrees to 0 degrees
         {
          myservo.write(pos);              // tell servo to go to position in variable 'pos'
          delay(1000);

             if (pos == 0){
                  for (int i = 1; i < 6; i++){
                  digitalWrite(LED, LOW);
                  delay(200);
                  digitalWrite(LED, HIGH);
                  delay(200);
                  }
              } //ende if

                                // waits 15ms for the servo to reach the position
           } //ende for
     } //ende if

     else if (button2 == LOW){        // in order to decide in which direction
         digitalWrite(LED, HIGH);
         analogWrite(LEDSLEEP, 0);
         myservo.write(180);    // tell servo to go to position in variable 'pos'

         for(pos = 180; pos>=0; pos-=1)     // goes from 180 degrees to 0 degrees
         {
          Serial.println(pos, DEC);
          myservo.write(pos);              // tell servo to go to position in variable 'pos'
          delay(20);

             if (pos == 0){
                  for (int i = 1; i < 6; i++){
                  digitalWrite(LED, LOW);
                  delay(200);
                  digitalWrite(LED, HIGH);
                  delay(200);
                  }
              } //ende if

                                // waits 15ms for the servo to reach the position
        } //ende for

  } //ende if

  else if (button1 == HIGH && button2 == HIGH ){
    sleep();
  }
}

void sleep(){

     if (zaehler > 254){
        up = 0;
     }
      // wenn unten zähl rauf
     if(zaehler < 10){
       up = 1;
     }

     if (up == 1){
        zaehler += 1;
     }

     if (up == 0){
       zaehler -= 1;
     }

     digitalWrite(LED, LOW);
     analogWrite (LEDSLEEP, zaehler);
 }