Servo-Steuerung1

Projekt Beschreibung

In diesem Video präsentiere ich ein spannendes Arduino-Projekt, das die Steuerung von mehreren Servos mit analogen Eingängen zeigt. Wir erfassen die Positionen über Potentiometer und speichern diese ab, um sie später automatisch abzuspielen. Dieser Aufbau eignet sich ideal für Robotikanwendungen und Automatisierung.

  • Datum: 19:46:45, 1 August 2024

Inhalt des Videos:

  • Projektübersicht: Einführung in die Projektidee und die zu erreichenden Ziele.
  • Hardware-Setup: Detaillierte Erklärung der verwendeten Komponenten und des Aufbaus.
  • Code-Durchgang: Schritt-für-Schritt-Erklärung des Codes, der die Servos steuert, Positionen erfasst und abspielt.
  • Live-Demonstration: Vorführung des Systems, wie es Servopositionen aufzeichnet und automatisch abruft.

Komponenten:

  • Arduino Uno
  • 4 Servos
  • 4 Potentiometer (als analoge Eingänge)
  • Jumper-Kabel
  • Breadboard
  • LEDs (optional zur Anzeige von Positionen)
  • Externe Stromversorgung (falls erforderlich)

Code-Highlights:

  • Servo-Initialisierung: Festlegen der Anfangspositionen der Servos.
  • Positionserfassung: Erfassen und Speichern der Servopositionen über analoge Eingänge.
  • Automatische Bewegung: Abspielen der gespeicherten Positionen in einer Schleife.

Ressourcen:


#include 

int pos[5][3];


Servo servo_0;
Servo servo_1;
Servo servo_2;
Servo servo_3;

int rs[10][5];
int no=0;


int b1,b2;

void setup()
{
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
  
  servo_0.attach(10);
  servo_1.attach(11);
  servo_2.attach(12);
  servo_3.attach(9);

  pinMode(13, OUTPUT);
  pinMode(1, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);

  pinMode(6, INPUT);
  pinMode(7, INPUT);

  
}

void loop()
{
    digitalWrite(13, LOW);
      readPos();
    delay(25);
    b1 = digitalRead(6);
    if(b1==1){
        b1=0;
        delay(500);
        while(1){
         
            digitalWrite(13, 1);
            readPos();

        
            b2 = digitalRead(7);
            if(b2==1){
                no++;
                for(int i=0;i<=3;i++){
                    rs[no][i]=pos[i][0];
                }
                Serial.println(no);
                digitalWrite(no, HIGH); 
                Serial.println(no);
                delay(200);
            }
            b1 = digitalRead(6);
            if(b1 == 1 || no>=5) {
                digitalWrite(13, 0); 
                automove();
                
            }
        }
    } 
}

void readPos(){
    pos[0][0] = map(analogRead(A0), 0, 1023, 0, 179);
    pos[1][0] = map(analogRead(A1), 0, 1023, 0, 179);
    pos[2][0] = map(analogRead(A2), 0, 1023, 0, 179);
    pos[3][0] = map(analogRead(A3), 0, 1023, 0, 179);
    if(pos[0][1] != pos[0][0]) {
      servo_0.write(pos[0][0]);
      pos[0][1] = pos[0][0];
    }
    if(pos[1][1] != pos[1][0]) {
      servo_1.write(pos[1][0]);
      pos[1][1] = pos[1][0];
    }
    if(pos[2][1] != pos[2][0]){
      servo_2.write(pos[2][0]);
      pos[2][1] = pos[2][0];
    }
    if(pos[3][1] != pos[3][0]){
      servo_3.write(pos[3][0]);
      pos[3][1] = pos[3][0];
    }
}

void automove(){
    for(int i=1;i<=5;i++){
      digitalWrite(i,LOW);
    }
  
    while(1){
        for(int i=1;i<=5;i++){
            servo_0.write(rs[i][0]);
            servo_1.write(rs[i][1]);
            servo_2.write(rs[i][2]);
            servo_3.write(rs[i][3]);
            if( i<=5) digitalWrite(i, HIGH);
            delay(2000);
            if( i<=5) digitalWrite(i, LOW);
        }
    }

Mein Warenkorb
Wunschzettel
zuletzt angesehen
Kategorien