12.Projekt --Motorvezérlő shield L293D típusú IC-vel --V1.0
by Roboworld Hobbielektronika
Rövid leírás:
Ebben a rövid projektben bemutatjuk neked hogyan tudunk egy motorvezérlő shield segítségével egyszerre több motort (szervomotort, DC motort). A shield-en található L293D típusú vezérlő IC lesz segítségünkre.
Hardware:
1db Arduino Uno vagy Arduino Mega 2560
2db SG90 microservo vagy MG90S microservo
1db Motorvezérlő shield L293D
2db DC motor
Jumper kábel
Kapcsolás az Arduino-hoz:
A motorshieldet egyszerűen csak össze kell pattintani az Arduinoval és már használható is.
Lépések:
1. Töltsd le AF_Motor library-t a fenti link segítségével
2. Nyisd meg az Arduino IDE-t
3. Felső sorban Vázlat/ Könyvtár tartalmazása/ .ZIP könyvtár hozzáadása…
4. Válaszd ki AF_Motor.zip fájlt onnan ahová letöltötted.
5. Open
6. Kész, hozzáadás sikeres
Az összeilletés után csatlakoztasd a microszervo motorokat, illetve a DC motorokat a Shieldhez a képen látható módon. A fekete szervomotor a SERVO_1 csatlakozóra van kötve amit a bal felső sarokban láthatsz. A kékszínű pedig a SERVO_2 csatlakozóra. A DC motor a jobb felső sarokban (amelyiknek lila vezetéke van) az M4-es csatlakozóra van kötve. A mellette lévő szervomotor pedig az M3-as csatlakozóra (amelyik barna vezetékes). Az egyetlen csatlakozó amelyik üresen maradt középen a föld. Tápellátásként egy 9V-os elemet használunk, amelynek az egyik pólusát a +M lábhoz csatlakoztatunk a másikat pedig a GND-hez. Ha a LED a shielden világítani kezd az annyit jelent, hogy a feszültség alatt van vagyis a shield készen áll a „munkára”. Ezek után következzen a programozás.
Programozás, mintakód
#include //Motorshieldhez tartozó library
#include
int angle1 = 90; //szög1 beállítása:90 fokra
int angle2 = 90; //szög2 beállítása:90 fokra
AF_DCMotor motor1(3); //DC motor1 definiálása
AF_DCMotor motor2(4); //DC motor2 definiálása
Servo servo1;
Servo servo2;
void setup()
{
servo1.attach(9);
servo2.attach(10);
// Serial kommunikacio beallitasa
Serial.begin(9600); //
Serial.flush();
}
void loop()
{
String input = "";
// Olvas bármilyen soros bemenetet
while (Serial.available() > 0)
{
input += (char) Serial.read(); // Olvas egy char változót
delay(5); // 5ms-ot vár hogy a következő char változónak legyen ideje beérkezni
}
if (input == "0")
{
motor1.run(RELEASE);
motor2.run(RELEASE);
}
else if (input == "5")
{
angle1 = angle1 + 1;
servo1.write(angle1);
}
else if (input == "6")
{
angle1 = angle1 - 1;
servo1.write(angle1);
}
else if (input == "7")
{
angle2 = angle2 + 1;
servo2.write(angle2);
}
else if (input == "8")
{
angle2 = angle2 - 1;
servo2.write(angle2);
}
else if (input == "1")
{
motor1.setSpeed(200); //Nem biztos hogy a motor balra fordul
motor1.run(FORWARD); //ha nem fordul balra akkor funkcióban szereplő FORWARD-ot BACKWARD-ra kell átírni.
}
else if (input == "2")
{
motor1.setSpeed(200);
motor1.run(BACKWARD); // ezt pedig FORWARD-ra változtatni.
}
else if (input == "3")
{
motor2.setSpeed(200); //Nem biztos hogy a motor balra fordul
motor2.run(FORWARD); //ha nem fordul balra akkor funkcióban szereplő FORWARD-ot BACKWARD-ra kell átírni.
}
else if (input == "4")
{
motor2.setSpeed(200);
motor2.run(BACKWARD);// ezt pedig FORWARD-ra változtatni.
}
}
Letöltés:
A leírás PDF-ben: Itt található
Library-t innen tudod letölteni
Megjegyzések
Megjegyzés küldése