Lengan Robot Arduino DIY dengan Kontrol Smartphone
Dalam tutorial ini kita akan belajar cara membuat Lengan Robot Arduino yang dapat dikontrol dan diprogram secara nirkabel menggunakan aplikasi Android custom-build. Saya akan menunjukkan kepada Anda seluruh proses pembuatannya, mulai dari mendesain dan mencetak 3D bagian-bagian robot, menghubungkan komponen elektronik dan memprogram Arduino, hingga mengembangkan aplikasi Android kami sendiri untuk mengendalikan Lengan Robot.
Anda dapat menonton video berikut atau membaca tutorial tertulis di bawah ini.
Ringkasan
Dengan menggunakan penggeser di aplikasi, kita dapat mengontrol pergerakan setiap servo atau sumbu lengan robot secara manual. Juga menggunakan tombol "Simpan" kita dapat merekam setiap posisi atau langkah dan kemudian lengan robot dapat secara otomatis menjalankan dan mengulangi langkah-langkah ini. Dengan tombol yang sama kita dapat menghentikan sementara operasi otomatis serta mengatur ulang atau menghapus semua langkah sehingga kita dapat merekam yang baru.
Model 3D Lengan Robot Arduino
Untuk memulainya, saya mendesain Lengan Robot menggunakan perangkat lunak pemodelan 3D Solidworks. Lengan memiliki 5 derajat kebebasan.
Untuk 3 sumbu pertama, pinggang, bahu dan siku, saya menggunakan servo MG996R, dan untuk 2 sumbu lainnya, gulungan pergelangan tangan dan pitch pergelangan tangan, serta gripper saya menggunakan servo mikro SG90 yang lebih kecil.
Anda dapat menemukan dan mengunduh model 3D ini, serta menjelajahinya di browser Anda di Thangs:
Unduh model 3D rakitan dari Thangs.
Terima kasih Terima kasih telah mendukung tutorial ini.
File STL untuk Pencetakan 3D:
File STL Lengan Robot Arduino
1 file 0.00 KB Unduh
Mencetak Lengan Robot 3D
Menggunakan Printer 3D baru saya, Creality CR-10, saya mencetak 3D semua bagian untuk lengan robot Arduino.
Di sini saya ingin memberikan teriakan ke Banggood.com karena telah memberi saya printer 3D yang luar biasa ini. Kualitas pencetakan Creality CR-10 luar biasa untuk titik harganya dan yang juga hebat darinya adalah hampir 90% sudah dirakit sebelumnya.
Untuk menyelesaikan perakitan, kita hanya perlu menyambungkan rangka bagian atas dan bawah menggunakan beberapa baut dan braket, lalu menyambungkan komponen elektronik dengan kotak kontrol menggunakan kabel yang disediakan.
Sebelum mencobanya, disarankan untuk memeriksa apakah roda roller cukup kencang, dan jika tidak, Anda cukup menggunakan mur eksentrik untuk mengencangkannya. Dan selesai, setelah meratakan tempat tidur pencetakan 3D, Anda siap untuk mengubah kreasi 3D Anda menjadi kenyataan.
Saya sudah menyiapkan semua suku cadang untuk Lengan Robot Arduino hanya dalam beberapa jam.
Baca selengkapnya:15 Aksesori dan Alat Printer 3D Teratas yang Harus Dimiliki
Merakit Lengan Robot
Ok, jadi pada titik ini kita siap untuk merakit lengan robot. Saya mulai dengan dasar tempat saya memasang motor servo pertama menggunakan sekrup yang disertakan dalam paketnya. Kemudian pada poros keluaran servo saya memasang baut klakson bundar.
Dan di atasnya saya letakkan bagian atas dan kencangkan menggunakan dua sekrup.
Di sini lagi, pertama-tama pergi servo, lalu klakson bundar ke bagian berikutnya, dan kemudian mereka diamankan satu sama lain menggunakan baut pada poros keluaran.
Kita dapat melihat di sini bahwa pada sumbu bahu itu adalah ide yang baik untuk memasukkan semacam pegas atau dalam kasus saya, saya menggunakan karet gelang untuk memberikan bantuan pada servo karena servo ini membawa seluruh berat sisa lengan juga. sebagai muatan.
Dengan cara yang sama saya melanjutkan untuk merakit sisa lengan robot. Untuk mekanisme gripper, saya menggunakan baut dan mur berukuran 4 milimeter untuk memasangnya.
Akhirnya saya memasang mekanisme gripper ke servo terakhir dan lengan robot Arduino selesai.
Diagram Sirkuit Lengan Robot Arduino
Tahap selanjutnya adalah menghubungkan elektronik. Diagram rangkaian proyek ini sebenarnya cukup sederhana. Kami hanya membutuhkan papan Arduino dan modul Bluetooth HC-05 untuk komunikasi dengan smartphone. Pin kontrol dari enam motor servo terhubung ke enam pin digital papan Arduino.
Untuk memberi daya pada servos kita membutuhkan 5V, tetapi ini harus berasal dari sumber daya eksternal karena Arduino tidak mampu menangani jumlah arus yang semuanya dapat ditarik. Sumber daya harus mampu menangani setidaknya 2A arus. Jadi, setelah kami menghubungkan semuanya, kami dapat melanjutkan ke pemrograman Arduino dan membuat aplikasi Android.
Anda bisa mendapatkan komponen yang diperlukan untuk contoh ini dari tautan di bawah:
Motor Servo MG996R……………………….….
Motor Servo Mikro SG90 ……..……….…….…….
Modul Bluetooth HC-05 ………………….…
Papan Arduino ……………………………………….
Supply Daya DC 5V 2A ………………….…..
Kode Lengan Robot Arduino
Karena kodenya sedikit lebih panjang, untuk pemahaman yang lebih baik, saya akan memposting kode sumber program di bagian dengan deskripsi untuk setiap bagian. Dan di akhir artikel ini saya akan memposting source code lengkapnya.
Jadi pertama-tama kita perlu menyertakan perpustakaan SoftwareSerial untuk komunikasi serial modul Bluetooth serta perpustakaan servo. Kedua library ini disertakan dengan Arduino IDE sehingga Anda tidak perlu menginstalnya secara eksternal. Kemudian kita perlu mendefinisikan enam servo, modul Bluetooth HC-05 dan beberapa variabel untuk menyimpan posisi servo saat ini dan sebelumnya, serta array untuk menyimpan posisi atau langkah-langkah untuk mode otomatis.
#include <SoftwareSerial.h>
#include <Servo.h>
Servo servo01;
Servo servo02;
Servo servo03;
Servo servo04;
Servo servo05;
Servo servo06;
SoftwareSerial Bluetooth(3, 4); // Arduino(RX, TX) - HC-05 Bluetooth (TX, RX)
int servo1Pos, servo2Pos, servo3Pos, servo4Pos, servo5Pos, servo6Pos; // current position
int servo1PPos, servo2PPos, servo3PPos, servo4PPos, servo5PPos, servo6PPos; // previous position
int servo01SP[50], servo02SP[50], servo03SP[50], servo04SP[50], servo05SP[50], servo06SP[50]; // for storing positions/steps
int speedDelay = 20;
int index = 0;
String dataIn = "";Code language: Arduino (arduino)
Di bagian setup kita perlu menginisialisasi servos dan modul Bluetooth dan memindahkan lengan robot ke posisi awal. Kami melakukannya menggunakan fungsi write() yang hanya memindahkan servo ke posisi apa pun dari 0 hingga 180 derajat.
Selanjutnya pada bagian loop, dengan menggunakan fungsi Bluetooth.available() , kita selalu mengecek apakah ada data yang masuk dari Smartphone. Jika benar, menggunakan fungsi readString() kita membaca data sebagai string dan menyimpannya ke dalam variabel dataIn. Bergantung pada data yang tiba, kami akan memberi tahu lengan robot apa yang harus dilakukan.
// Check for incoming data
if (Bluetooth.available() > 0) {
dataIn = Bluetooth.readString(); // Read the data as stringCode language: Arduino (arduino)
Kontrol Aplikasi Android
Mari kita lihat aplikasi Android sekarang dan lihat jenis data apa yang sebenarnya dikirim ke Arduino.
Saya membuat aplikasi menggunakan aplikasi online MIT App Inventor dan begini cara kerjanya. Di bagian atas kami memiliki dua tombol untuk menghubungkan smartphone ke modul Bluetooth HC-05. Kemudian di sisi kiri kita memiliki gambar lengan robot, dan di sisi kanan kita memiliki enam slider untuk mengontrol servo dan satu slider untuk kontrol kecepatan.
Setiap penggeser memiliki nilai awal, minimum dan maksimum yang berbeda sesuai dengan sendi lengan robot. Di bagian bawah aplikasi, kami memiliki tiga tombol, SAVE, RUN dan RESET di mana kami dapat memprogram lengan robot untuk berjalan secara otomatis. Ada juga label di bawah yang menunjukkan jumlah langkah yang telah kita simpan. Namun demikian, untuk detail lebih lanjut tentang cara membuat aplikasi seperti ini menggunakan MIT App Inventor, Anda dapat memeriksa tutorial terperinci saya yang lain untuk itu.
Ok, sekarang mari kita lihat program atau blok di belakang aplikasi. Pertama, di sisi kiri kita memiliki blok untuk menghubungkan smartphone ke modul Bluetooth.
Kemudian kami memiliki blok slider untuk kontrol posisi servo dan blok tombol untuk memprogram lengan robot. Jadi jika kita mengubah posisi slider, menggunakan fungsi Bluetooth .SendText, kita mengirim teks ke Arduino. Teks ini terdiri dari awalan yang menunjukkan penggeser mana yang telah diubah serta nilai penggeser saat ini.
Berikut adalah file unduhan proyek MIT App Inventor di atas, serta Aplikasi Android yang siap dipasang di ponsel cerdas Anda:
Arduino Robot Arm Control File Proyek Penemu Aplikasi MIT
1 file Unduh 24,85 KB
Aplikasi Android Kontrol Lengan Robot Arduino
1 file 2.57 MB Unduh
Oleh karena itu, di Arduino, menggunakan fungsi startWith() kami memeriksa awalan setiap data yang masuk dan kami tahu apa yang harus dilakukan selanjutnya. Misalnya, jika awalannya adalah "s1" kita tahu bahwa kita perlu memindahkan servo nomor satu. Menggunakan fungsi substring() kita mendapatkan teks yang tersisa, atau itu adalah nilai posisi, kita mengubahnya menjadi bilangan bulat dan menggunakan nilai tersebut untuk memindahkan servo ke posisi itu.
// If "Waist" slider has changed value - Move Servo 1 to position
if (dataIn.startsWith("s1")) {
String dataInS = dataIn.substring(2, dataIn.length()); // Extract only the number. E.g. from "s1120" to "120"
servo1Pos = dataInS.toInt(); // Convert the string into integerCode language: Arduino (arduino)
Di sini kita cukup memanggil fungsi write() dan servo akan menuju ke posisi itu, tetapi dengan cara itu servo akan berjalan pada kecepatan maksimumnya yang terlalu banyak untuk lengan robot. Sebagai gantinya kita perlu mengontrol kecepatan servo jadi saya menggunakan beberapa loop FOR untuk memindahkan servo secara bertahap dari posisi sebelumnya ke posisi saat ini dengan menerapkan waktu tunda antara setiap iterasi. Dengan mengubah waktu tunda, Anda dapat mengubah kecepatan servo.
// We use for loops so we can control the speed of the servo
// If previous position is bigger then current position
if (servo1PPos > servo1Pos) {
for ( int j = servo1PPos; j >= servo1Pos; j--) { // Run servo down
servo01.write(j);
delay(20); // defines the speed at which the servo rotates
}
}
// If previous position is smaller then current position
if (servo1PPos < servo1Pos) {
for ( int j = servo1PPos; j <= servo1Pos; j++) { // Run servo up
servo01.write(j);
delay(20);
}
}
servo1PPos = servo1Pos; // set current position as previous position
}Code language: Arduino (arduino)
Metode yang sama digunakan untuk menggerakkan setiap sumbu lengan robot.
Di bawah mereka adalah tombol SIMPAN. Jika kita menekan tombol SAVE, posisi masing-masing motor servo disimpan dalam sebuah array. Dengan setiap penekanan, indeks meningkat sehingga array terisi langkah demi langkah.
// If button "SAVE" is pressed
if (dataIn.startsWith("SAVE")) {
servo01SP[index] = servo1PPos; // save position into the array
servo02SP[index] = servo2PPos;
servo03SP[index] = servo3PPos;
servo04SP[index] = servo4PPos;
servo05SP[index] = servo5PPos;
servo06SP[index] = servo6PPos;
index++; // Increase the array index
}Code language: Arduino (arduino)
Kemudian jika kita menekan tombol RUN kita memanggil fungsi kustom runservo() yang menjalankan langkah-langkah yang tersimpan. Mari kita lihat fungsi ini. Jadi di sini kita menjalankan langkah-langkah yang disimpan berulang-ulang sampai kita menekan tombol RESET. Menggunakan loop FOR kita menjalankan semua posisi yang tersimpan dalam array dan pada saat yang sama kita memeriksa apakah ada data yang masuk dari smartphone. Data ini bisa berupa tombol RUN/PAUSE, yang menghentikan robot, dan jika diklik lagi dilanjutkan dengan gerakan otomatis. Juga jika kita mengubah posisi penggeser kecepatan, kita akan menggunakan nilai itu untuk mengubah waktu tunda antara setiap iterasi dalam loop FOR di bawah, yang mengontrol kecepatan motor servo.
// Automatic mode custom function - run the saved steps
void runservo() {
while (dataIn != "RESET") { // Run the steps over and over again until "RESET" button is pressed
for (int i = 0; i <= index - 2; i++) { // Run through all steps(index)
if (Bluetooth.available() > 0) { // Check for incomding data
dataIn = Bluetooth.readString();
if ( dataIn == "PAUSE") { // If button "PAUSE" is pressed
while (dataIn != "RUN") { // Wait until "RUN" is pressed again
if (Bluetooth.available() > 0) {
dataIn = Bluetooth.readString();
if ( dataIn == "RESET") {
break;
}
}
}
}
// If SPEED slider is changed
if (dataIn.startsWith("ss")) {
String dataInS = dataIn.substring(2, dataIn.length());
speedDelay = dataInS.toInt(); // Change servo speed (delay time)
}
}
// Servo 1
if (servo01SP[i] == servo01SP[i + 1]) {
}
if (servo01SP[i] > servo01SP[i + 1]) {
for ( int j = servo01SP[i]; j >= servo01SP[i + 1]; j--) {
servo01.write(j);
delay(speedDelay);
}
}
if (servo01SP[i] < servo01SP[i + 1]) {
for ( int j = servo01SP[i]; j <= servo01SP[i + 1]; j++) {
servo01.write(j);
delay(speedDelay);
}
}Code language: Arduino (arduino)
Dengan cara yang sama seperti yang dijelaskan sebelumnya dengan pernyataan IF dan loop FOR ini, kami memindahkan servo ke posisi berikutnya. Terakhir jika kita menekan tombol RESET kita akan menghapus semua data dari array ke nol dan juga mereset indeks ke nol sehingga kita dapat memprogram ulang lengan robot dengan gerakan baru.
// If button "RESET" is pressed
if ( dataIn == "RESET") {
memset(servo01SP, 0, sizeof(servo01SP)); // Clear the array data to 0
memset(servo02SP, 0, sizeof(servo02SP));
memset(servo03SP, 0, sizeof(servo03SP));
memset(servo04SP, 0, sizeof(servo04SP));
memset(servo05SP, 0, sizeof(servo05SP));
memset(servo06SP, 0, sizeof(servo06SP));
index = 0; // Index to 0
}Code language: Arduino (arduino)
Dan hanya itu, sekarang kita dapat menikmati dan bersenang-senang dengan lengan robot.
Berikut kode lengkap Lengan Robot Arduino:
/*
DIY Arduino Robot Arm Smartphone Control
by Dejan, www.HowToMechatronics.com
*/
#include <SoftwareSerial.h>
#include <Servo.h>
Servo servo01;
Servo servo02;
Servo servo03;
Servo servo04;
Servo servo05;
Servo servo06;
SoftwareSerial Bluetooth(3, 4); // Arduino(RX, TX) - HC-05 Bluetooth (TX, RX)
int servo1Pos, servo2Pos, servo3Pos, servo4Pos, servo5Pos, servo6Pos; // current position
int servo1PPos, servo2PPos, servo3PPos, servo4PPos, servo5PPos, servo6PPos; // previous position
int servo01SP[50], servo02SP[50], servo03SP[50], servo04SP[50], servo05SP[50], servo06SP[50]; // for storing positions/steps
int speedDelay = 20;
int index = 0;
String dataIn = "";
void setup() {
servo01.attach(5);
servo02.attach(6);
servo03.attach(7);
servo04.attach(8);
servo05.attach(9);
servo06.attach(10);
Bluetooth.begin(38400); // Default baud rate of the Bluetooth module
Bluetooth.setTimeout(1);
delay(20);
// Robot arm initial position
servo1PPos = 90;
servo01.write(servo1PPos);
servo2PPos = 150;
servo02.write(servo2PPos);
servo3PPos = 35;
servo03.write(servo3PPos);
servo4PPos = 140;
servo04.write(servo4PPos);
servo5PPos = 85;
servo05.write(servo5PPos);
servo6PPos = 80;
servo06.write(servo6PPos);
}
void loop() {
// Check for incoming data
if (Bluetooth.available() > 0) {
dataIn = Bluetooth.readString(); // Read the data as string
// If "Waist" slider has changed value - Move Servo 1 to position
if (dataIn.startsWith("s1")) {
String dataInS = dataIn.substring(2, dataIn.length()); // Extract only the number. E.g. from "s1120" to "120"
servo1Pos = dataInS.toInt(); // Convert the string into integer
// We use for loops so we can control the speed of the servo
// If previous position is bigger then current position
if (servo1PPos > servo1Pos) {
for ( int j = servo1PPos; j >= servo1Pos; j--) { // Run servo down
servo01.write(j);
delay(20); // defines the speed at which the servo rotates
}
}
// If previous position is smaller then current position
if (servo1PPos < servo1Pos) {
for ( int j = servo1PPos; j <= servo1Pos; j++) { // Run servo up
servo01.write(j);
delay(20);
}
}
servo1PPos = servo1Pos; // set current position as previous position
}
// Move Servo 2
if (dataIn.startsWith("s2")) {
String dataInS = dataIn.substring(2, dataIn.length());
servo2Pos = dataInS.toInt();
if (servo2PPos > servo2Pos) {
for ( int j = servo2PPos; j >= servo2Pos; j--) {
servo02.write(j);
delay(50);
}
}
if (servo2PPos < servo2Pos) {
for ( int j = servo2PPos; j <= servo2Pos; j++) {
servo02.write(j);
delay(50);
}
}
servo2PPos = servo2Pos;
}
// Move Servo 3
if (dataIn.startsWith("s3")) {
String dataInS = dataIn.substring(2, dataIn.length());
servo3Pos = dataInS.toInt();
if (servo3PPos > servo3Pos) {
for ( int j = servo3PPos; j >= servo3Pos; j--) {
servo03.write(j);
delay(30);
}
}
if (servo3PPos < servo3Pos) {
for ( int j = servo3PPos; j <= servo3Pos; j++) {
servo03.write(j);
delay(30);
}
}
servo3PPos = servo3Pos;
}
// Move Servo 4
if (dataIn.startsWith("s4")) {
String dataInS = dataIn.substring(2, dataIn.length());
servo4Pos = dataInS.toInt();
if (servo4PPos > servo4Pos) {
for ( int j = servo4PPos; j >= servo4Pos; j--) {
servo04.write(j);
delay(30);
}
}
if (servo4PPos < servo4Pos) {
for ( int j = servo4PPos; j <= servo4Pos; j++) {
servo04.write(j);
delay(30);
}
}
servo4PPos = servo4Pos;
}
// Move Servo 5
if (dataIn.startsWith("s5")) {
String dataInS = dataIn.substring(2, dataIn.length());
servo5Pos = dataInS.toInt();
if (servo5PPos > servo5Pos) {
for ( int j = servo5PPos; j >= servo5Pos; j--) {
servo05.write(j);
delay(30);
}
}
if (servo5PPos < servo5Pos) {
for ( int j = servo5PPos; j <= servo5Pos; j++) {
servo05.write(j);
delay(30);
}
}
servo5PPos = servo5Pos;
}
// Move Servo 6
if (dataIn.startsWith("s6")) {
String dataInS = dataIn.substring(2, dataIn.length());
servo6Pos = dataInS.toInt();
if (servo6PPos > servo6Pos) {
for ( int j = servo6PPos; j >= servo6Pos; j--) {
servo06.write(j);
delay(30);
}
}
if (servo6PPos < servo6Pos) {
for ( int j = servo6PPos; j <= servo6Pos; j++) {
servo06.write(j);
delay(30);
}
}
servo6PPos = servo6Pos;
}
// If button "SAVE" is pressed
if (dataIn.startsWith("SAVE")) {
servo01SP[index] = servo1PPos; // save position into the array
servo02SP[index] = servo2PPos;
servo03SP[index] = servo3PPos;
servo04SP[index] = servo4PPos;
servo05SP[index] = servo5PPos;
servo06SP[index] = servo6PPos;
index++; // Increase the array index
}
// If button "RUN" is pressed
if (dataIn.startsWith("RUN")) {
runservo(); // Automatic mode - run the saved steps
}
// If button "RESET" is pressed
if ( dataIn == "RESET") {
memset(servo01SP, 0, sizeof(servo01SP)); // Clear the array data to 0
memset(servo02SP, 0, sizeof(servo02SP));
memset(servo03SP, 0, sizeof(servo03SP));
memset(servo04SP, 0, sizeof(servo04SP));
memset(servo05SP, 0, sizeof(servo05SP));
memset(servo06SP, 0, sizeof(servo06SP));
index = 0; // Index to 0
}
}
}
// Automatic mode custom function - run the saved steps
void runservo() {
while (dataIn != "RESET") { // Run the steps over and over again until "RESET" button is pressed
for (int i = 0; i <= index - 2; i++) { // Run through all steps(index)
if (Bluetooth.available() > 0) { // Check for incomding data
dataIn = Bluetooth.readString();
if ( dataIn == "PAUSE") { // If button "PAUSE" is pressed
while (dataIn != "RUN") { // Wait until "RUN" is pressed again
if (Bluetooth.available() > 0) {
dataIn = Bluetooth.readString();
if ( dataIn == "RESET") {
break;
}
}
}
}
// If speed slider is changed
if (dataIn.startsWith("ss")) {
String dataInS = dataIn.substring(2, dataIn.length());
speedDelay = dataInS.toInt(); // Change servo speed (delay time)
}
}
// Servo 1
if (servo01SP[i] == servo01SP[i + 1]) {
}
if (servo01SP[i] > servo01SP[i + 1]) {
for ( int j = servo01SP[i]; j >= servo01SP[i + 1]; j--) {
servo01.write(j);
delay(speedDelay);
}
}
if (servo01SP[i] < servo01SP[i + 1]) {
for ( int j = servo01SP[i]; j <= servo01SP[i + 1]; j++) {
servo01.write(j);
delay(speedDelay);
}
}
// Servo 2
if (servo02SP[i] == servo02SP[i + 1]) {
}
if (servo02SP[i] > servo02SP[i + 1]) {
for ( int j = servo02SP[i]; j >= servo02SP[i + 1]; j--) {
servo02.write(j);
delay(speedDelay);
}
}
if (servo02SP[i] < servo02SP[i + 1]) {
for ( int j = servo02SP[i]; j <= servo02SP[i + 1]; j++) {
servo02.write(j);
delay(speedDelay);
}
}
// Servo 3
if (servo03SP[i] == servo03SP[i + 1]) {
}
if (servo03SP[i] > servo03SP[i + 1]) {
for ( int j = servo03SP[i]; j >= servo03SP[i + 1]; j--) {
servo03.write(j);
delay(speedDelay);
}
}
if (servo03SP[i] < servo03SP[i + 1]) {
for ( int j = servo03SP[i]; j <= servo03SP[i + 1]; j++) {
servo03.write(j);
delay(speedDelay);
}
}
// Servo 4
if (servo04SP[i] == servo04SP[i + 1]) {
}
if (servo04SP[i] > servo04SP[i + 1]) {
for ( int j = servo04SP[i]; j >= servo04SP[i + 1]; j--) {
servo04.write(j);
delay(speedDelay);
}
}
if (servo04SP[i] < servo04SP[i + 1]) {
for ( int j = servo04SP[i]; j <= servo04SP[i + 1]; j++) {
servo04.write(j);
delay(speedDelay);
}
}
// Servo 5
if (servo05SP[i] == servo05SP[i + 1]) {
}
if (servo05SP[i] > servo05SP[i + 1]) {
for ( int j = servo05SP[i]; j >= servo05SP[i + 1]; j--) {
servo05.write(j);
delay(speedDelay);
}
}
if (servo05SP[i] < servo05SP[i + 1]) {
for ( int j = servo05SP[i]; j <= servo05SP[i + 1]; j++) {
servo05.write(j);
delay(speedDelay);
}
}
// Servo 6
if (servo06SP[i] == servo06SP[i + 1]) {
}
if (servo06SP[i] > servo06SP[i + 1]) {
for ( int j = servo06SP[i]; j >= servo06SP[i + 1]; j--) {
servo06.write(j);
delay(speedDelay);
}
}
if (servo06SP[i] < servo06SP[i + 1]) {
for ( int j = servo06SP[i]; j <= servo06SP[i + 1]; j++) {
servo06.write(j);
delay(speedDelay);
}
}
}
}
}Code language: Arduino (arduino)
Saya harap Anda menyukai video ini dan belajar sesuatu yang baru. Jangan ragu untuk mengajukan pertanyaan apa pun di bagian komentar di bawah dan periksa Koleksi Proyek Arduino saya.