Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü ); Bu derste, özel olarak oluşturulmuş bir Android uygulaması kullanılarak kablosuz olarak kontrol edilip programlanabilen bir Arduino Robot Kolunun nasıl yapıldığını öğreneceğiz. Robot kollarını kontrol etmek için kendi Android uygulamamızı geliştirmeye, robot parçalarını tasarlamaya ve 3D yazdırmaya, elektronik bileşenleri birleştirmeye ve Arduino’yu programlamaya başlayarak, size tüm yapım sürecini göstereceğim.
🤖 Arduino Robot Kol Yapımı Projesi (Akıllı Telefon Kontrollü)
Günümüzde robot kollar; otomotiv fabrikalarından sağlık sektörüne, lojistik merkezlerinden uzay araştırmalarına kadar pek çok alanda kullanılmaktadır. Robotik teknolojilerin hızla gelişmesiyle birlikte bu sistemlerin çalışma mantığını öğrenmek isteyen öğrenciler ve teknoloji meraklıları için Arduino tabanlı robot kol projeleri oldukça popüler hale gelmiştir.
Akıllı telefon kontrollü Arduino robot kol projesi, Bluetooth teknolojisi kullanılarak bir mobil cihaz üzerinden robot kolun hareket ettirilmesini sağlar. Böylece kullanıcı, telefon ekranındaki butonlar veya joystick arayüzü yardımıyla robot kolu uzaktan kontrol edebilir.
🎯 Projenin Amacı
Bu projenin temel amacı;
- Robot kol mekanizmasını tanımak
- Servo motorların çalışma mantığını öğrenmek
- Arduino programlamayı geliştirmek
- Bluetooth haberleşmesini kullanmak
- Mobil cihazlarla elektronik sistemleri kontrol etmek
- Robotik uygulamalara giriş yapmak
olarak özetlenebilir.
Öğrenciler bu proje sayesinde teorik bilgileri uygulamaya dönüştürerek STEM eğitim yaklaşımına uygun bir çalışma gerçekleştirmiş olurlar.
🛠️ Gerekli Malzemeler
Proje için aşağıdaki bileşenler kullanılabilir:
Elektronik Bileşenler
- Arduino Uno
- HC-05 Bluetooth Modülü
- 4 veya 6 adet Servo Motor (SG90 veya MG996R)
- Breadboard
- Jumper Kablolar
- Harici Güç Kaynağı
- Açma-Kapama Anahtarı
Mekanik Bileşenler
- Robot Kol Gövdesi (3D baskı veya akrilik)
- Vida ve Somun Seti
- Servo Motor Bağlantı Aparatları
Yazılım
- Arduino IDE
- Bluetooth Robot Controller Uygulaması
- Arduino Servo Kütüphanesi

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
⚙️ Robot Kol Nasıl Çalışır?
Robot kolun her eklemi bir servo motor tarafından hareket ettirilir.
Örneğin:
- Taban dönüşü → Servo 1
- Omuz hareketi → Servo 2
- Dirsek hareketi → Servo 3
- Bilek hareketi → Servo 4
- Kavrama mekanizması → Servo 5
Servo motorlar belirli açılara dönebildikleri için robot kolun hassas hareket etmesi sağlanır.
Akıllı telefondan gönderilen komutlar Bluetooth modülü üzerinden Arduino’ya ulaşır. Arduino gelen veriyi yorumlayarak ilgili servo motorun açısını değiştirir.
Bu sistem sayesinde kullanıcı robot kolu kablosuz olarak kontrol edebilir.
📱 Akıllı Telefon Kontrol Sistemi
Projede genellikle HC-05 Bluetooth modülü tercih edilir.
Bluetooth bağlantısı şu şekilde çalışır:
- Telefon ile HC-05 eşleştirilir.
- Mobil uygulama açılır.
- Buton veya joystick komutları gönderilir.
- Arduino komutları okur.
- Servo motorlar hareket eder.
Örneğin:
- “L” → Sola dön
- “R” → Sağa dön
- “U” → Yukarı kaldır
- “D” → Aşağı indir
- “O” → Tutucu aç
- “C” → Tutucu kapat
Bu komutlar Arduino tarafından işlenerek robot kolun ilgili bölümleri hareket ettirilir.
💻 Arduino Kodlama Mantığı
Kod içerisinde temel olarak üç bölüm bulunur:
1. Servo Tanımları
Servo motorlar sisteme tanıtılır.
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
2. Bluetooth Haberleşmesi
Bluetooth üzerinden gelen karakterler okunur.
char veri;
if(Serial.available())
{
veri = Serial.read();
}
3. Servo Hareketleri
Gelen komutlara göre servo açıları değiştirilir.
if(veri=='L')
{
servo1.write(0);
}
if(veri=='R')
{
servo1.write(180);
}
Bu mantık genişletilerek tüm eklemler kontrol edilebilir.
🚀 Projenin Eğitimsel Kazanımları
Bu proje öğrencilerin aşağıdaki becerileri geliştirmesine yardımcı olur:
Algoritmik Düşünme
Robot kolun hangi komutla nasıl hareket edeceğinin planlanması gerekir.
Mekanik Tasarım
Servo motorların doğru konumlandırılması ve robot kolun dengeli çalışması sağlanır.
Elektronik Bilgisi
Arduino bağlantıları ve güç yönetimi öğrenilir.
Programlama Yeteneği
Bluetooth haberleşmesi ve servo kontrol kodları geliştirilir.
Problem Çözme
Karşılaşılan mekanik veya yazılımsal hatalar analiz edilerek çözülür.
🏭 Gerçek Hayattaki Kullanım Alanları
Robot kollar günümüzde pek çok sektörde kullanılmaktadır:
- Otomotiv üretim hatları
- Kaynak robotları
- Paketleme sistemleri
- Depo otomasyonu
- Sağlık teknolojileri
- Cerrahi robotlar
- Uzay araştırmaları
- Endüstriyel montaj hatları
Bu nedenle öğrencilerin erken yaşlarda robot kol teknolojileriyle tanışmaları oldukça önemlidir.
🌟 Projeyi Geliştirme Fikirleri
Temel robot kol sistemi tamamlandıktan sonra aşağıdaki özellikler eklenebilir:
- Wi-Fi kontrol sistemi
- Kamera entegrasyonu
- Görüntü işleme
- Nesne tanıma
- Yapay zekâ destekli hareketler
- Sesle kontrol
- Hareket kayıt sistemi
- Otomatik nesne toplama
Bu geliştirmeler projeyi daha profesyonel hale getirir ve öğrencilerin ileri düzey robotik konularını öğrenmesine katkı sağlar.
Uygulamadaki sürgüleri kullanarak her servonun veya robot kolunun ekseninin hareketini manuel olarak kontrol edebiliriz. Ayrıca “Kaydet” düğmesini kullanarak her bir pozisyonu veya adımı kaydedebiliriz ve ardından robot kolu bu adımları otomatik olarak çalıştırabilir ve tekrarlayabilir. Aynı düğme ile otomatik işlemi duraklatabilir, tüm adımları sıfırlayabilir veya silebiliriz, böylece yenilerini kaydedebiliriz.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
Arduino Robot Kol 3D Modeli
Başlangıçta, Robot Kolunu Solidworks 3D modelleme yazılımını kullanarak tasarladım. Kolun 5 serbestlik derecesi vardır. İlk 3 eksen için, bel, omuz ve dirsek için MG996R servolarını ve diğer 2 eksen için bilek rulosunu ve bilek adımını ve kıskaç olarak daha küçük SG90 mikro servolarını kullandım.
3D Modelleri İndir
Solidworks: Arduino Robot Arm 3D Model Solidworks Files
STEP file: Arduino Robot Arm 3D Model STEP File
STL files for 3D Printing: Arduino Robot Arm STL Files
TÜM DOSYALARI İNDİR
Robot Kolunun 3B Baskısı
Arduino robot kolu için tüm parçaları 3D olarak bastırdım. Denemeden önce, makaralı tekerleklerin yeterince sıkı olup olmadıklarını kontrol etmeniz önerilir ve eğer değilse, eksantrik somunları bunları sıkmak için kullanabilirsiniz. Ve işte bu, 3B baskı yatağınızı seviyelttikten sonra, 3B yaratmalarınızı gerçeğe dönüştürmeye hazırsınız.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
Arduino Robot Kolunun tüm parçalarını birkaç saatte hazır.
Robot Kolunun Montajı
Tamam, bulayın robot kolunu monte edilebilir hazırız. İlk servo motorunu pakete yerleştirmekte vidaları yerleştirerek yerleştirmekte tabanla başladım. Servonun çıkış milinde yuvarlak bir korna cevtası tespit ettim.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
Üstüne üst kısmı yerleştirip iki vida kullanarak sabitledim.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
Burada yine önce servoya, ardından yuvarlak kornayı bir sonraki kısma geçirir ve daha sonra çıkış milindeki cıvatayı kullanarak birbirlerine tutturulur.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
Burada, omuz ekseninde bir çeşit yay içermenin iyi bir fikir olduğunu ya da benim durumumda servoya yardımcı olmak için bir lastik bant kullandığımı fark edebiliriz çünkü bu servo kolun geri kalanının bütün ağırlığını taşıyor yük olarak.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
Benzer şekilde robot kolunun kalanını da birleştirmeye devam ettim. Kıskaç mekanizmasına gelince, montaj için bazı 4 milimetre cıvata ve somun kullandım.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
Sonunda kıskaç mekanizmasını son servoya taktım ve Arduino robot kolu tamamlandı.
Arduino Robot Kol Devresi Şeması
Bir sonraki aşama elektroniği bağlamak. Bu projenin devre şeması aslında oldukça basittir. Akıllı telefonla iletişim kurmak için sadece bir Arduino panosuna ve bir HC-05 Bluetooth modülüne ihtiyacımız var. Altı servo motorun kontrol pinleri, Arduino kartının altı dijital pinine bağlanır.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
Servoları çalıştırmak için 5V’a ihtiyacımız var, ancak bunun harici bir güç kaynağından gelmesi gerekiyor, çünkü Arduino, hepsinin çekebileceği akım miktarını idare edemiyor. Güç kaynağının en az 2 A akım alabilmesi gerekir. Böylece her şeyi bir araya getirdikten sonra Arduino’yu programlamaya geçebilir ve Android uygulamasını yapabiliriz.
Gereken bileşenleri aşağıdaki bağlantılar,
- MG996R Servo Motor
- SG90 Micro Servo Motor
- HC-05 Bluetooth Module
- Arduino Board
- 5V 2A DC Power Supply
Arduino Robot Kol Kodu
Kod biraz daha uzun olduğu için, daha iyi anlaşılması için, programın kaynak kodunu bölümlerin açıklamalarıyla birlikte bölümlere koyacağım. Ve bu yazının sonunda kaynak kodun tamamını göndereceğim.
Bu yüzden önce Bluetooth modülünün seri iletişimi için servo kütüphanesinin yanı sıra SoftwareSerial kütüphanesini de eklememiz gerekir. Bu kitaplıkların her ikisi de Arduino IDE’ye eklenmiştir, dolayısıyla bunları harici olarak yüklemeniz gerekmez. Daha sonra altı servoyu, HC-05 Bluetooth modülünü ve servoların mevcut ve önceki pozisyonlarını saklamak için bazı değişkenleri ve ayrıca pozisyonları veya otomatik mod için basamakları depolamak için bazı değişkenleri tanımlamamız gerekir.
#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 = "";
Kurulum bölümünde servoları ve Bluetooth modülünü başlatmalı ve robot kolunu ilk konumuna getirmeliyiz. Bunu, servoyu 0 ila 180 derece arasında herhangi bir konuma basitçe hareket ettiren write () işlevini kullanarak yapıyoruz.
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);
}
Sonra, döngü bölümünde, Bluetooth.available () işlevini kullanarak, Smartphone’dan gelen herhangi bir veri olup olmadığını sürekli olarak kontrol ederiz. Değer doğruysa, readString () işlevini kullanarak verileri bir dizge olarak okuruz, bunları dataIn değişkenine depolar. Gelen verilere bağlı olarak robot koluna ne yapacağımızı söyleyeceğiz.
// Check for incoming data
if (Bluetooth.available() > 0) {
dataIn = Bluetooth.readString(); // Read the data as string
Arduino Robot Kol Kontrolü Android Uygulaması
Şimdi Android uygulamasına bakalım ve Arduino’ya ne tür veriler gönderdiğini görelim.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
Uygulamayı MIT App Inventor çevrimiçi uygulamasını kullanarak yaptım ve işte nasıl çalıştığını. En üstte, akıllı telefonu HC-05 Bluetooth modülüne bağlamak için iki düğmemiz var. Sonra sol tarafta robot kolunun bir resmi var ve sağ tarafta da servoları kontrol etmek için altı kaydırıcı ve hız kontrolü için bir kaydırıcı var.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
Her kaydırıcı, robot kol bağlantılarına uygun farklı başlangıç, minimum ve maksimum değerlere sahiptir. Uygulamanın altında, robot kolunu otomatik olarak çalışacak şekilde programlayabilmemiz için SAVE, RUN ve RESET adlı üç düğmemiz var. Ayrıca kaydettiğimiz adım sayısını gösteren bir etiket de var. Bununla birlikte, MIT App Inventor kullanarak bu gibi uygulamaların nasıl oluşturulacağı hakkında daha fazla ayrıntı için, bununla ilgili diğer ayrıntılı eğitimimi kontrol edebilirsiniz.
Tamam, şimdi programı veya uygulamanın arkasındaki blokları görelim. İlk önce, sol tarafta akıllı telefonu Bluetooth modülüne bağlamak için bloklar bulunuyor.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
Ardından servo pozisyon kontrolü için sürgü bloklarına ve robot kolunu programlamak için düğmeler bloklarına sahibiz. Bu yüzden, kaydırıcının konumunu değiştirirsek, Bluetooth işlevini kullanarak .SendText, Arduino’ya bir metin göndeririz. Bu metin, kaydırıcının geçerli değerinin yanı sıra hangi kaydırıcının değiştirildiğini gösteren bir önekten oluşur.

Arduino Robot Kol Yapımı Projesi ( Akıllı Telefon Kontrolü )
İşte yukarıda belirtilen MIT App Inventor projesinin bir indirme dosyası ve akıllı telefonunuza kurulmaya hazır Android Uygulaması:
Arduino Robot Arm Control MIT App Inventor Project Dosyası
İNDİR
Arduino Robot Arm Control Android App Dosyası
İNDİR
Bu nedenle, Arduino’da, startWith () işlevini kullanarak her gelen verinin önekini kontrol ederiz ve böylece ne yapacağımızı biliriz. Örneğin, önek “s1” ise, bir numaralı servoyu taşımamız gerektiğini biliyoruz. Substring () işlevini kullanarak kalan metni alırız veya bu konum değeridir, onu tam sayıya dönüştürür ve değeri servoyu bu konuma taşımak için kullanırız.
// 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
Burada basitçe write () işlevini çağırabiliriz ve servo o konuma gidecektir, ancak bu şekilde servo robot kolu için çok fazla olan maksimum hızında çalışacaktır. Bunun yerine, servoların hızını kontrol etmemiz gerekiyor, bu yüzden her yineleme arasında bir gecikme süresi uygulayarak servoyu kademeli olarak önceki konumdan mevcut konuma taşımak için bazı FOR halkaları kullandım. Gecikme süresini değiştirerek servonun hızını değiştirebilirsiniz.
// 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
}
Robot kolunun her bir eksenini sürmek için aynı yöntem kullanılır.
Altlarında KAYDET düğmesidir. KAYDET düğmesine basarsak, her servo motorun konumu bir dizide saklanır. Her basışta indeks artar, böylece dizi adım adım doldurulur.
// 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
}
Ardından RUN butonuna basarsak kayıtlı adımları çalıştıran runervo () özel fonksiyonunu çağırırız. Bu fonksiyona bir göz atalım. İşte burada RESET butonuna basana kadar kaydedilen adımları tekrar tekrar çalıştırıyoruz. FOR döngüsünü kullanarak dizilerde depolanan tüm konumları gözden geçiririz ve aynı zamanda akıllı telefondan gelen veri olup olmadığını kontrol ederiz. Bu veriler robotu duraklatan ÇALIŞMA / DURAKLATMA butonu olabilir ve tekrar tıklandığında otomatik hareketlerle devam eder. Ayrıca, hız kaydırıcı konumunu değiştirirsek, bu değeri aşağıdaki FOR döngülerindeki her yineleme arasındaki gecikme süresini değiştirmek için kullanırız, bu da servo motorların hızını kontrol eder.
// 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);
}
}
Bu IF ifadeleri ve FOR döngülerinde daha önce açıklandığı gibi, servoları bir sonraki pozisyonlarına taşırız. Son olarak RESET butonuna basarsak, dizilerdeki tüm verileri sıfıra indiririz ve ayrıca endeksi sıfıra ayarlarız, böylece robot kolunu yeni hareketlerle yeniden programlayabiliriz.
// 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
}
İşte bu, şimdi robot kolla eğlenebilir ve biraz eğlenebiliriz.
İşte Arduino Robot Kolunun Tam Kodu
/*
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);
}
}
}
}
}
📌 Sonuç
Arduino ile Akıllı Telefon Kontrollü Robot Kol Projesi, robotik kodlama eğitimlerinde uygulanabilecek en kapsamlı ve öğretici projelerden biridir. Mekanik tasarım, elektronik devreler, Arduino programlama ve kablosuz haberleşme teknolojilerini bir araya getiren bu çalışma, öğrencilerin mühendislik bakış açısı kazanmalarına yardımcı olur. STEM ve robotik atölyelerinde uygulandığında öğrencilerin yaratıcılıklarını geliştiren, problem çözme becerilerini artıran ve geleceğin teknolojilerine hazırlayan etkili bir eğitim projesi olarak öne çıkmaktadır.
İstanbul İz Atölye Eğitim Çözümleri San. ve Tic. Ltd. Şti., eğitim kurumlarına yönelik yenilikçi atölye kurulumlarıyla öne çıkan, proje geliştirme ve uygulama süreçlerinde uçtan uca destek sunan bir çözüm ortağıdır. Robotik kodlama, yazılım, ahşap tasarım, STEM ve sanal gerçeklik gibi farklı alanlarda modern, sürdürülebilir ve eğitim odaklı atölye ortamları tasarlar. Kurumların ihtiyaçlarına özel analizler yaparak en uygun ekipman, içerik ve altyapıyı belirler; kurulum sürecinden eğitmen eğitimine kadar tüm aşamalarda aktif rol alır. Ayrıca ulusal ve uluslararası hibe programlarına yönelik proje yazımı, danışmanlık ve uygulama desteği sağlayarak kurumların hem teknik hem de finansal açıdan güçlenmesine katkıda bulunur.
İz Atölye olarak sadece atölye kurmuyor, kurumunuza özel sürdürülebilir eğitim ekosistemleri tasarlıyor; doğru ekipman, güçlü içerik ve uçtan uca proje desteğiyle süreci zahmetsiz ve verimli hale getiriyoruz.
Deneyim, hız ve sonuç odaklı yaklaşımımızla yatırımınızı kısa sürede somut çıktılara dönüştürüyoruz.

5 yorum
adminYazar
Oldukça güzel bir proje ancak. Çok fazla değişken ve kodlama bilgisi gerektirdiği için zorlanabilirsiniz.
ramazan
5V 2A DC Power Supply bunu nereden temin edebiliriz
ModeratörYazar
Merhabalar Arduino UNO 5V 2A DC Power Supply şekilinde aradığınızda bulabilirsiniz. Sitemizde tek başına satışı mevcut değildir.
Kaan
Ürünü montajlı halde satıyor musunuz ?
ModeratörYazar
Merhabalar; Projenin kurulu ve veya de monte hali stoklarımızda mevcut değildir.