Über dieses Projekt
Im Internet sind nur zwei Arten von Armen erhältlich, entweder hydraulisch, die manuell gesteuert werden, oder Roboter, die über eine App oder etwas anderes gesteuert werden. Dies Projekt ist die Kombination aus beidem.
Bevor Sie beginnen, stellen Sie sicher, dass Sie über Kenntnisse in der Arduino-Codierung verfügen.
verbinde den hc05 auf diese Weise mit dem arduino.
Dies ist der l298-Motortreiber [ena, in1, in2- motor A], [enb, in3, in4- motor B], ena &enb dienen der Drehzahlregelung von Motor A und Motor B.
Ich habe den Code ausführlich erklärt, folge dem Code und mache die Schaltung. Vergewissern Sie sich vor dem Einschalten der Stromversorgung, dass alle Komponenten ordnungsgemäß geerdet sind.
Code
hydraulic.inoArduino
// 1. und 2. Motortreiber ist für die ARM-Steuerung// 3. Motortreiber ist für den LOKOMOTIVEN Teil//1. Motortreiber [BASE(2,3) UND SCHULTER(4,7)]int m1IN1 =2; //in1int m1IN2 =3; //in2int m1IN3 =4; //in3int m1IN4 =5; //in4int m1ENA =6; // Für die Geschwindigkeitssteuerung wird die Geschwindigkeitssteuerung hier nicht verwendet, also halten Sie sie während der Bewegung auf HIGH und stellen Sie sie auf LOW, um den Motor zu stoppen. m1ENB =7; // für die Geschwindigkeitssteuerung wird die Geschwindigkeitssteuerung hier nicht verwendet, also halten Sie sie während der Fahrt auf HIGH und auf LOW, um den Motor zu stoppen / / 2. Motortreiber [ELBOW (8, 9) AND GRIPPER (12, 13)]int m2IN1 =8; //in1int m2IN2 =9; //in2int m2IN3 =10; //in3int m2IN4 =11; //in4int m2ENA=12; // für die Geschwindigkeitssteuerung wird die Geschwindigkeitssteuerung hier nicht verwendet, also halten Sie sie während der Bewegung auf HIGH und stellen Sie sie auf LOW, um den Motor zu stoppen. m2ENB =13; // Für die Geschwindigkeitssteuerung wird die Geschwindigkeitssteuerung hier nicht verwendet, also halten Sie sie während der Fahrt auf HIGH und auf LOW, um den Motor zu stoppen / / 3. Motortreiber [CAR (INI, IN2) =RIGHT (IN3, IN4) =LEFT] m3IN1=14; // in1 14- A0-Pin auf Arduinoint m3IN2 =15; // in2 15-A1int m3IN3=16; // in3 16-A2int m3IN4=17; // in4 17-A3int m3ENA=18; // ena 18-A4 ,hier können Sie die Geschwindigkeit des Lokteils mit Geschwindigkeitsregelung steuern, dafür müssen Sie analogWrite() anstelle von digitalWrite() verwendenint m3ENB=19; // enb 19-A5 , hier können Sie die Geschwindigkeit des Lokteils mit der Geschwindigkeitssteuerung steuern, dafür müssen Sie analogWrite () anstelle von digitalWrite () verwenden.void setup () { pinMode (m1IN1, OUTPUT); PinMode (m1IN2, AUSGANG); pinMode (m1IN3, AUSGANG); PinMode (m1IN4, AUSGANG); pinMode (m2IN1,OUTPUT); pinMode (m2IN2,OUTPUT); pinMode (m2IN3, AUSGANG); pinMode (m2IN4, AUSGANG); pinMode (m1ENA, AUSGANG); pinMode (m1ENB, AUSGANG); pinMode (m2ENA, AUSGANG); pinMode (m2ENB, AUSGANG); pinMode (m3IN1,OUTPUT); pinMode (m3IN2, AUSGANG); PinMode (m3IN3, AUSGANG); PinMode (m3IN4, AUSGANG); pinMode (m3ENA, AUSGANG); pinMode (m3ENB, AUSGANG); Serial.begin (9600);}void loop () { char ip ='0'; while(Serial.available()>0) // prüfen, ob der serielle Port einen Wert vom hc05 empfängt oder nicht { ip=Serial.read(); // liest die Daten vom seriellen Port delay(10); } switch (ip) { case '6':// SCHULTER NACH OBEN digitalWrite (m1IN3, HIGH); digitalWrite (m1IN4, LOW); digitalWrite (m1ENA, HOCH); digitalWrite (m1ENB, HOCH); brechen; case '5' :// SCHULTER UNTEN digitalWrite (m1IN3,LOW); digitalWrite (m1IN4, HOCH); digitalWrite (m1ENA, HOCH); digitalWrite (m1ENB, HOCH); brechen; Fall '1' :// ELBOW UP digitalWrite(m2IN3,HIGH); digitalWrite(m2IN4,LOW); digitalWrite (m2ENA, HOCH); digitalWrite (m2ENB, HOCH); brechen; Fall '2' :// Ellenbogen UNTEN digitalWrite(m2IN3,LOW); digitalWrite (m2IN4, HOCH); digitalWrite (m2ENA, HOCH); digitalWrite (m2ENB, HOCH); brechen; Fall '8' :// GRIP-VERTRAG digitalWrite(m2IN1,HIGH); digitalWrite(m2IN2,LOW); digitalWrite (m2ENA, HOCH); digitalWrite (m2ENB, HOCH); brechen; case '7' :// GRIP EXPAND digitalWrite(m2IN1,LOW); digitalWrite (m2IN2, HOCH); digitalWrite (m2ENA, HOCH); digitalWrite (m2ENB, HOCH); brechen; Fall '3' :// BASE CLOCK digitalWrite(m1IN1,HIGH); digitalWrite (m1IN2,LOW); digitalWrite (m1ENA, HOCH); digitalWrite (m1ENB, HOCH); brechen; Fall '4' :// BASE ANTICLOCK digitalWrite (m1IN1,LOW); digitalWrite (m1IN2, HOCH); digitalWrite (m1ENA, HOCH); digitalWrite (m1ENB, HOCH); brechen; Fall '9':// AUS digitalWrite (m1IN1,LOW); digitalWrite (m1IN2,LOW); digitalWrite (m1IN3,LOW); digitalWrite (m1IN4, LOW); digitalWrite(m1ENA,LOW); digitalWrite(m1ENB,LOW); digitalWrite(m2IN1,LOW); digitalWrite(m2IN2,LOW); digitalWrite(m2IN3,LOW); digitalWrite(m2IN4,LOW); digitalWrite(m2ENA,LOW); digitalWrite(m2ENB,LOW); digitalWrite(m3IN1,LOW); digitalWrite (m3IN2,LOW); digitalWrite (m3IN3,LOW); digitalWrite(m3IN4,LOW); digitalWrite(m3ENA,LOW); digitalWrite(m3ENB,LOW); brechen; Fall 'A' :// FORWARD digitalWrite (m3IN1,HIGH); digitalWrite (m3IN2,LOW); digitalWrite (m3IN3, HOCH); digitalWrite(m3IN4,LOW); digitalWrite (m3ENA, HOCH); digitalWrite (m3ENB, HOCH); brechen; case 'D' :// BACKWARD digitalWrite(m3IN1,LOW); digitalWrite (m3IN2, HOCH); digitalWrite (m3IN3,LOW); digitalWrite (m3IN4, HOCH); digitalWrite (m3ENA, HOCH); digitalWrite (m3ENB, HOCH); brechen; Fall 'B' :// RECHTS digitalWrite (m3IN1,LOW); digitalWrite (m3IN2, HOCH); digitalWrite (m3IN3, HOCH); digitalWrite(m3IN4,LOW); digitalWrite (m3ENA, HOCH); digitalWrite (m3ENB, HOCH); brechen; Fall 'C' :// LINKS digitalWrite (m3IN1,HIGH); digitalWrite (m3IN2,LOW); digitalWrite (m3IN3,LOW); digitalWrite (m3IN4, HOCH); digitalWrite (m3ENA, HOCH); digitalWrite (m3ENB, HOCH); brechen; }}