27 Mayıs 2019 Pazartesi

ARDUINO 27.05.2019

ARDUİNO DEDİĞİN NEDİR Kİ ?

Arduino projelerimizde kullanabileceğimiz açık kaynak kodlu bir bileşendir. Arduino dediğimiz zaman aklımıza ilk olarak bir beyin veya yönetici gelmeli çünkü arduino projelerimizde tam olarak bu işi yapacaktır.

Arduino ile yapacağımız şeylerin neredeyse sınırı yoktur. Örnek olarak çizgi izleyen robotlar, mesafe ölçen robotlar, çeşitli robotik kollar vb. Arduino hem eğlenceli bir uğraş hem de bir iş olarak görülebilir özellikle robotik  işlerle ilgilenip uğraşıp merakı olanlar için çok idealdir. Çünkü arduino parçalarını uygun fiyatlara bulabiliriz. Ayrıca kullanımı da kolaydır. Şu an dünya genelinde en çok kullanılan arduino modeli arduino Uno’dur. Çünkü hem boyut olarak hem de kullanma açısı bakımından diğer arduino modellerinden bir adım öndedir


.



       Arduinoyu kullanabilmemiz için azda olsa yeteri kadar yazılım bilgisine , el becerisine , merak ve en önemlisi hayal gücümüzün gelişmiş olması lazım. Yapacağımız projeyi kafamızda canlandırıp en ufakayrıntısına kadar düşünmemiz gerekir. Çünkü diğer bakımdan hep başkalarının arkasından gitmiş oluruz. Çünkü onlar yeni şeyler ortaya koymadığı sürece bizde yeni şeyler üretemez ve onların taklidini yapmaktan başka hiçbir şey yapamayız.Albert Einstein'nin bir sözü olmakla beraber oldukça yerinde söylenen bir sözdür. şu nedenle teknolojik bir çok gelişmenin altında hayal gücü yatar. hayal etmeselerdi bilgiye ulaşamazlardı. Albert Einstein boşa bu cümleyi kullanmamıştır “Hayal gücü bilgiden daha önemlidir diye”.


26 Mayıs 2019 Pazar

ROBOT KOL 26.05.2019



Projeye ait malzeme listesi :

  • 4 x Tower Pro SG90 RC Mini Servo Motor
  • Arduino Sensor Shield
  • Arduino Uno (Tercihe bağlı klon veya orijinal kullanabilirsiniz.)
  • 5V 3A Voltaj Regülatör Kartı
  • 12V Adaptör
  • HC-06 Bluetooth Modülü
  • Jumper Kablo





KODUMUZ :


#include <SoftwareSerial.h>
#include <Servo.h>   

Servo myservo1, myservo2, myservo3, myservo4; // servolarımızı tanımlıyoruz.

int bluetoothTx = 10;
int bluetoothRx = 11;  

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
{
myservo1.attach(5);   
myservo2.attach(6);
myservo3.attach(9);
myservo4.attach(3);
Serial.begin(9600); 
bluetooth.begin(9600); 
}

void loop()
{
if (bluetooth.available() >= 2 ) 
{
unsigned int servopos = bluetooth.read();
unsigned int servopos1 = bluetooth.read();
unsigned int realservo = (servopos1 * 256) + servopos; 

// Alınan sinyaller kaydediliyor.
// AppInventor'da her servo için ayrı sinyal göndermiştik.
//Şimdi de her servo için tanımlanan sinyalin alınıp alınmadığını kontrol ediyoruz.
//realservo , Uygulamamızdan gelen sinyal değerleri.
// Bu değerler her servo için ayrı ayrı tekrar tanımlanıyor.
// "map" komutu ile bu sinyalleri, motora vereceğimiz açı değerlerine çeviriyoruz.
// örnek: map(servo,alınan min.sinyal,alınan max.sinyal,min.Açı,max.Açı);

if (realservo >= 1000 && realservo <= 1135) // tut bırak
{
int servo1 = realservo;
servo1 = map(servo1, 1000, 1135, 0, 135);
myservo1.write(servo1);
delay(10);
}

if (realservo >= 2000 && realservo <= 2090) { // sağ sol

int servo2 = realservo;
servo2 = map(servo2, 2000, 2090, 0, 90);
myservo2.write(servo2);
delay(10);
}

if (realservo >= 3000 && realservo <= 3180) { // yukarı aşağı
int servo3 = realservo;
servo3 = map(servo3, 3000, 3180, 0, 180);
myservo3.write(servo3);
delay(10);

}

if (realservo >= 4000 && realservo <= 4120) { // ileri geri

int servo4 = realservo;
servo4 = map(servo4, 4000, 4120, 0, 120);
myservo4.write(servo4);
delay(10);

}
}
}

ÇİZGİ İZLEYEN ROBOT 26.05.2019


Çizgi İzleyen Robot Nedir?


Çizgi izleyen robot, gideceği yolu otonom olarak takip eden robot tipidir. Takip edeceği yol, siyah düzlemin üstünde beyaz çizgi veya beyaz düzlemin üstünde siyah çizgi olacak şekilde hazırlanabilir. Robot bu takip etme işlemini sensörleri vasıtasıyla renk farkını algılayarak yapmaktadır.Renk farklarını ise bu şekilde algılar .


Gerekli Malzemeler

  • Arduino Uno
  • Çok Amaçlı Robot Platformu (Biz Platforma kitini kullandık. Dilerseniz bu kiti de kullanabilirsiniz.)
  • L298N Voltaj Regulatörlü Çift Motor Sürücü Kartı
  • 4’lü Çizgi İzleyen Sensör Seti
  • Pil ( Alkalin piller robotu yaklaşık 15 dk. verimli şekilde çalıştıracaktır. Li-Po pil kullanmanız robotu daha uzun süre ve daha verimli çalıştıracaktır.)
  • 6’lı AA Pil Yuvası
  • Jumper

Çizgi İzleyen Robot Devresi



Arduino Programı



Arduino programını yazmadan önce çizgi izleyen sensörün çalışma mantığından bahsetmek istiyorum. Kullanacağımız sensörler dijital çıkış verdiklerinden dolayı siyah ve beyaz gördüklerinde çıkış sinyalleri 0 veya 1 olacaktır. Sensör siyah gördüğünde hangi değeri verdiğini bu yazılım ile test edebilirsiniz:


#define SensorSol 10

#define SensorOrta 11   // Sensör pinlerini tanımlıyoruz.
#define SensorSag 12

void setup() {

  pinMode(SensorSol, INPUT);
  pinMode(SensorOrta, INPUT); //Sensörlerimizi giriş olarak tanımlıyoruz.
  pinMode(SensorSag, INPUT);
  Serial.begin(9600);  //Seri haberleşmeyi başlatıyoruz.
  Serial.println("Cizgi Sensoru Testi");
  delay(2000);
}

void loop() {
  Serial.print(digitalRead(SensorSol));
  Serial.print(",");
  Serial.print(digitalRead(SensorOrta));
  Serial.print(",");
  Serial.println(digitalRead(SensorOrta));
  delay(100);
}

ARDUİNO İLE RENK ALGILAMA UYGULAMASI 26.05.2019


Gerekli Malzemeler


  • Arduino Uno
  • TCS3200 Renk Sensörü
  • 2×16 LCD Display
  • 10 kΩ potansiyometre
  • Jumper Kablolar

Devre Şeması




Proje Kodu


#define s0 8 //Bağladığımız pinlere göre tanımlamalarımızı yapıyoruz

#define s1 9
#define s2 10
#define s3 11
#define sensorOut 12


int K, Y, M = 0; //3 ana renk için değişken tanımlıyoruz

void setup() {
  pinMode(s0, OUTPUT);//S0, S1, S2 ve S3 pinlerini OUTPUT olarak tanımlıyoruz
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT);
  pinMode(sensorOut, INPUT);//OUT pinini INPUT olarak tanımlıyoruz

  digitalWrite(s1,LOW);  //Frekans ölçeğimizi %20 olarak tanımlıyoruz
  digitalWrite(s0,HIGH); 
  Serial.begin(9600);

}

void loop() {
 

  digitalWrite(s2, LOW); //Kırmızıyı filtrelemek için
  digitalWrite(s3, LOW);
  K = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
  Serial.print("Kırmızı= ");
  Serial.print(K); //Kırmızı için aldığımız değeri serial monitöre yazdır
  Serial.print("  ");
  delay(50);//50 milisaniye bekle

  digitalWrite(s2, HIGH); //Yeşili filtrelemek için
  digitalWrite(s3, HIGH);
  Y = pulseIn(sensorOut, LOW); //OUT pini üzerindeki LOW süresini okur
  Serial.print("Yeşil= ");
  Serial.print(Y); //Yeşil için aldığımız değeri serial monitöre yazdır
  Serial.print("   ");
  delay(50);//50 milisaniye bekle

  digitalWrite(s2, LOW); //Maviyi filtrelemek için
  digitalWrite(s3, HIGH);
  M = pulseIn(sensorOut, LOW);//OUT pini üzerindeki LOW süresini okur
  Serial.print("Mavi= ");
  Serial.print(M);//Mavi için aldığımız değeri serial monitöre yazdır
  Serial.println();
  delay(50);//50 milisaniye bekle
}

ARDUİNO İLE BASİT PARK SENSÖRÜ YAPIMI 26.05.2019


Gerekli malzemeler:



  • Arduino UNO
  • Breadboard
  • 1 adet Buzzer
  • 1 adet 330Ω direnç
  • 1 adet HC-SR04 ultrasonik mesafe sensörü
  • İki ucu erkek jumper kablo



HC-SR04, robotik projelerde Arduino ile kullanılan en popüler sensörlerden birisidir. Kullanımı oldukça kolaydır ve program kısmı düzgün olduğu sürece 2cm – 400cm arası uzaklıkları düzgün bir şekilde ölçebilmektedir.Çalışma prensibi ise şu şekildedir: Sensörün Trig pininden uygulanan sinyal 40 kHz frekansında ultrasonik bir ses yayılmasını sağlar. Bu ses dalgası herhangi bir cisme çarpıp sensöre geri döndüğünde, Echo pini aktif hale gelir. Biz ise bu iki sinyal arasındaki süreyi ölçerek -yani sesin yankısını algılayarak- cismin sensörden uzaklığını tespit edebiliriz.Aşağıdaki kodu yazdığımızda da devremiz hazır hale gelir .

Devre şemamız bu şekilde:






Arduino Park Sensörü Kodları:


#define echoPin 6
#define echoPin 6
#define trigPin 7
#define buzzerPin 8

int maximumRange = 50;
int minimumRange = 0;



void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzerPin, OUTPUT);

}

void loop() {

  int olcum = mesafe(maximumRange, minimumRange);
  melodi(olcum*10);

}

int mesafe(int maxrange, int minrange)
{
  long duration, distance;

  digitalWrite(trigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);
  distance = duration / 58.2;
  delay(50);

  if(distance >= maxrange || distance <= minrange)
  return 0;
  return distance;
}

int melodi(int dly)
{
  tone(buzzerPin, 440);
  delay(dly);
  noTone(buzzerPin);
  delay(dly);
 
}

DOT MARTİX NEDİR? ARDUİNO İLE NASIL KULLANIMI 26.05.2019


Dot Matrix Nedir?

  • Led (dot) matrixler çok sayıda ledin matris düzeninde yan yana ve alt alta dizilerek konumlandığı ekranlardır.

Dot Matrix Nasıl Çalışır? Çoklama(multiplexing) nedir?


  • Dot matrix çalışma şekli çoğu yönden 7-segment displayler ile ortak özelliklere sahiptir. 7 segment displaylerde göstermek istediğimiz rakamı oluşturmak için display üzerindeki belli ledleri yakmamız gerekir. Dot matrix için de buna benzer bir durum var. Matrix üzerindeki ledleri belli bir düzende yakarak istediğimiz karakteri oluşturmuş oluyoruz.

Bağlantı Şeması


KODUMUZ :


#include <LedControl.h> /
#define CLK 5
#define CS 6
#define DIN 7
#define MaxSayisi 1  

const long delay_suresi = 750; 

LedControl led = LedControl(DIN, CLK, CS, MaxSayisi);

byte images[][8] =
 {{
     0,          
     B01100110,
     B11111111,
     B11111111,
     B01111110,
     B00111100,
     B00011000
   },
   {
     B00111100,  
     B01000010,
     B10100101,
     B10000001,
     B10011001,
     B10100101,
     B01000010,
     B00111100
   },
   {
     B00111100, 
     B01000010,
     B10100101,
     B10000001,
     B10111101,
     B10000001,
     B01000010,
     B00111100
   },
   {
     B00111100,  
     B01000010,
     B10100101,
     B10000001,
     B10100101,
     B10011001,
     B01000010,
     B00111100
   }
 };
 void MatrixeYazdir(byte* ch)
 {
   for (int i = 0; i < 8; i++)
   {
     led.setRow(0, i, ch[i]);
   }
 }
 void setup()
 {
   led.setIntensity(0, 10);  
   led.shutdown(0, false);   
   led.clearDisplay(0);
 }
 void loop()
 {
 for (int j = 0; j < 4; j++)  
   {
     MatrixeYazdir(images[j]);
     delay(delay_suresi);
   }
 for (int i = 0; i < 15; i++) 
   {
     led.setIntensity(0, i);
     delay(100);
   }
 }

JOYSTİCK UYGULAMASI 26.05.2019


JOYSTİCK UYGULAMASI VE KODU 

AÇIKLAMASI :

Analog okuyucumuzu kullanarak kontrol devrelerini de yapabiliriz . Eğer örnek vermem gerekirse en büyük örneğim oyun çubuğu olur . Mesela playstation ya da bilgisayar için üretilmiş oyun kodlarımızdaki analog yönlendiricileri analogda ki geriliminin fijitale çevrilmesinin kuralına göre çalışmaktadır . Oyun oynarken bu bastığımız çubuklar sağ , sol , yukarı , aşağı gibi yönlerini belirlemek için kullanılsa da aslında asıl amacı X ve Y koordinatlarındaki veriyi hesaplarlar . Yani bunun amacı sadece 4 yöne değilde programa göre daha fazla yön elde edebilmemiz için kullanılır . Şu an da arduinomuz için kullanılan joystick uygulamasının kodunu vereceğim .Buradaki açıkladığım joystick oyun kollarındaki kullanılan parçaların yakınen aynısı gibi görünse de ayakları Arduino kartlarına bağlanmaya uygun bir biçime getirilmiştir . Devremizde GND kartın GND kısmına , VCC kartın 5V kısmına , VRx A0 ayağına , VRy A1 ayağına denk gelmek zorundadır . Aşağıdaki kodu tamamen yaptıktan sonra öncelikle X eksenini okuyup ekrana yazdırıp daha sonra ise Y eksenini okuyup ekrana yazdıracaktık bu durumun en sonunda ise değerleri ayırabilmesi için uzunca bir çizgi çekip sürekli olarak bu durumdaki kodları çalıştıracağız .  


KODUMUZ :

int xPin = A0 ;
int yPin = A1 ;
int butonPin = 2 ;

int xPozisyonu = 0;
int yPozisyonu = 0;
int butonDurum = 0;

void setup() {
Serial.begin(9600);
pinMode(xPin, INPUT);
pinMode(yPin, INPUT);
pinMode(butonPin, INPUT_PULLUP);

 }

void loop() {
xPozisyonu = analogRead(xPin);
yPozisyonu = analogRead(yPin);
butonDurum = digitalRead(butonPin);

Serial.print("X Pozisyonu: ");
Serial.print(xPozisyonu);
Serial.print(" | Y Pozisyonu: ");
Serial.print(yPozisyonu);
Serial.print(" | Buton Durum: ");
Serial.println(butonDurum);

delay(100);
}

ARDUINO 27.05.2019

ARDUİNO DEDİĞİN NEDİR Kİ ? Arduino projelerimizde kullanabileceğimiz açık kaynak kodlu bir bileşendir. Arduino dediğimiz zaman aklımıza...