Arduino etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Arduino etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Matlabtan Arduinoya Veri Gönderme

 



Matlabtan Arduinoya Veri Gönderme



Arduino Kodu



Matlab Kodu



Arduino Kodu:

*******
int gelen_veri=0;
void setup() {
pinMode(13,OUTPUT);
Serial.begin(9600);
}

void loop() {
  
if (Serial.available() > 0) 
gelen_veri = Serial.read();

if(gelen_veri=='1')
{
  digitalWrite(13,HIGH);
}

if(gelen_veri=='2')
{
 digitalWrite(13,LOW);
}
}
}

*******
Matlabtan gelen verinin okuna bilmesi için int formatında gelen veri tanımlanır. Yerleşik led olan 13 numaralı pin output olarak tanımlanır. Seri haberleşme için BaudRate 9600 olarak tanımlanır. Döngünün içerindeki ilk if matlabtan bir verinin gelip gelmediğini kontrol eder. Eğer veri gelirse o zaman Serial.read komutuyla gelen veri okunur. Bu gelen veri 1 ise ledi yakar,2 ise ledi söndürür.


                                                    Matlab Kodu:
*******
    a=serial('COM6','BaudRate',9600); %arduinoyu a olarak tanımlıyoruz.
    pause(1) % 1 saniye bekleme.
    fopen(a); %arduinoyu başlatma komutu.
        
     while(1)  % döngünün sürekli olması için girilmiştir.
         deger=input("deger giriniz"); % matlabtan deger girmek için tanımlanıyoruz.
         fwrite(a,deger); % girilen değeri arduinoya gönderiyoruz.
     end

 *******
 Matlabtan arduinoyu seri haberleştirme bilmek için arduinonun hangi COM portuna takılıysa onu yazmanız gerekmektedir. Benim bilgisayarım COM6 ya takılıydı o yüzden COM6 yazdım. Sizde ne ise onu yazmalısınız. Arduinonun haberleşme BaudRate 9600 seçtiğim için burda da BaudRate 9600 olarak tanımladım. pause komutuyla 1 sn bekleme koydum açması bende biraz sürüyordu o yüzden. fopen fonksiyonuylada arduinoyu başlatır. Sürekli çalışmasını istediğim için while döngüsünü 1 yaptım. Siz istediğiniz gibi değiştirebilirsiniz. Klavyeden istediğim değerleri girebileyim diye input komutu ataması yaptım. 1 veya 2 girdiğinizde bu değeri fwrite diyerek arduinoya gönderir. Arduinoda bu gelen değerlere göre çıkış sağlar.
       

L298N Motor Sürücü

L298N Motor Sürücü


Bağlantı  Şeması 
Örnek Kodu

int motor_sag1=11;
int motor_sag2=12;
int motor_so11=9;
int motor_so12=8;

void setup() {
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(9,OUTPUT);
pinMode(8,OUTPUT);
}

void loop() {
 ileri();
 delay(1000);
 geri();
 delay(1000);
 sag_don();
 delay(1000);
 sol_don();
 delay(1000);
}
void ileri(){
  digitalWrite(11,HIGH);
  digitalWrite(12,LOW);
  digitalWrite(9,HIGH);
  digitalWrite(8,LOW);
  }
 void geri(){
  digitalWrite(12,HIGH);
  digitalWrite(11,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(9,LOW);
  }
  void sag_don(){
  digitalWrite(11,LOW);
  digitalWrite(12,LOW);
  digitalWrite(9,HIGH);
  digitalWrite(8,LOW);
    }
  void sol_don(){
  digitalWrite(11,HIGH);
  digitalWrite(12,LOW);
  digitalWrite(9,LOW);
  digitalWrite(8,LOW);
    }

QTR 8 RC Kızılötesi Sensör

QTR 8RC Kızıl Ötesi Sensör



Bağlantı Şeması

Kullanımına ilişkin örnek kod
int s1=0;
int s2=0;
int s3=0;
int s4=0;
int s5=0;
int s6=0;
int s7=0;
int s8=0;
String out="s1 s2 s3 s4 s5 s6 s7 s8";
int m1=10;
int m2=11;

void setup() {
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(8,INPUT);
pinMode(9,INPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
Serial.begin(9600);
}
void loop() {
s1=digitalRead(2);
s2=digitalRead(3);
s3=digitalRead(4);
s4=digitalRead(5);
s5=digitalRead(6);
s6=digitalRead(7);
s7=digitalRead(8);
s8=digitalRead(9);
Serial.print(out);
Serial.println(s1);
Serial.print(s2);
Serial.print(s3);
Serial.print(s4);
Serial.print(s5);
Serial.print(s6);
Serial.print(s7);
Serial.println(s8);
}

ESP8266'nın Arduino IDE ile programlanması


Bu yazımızda sizlere ESP8266 modülünün Arduino IDE ile nasıl programlanabileceğini göstereceğiz ve devamında basit bir program ile boardumuzu test edeceğiz.


    Öncelikle ESP8266'mızı Arduino IDE'mize tanıtalım. Bunun için Arduino IDE'yi açıyoruz.
Dosya(Files) kısmından Tercihler(Preferences) kısmına tıklıyoruz.

Sonra karşımıza gelen pencerede "Ek Devre Kartları Yöneticisi URL'leri:"( Additional Boards Manager URLs) kısmına: http://arduino.esp8266.com/stable/package_esp8266com_index.json
linkini yapıştırıyoruz ve Tamam(OK) butonuna tıklıyoruz.


Sonra Araçlar/Kart:/Kart Yöneticisi (Tools/ Board/Boards Manager)kısmından Kart Yöneticisine(Boards Manager) giriyoruz.
Açılan pencerede ESP8266'yı arayıp ESP8266 by ESP8266community 
yazan paketi yüklüyoruz.



Kurulum indirme yapacağı için biraz zaman alabilir. Kurulum bittikten sonra 
ESP'mize kod yükleyebilmek için sadece ESP8266'nızı pcye bağlayıp Kartlar(Boards) kısmından Generic ESP8266 Module seçmemiz gerekli.

Seçtikten sonra yeniden Araçlar(Tools) sekmesine tıklıyoruz, burada dikkat etmemiz gereken tek şey Upload Speed, bu değerin 115200 olması gerekli çünkü ESP8266 Boardumuz bu baudrate ile haberleşiyor.




Bu ayarları yaptıktan sonra sadece ESP8266'mızı pcye bağlamak, aşağıdaki kodu yazmak ve upload tuşuna basmak kaldı. 

#define led 2

void setup() {
  // buraya yazdığınız kod sadece başlangıçta 1 kez çalışır:
  pinMode(led, OUTPUT);
}

void loop() {
  // buraya yazdığınız kod sürekli çalışır:
  digitalWrite(led, HIGH);
  delay(500);
  digitalWrite(led, LOW);
  delay(500);
}

Eğer her şey düzgün giderse ESP8266 modülünüz üzerindeki led yarım saniye aralıklarla yanıp sönecektir.

Eğer hata veren bir yer olursa sormaktan çekinmeyin.
aliugur997@gmail.com









Arduinodan Matlaba Veri Gönderme



Arduino'dan Matlab'a Veri Gönderme


Arduino Gönderici Kodu


Matlab Alıcı Kodu


Arduino Kodu

*******
String veri;
int deger=0;
int deger2=10;
String first_deger="f+";
String second_deger="+s+";

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
veri=first_deger+deger+second_deger+deger2;
Serial.println(veri);
delay(100);
}
*****
Bu yazımızda  sizlere iki tane değerin matlaba birleştirilip tek seferde gönderilmesini anlatacağım.
İlk olarak göndereceğimiz veriyi birleştirebilmek için veri adında bir string oluşturuyoruz. Değerlerimiz sabit olsun yada siz istediğiniz verileri kullanabilirsiniz. İki adette string first_deger ve string second_deger diye değişkenler tanımladım. Bu değişkenlerin içinde first olduğunu belli etmesi ve second olduğunu belli etmesi için f ve s karakterlerini, matlabta verileri aldığımda ayırabilmek içinde + sembolünü ekliyorum.
Loop döngüsünde sırasıyla bunları birleştirip, Serial.println() komutuyla gönderme işlemini yapıyorum.

Matlab Kodu


*****
 delete(instrfind);      
 arduino=serial('COM3','BaudRate',9600);
 instrfind
 pause(1)
 fopen(arduino);
 instrfind
 pause(1)
 n=0;
while n<100
gelen_veri=fscanf(arduino,'%f');
ayrik_veri=strsplit(gelen_veri,'+');
first_deger=str2double(ayrik_veri(2));
second_deger=str2double(ayrik_veri(4));
pause(0.001)
n=n+1;
end
*****

Arduino diye bir değişken tanımlıyorum. Burada arduinomun COM portunu giriyorum. Benim pc de 3 olduğu için 3 yazıyor.Siz sizin bilgisayarda nasıl görünüyorsa onu yazınız. BaudRate arduinoda 9600 olduğu için burada da onu yazıyoruz. Bağlanması için 1 saniye bekleme verdim. Bunu azaltabilirsiniz.
fopen() koduyla arduinodan veri iletişimi açıyoruz. Tekrardan bekleme verdim bunu gene azaltabilirsiniz. n diye bir değişken tanımladım  100 defa döngü yapılıp daha sonra durması için.
fscanf() komutuyla arduinodan gönderilen veriyi okumayı sağlıyoruz. Okunan veri stringdir ve birleşiktir. Bu veriyi ayırabilmek içinde strsplit komutu ile "+" ile belirlediğimiz yerlerden ayrılması sağlanacaktır.
Oluşan yeni veri f 0 s 10 verileridir. Bu ayrık veri bir matris oluşturur ve bu matrisin 2. elemanı ile 4. elemanları bizim göndermek istediğimiz değerlerdir.Bu verileri double formatına çevirebilmemiz içinde str2double() komutu kullanılmıştır. 


Not: Arduinoya kodunuzu yükledikten sonra arduino idenizi kapatınız. Yoksa matlaba bağlanmakta sıkıntı yaşayabilirsiniz.Aynı şekilde arduinoya kod atacağınız zaman matlabı kapatmayı unutmayınız.

LDR Sensörü (Light Dependent Resistor )

LDR(Light Dependent Resistor )
Arduino Bağlantı Şeması

Örnek Kod
int sensorPin = A0;    // select the input pin for the potentiometer
int ledPin = 13;      // select the pin for the LED
int sensorValue = 0;  // variable to store the value coming from the sensor

void setup() {
  // declare the ledPin as an OUTPUT:
  pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
  // read the value from the sensor:
  sensorValue = analogRead(sensorPin);
  // turn the ledPin on
  Serial.println(sensorValue);
  digitalWrite(ledPin, HIGH);
  // stop the program for <sensorValue> milliseconds:
  delay(sensorValue);
  // turn the ledPin off:
  digitalWrite(ledPin, LOW);
  // stop the program for for <sensorValue> milliseconds:
  delay(sensorValue);
}
Seri port ekranından ldrnizin vermiş olduğu değeri görebilirsiniz. Kodda sensörden gelen değere göre ledinizin yanma ve sönme süresi değişmektedir. Direnç olarak 10k,4.7k kullanabilirsiniz. Işık izleyen, otopark sistemlerinde, apartmanlarda yada sokak lambalarındaki projeler için kullanılması çok uygundur.


DS18B20 Sıcaklık Sensörü


DS18B20 Sıcaklık Sensörü


Bağlantı Şeması
Örnek Kod
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{ Serial.begin(9600);
  sensors.begin();
}
void loop(void)
  sensors.requestTemperatures(); 
  double temp=sensors.getTempCByIndex(0); 
  Serial.print("Sicaklik=");
  Serial.println(temp);
  delay(1000);
}

OneWire.h kütüphanesini bu adresten indirebilirsiniz.

Hatırlatma:
Arkadaşlar sinyal bacağı ile besleme voltajı arasına 4.7k direnç bağlamayı unutmayın. Aksi takdirde doğru ölçüm alamazsınız.

SD Karttan Ses Dosyası Çalıştırma


Bağlantı Şeması
Örnek Kod

//sd kart moduldeki pin girişleri ** MOSI – pin 11 ** MISO – pin 12** CLK – pin 13** CS – pin 4
#include <SD.h> // sd kart kütüphanesi
#define Sd_Chip_pin 4
#include <TMRpcm.h> // melodi çalma kütüphanesi
char val;
TMRpcm tmrpcm; // melodi fonksiyonu oluşturma
void setup(){
Serial.begin(9600);
tmrpcm.speakerPin = 3; // hoparlör + bacağı digital 9. pine tak
if (!SD.begin(Sd_Chip_pin)) { // sd module bağlanma
return;
}
}
void loop(){
if (Serial.available()) {
delay(100);
while(Serial.available() > 0){
val = Serial.read();
if (val == ‘1’) { // 1 verisi gönderdiğinde 1.wav dosyasını çal
tmrpcm.play(“1.wav”);
} else if(val == ‘2’){ // 2 verisi gönderdiğinde 1.wav dosyasını çal
tmrpcm.play(“2.wav”);
} else if(val == ‘3’){ // 3 verisi gönderdiğinde 1.wav dosyasını çal
tmrpcm.play(“3.wav”);
} else if(val == ‘4’){ // 4 verisi gönderdiğinde 1.wav dosyasını çal
tmrpcm.play(“4.wav”);
}
else if(val == ‘5’){ // 5 verisi gönderdiğinde 1.wav dosyasını çal
tmrpcm.play(“5.wav”);
}
else if(val == ‘6’){ // 6 verisi gönderdiğinde 1.wav dosyasını çal
tmrpcm.play(“6.wav”);}}}}
TMRpcm.h kütüphanesini bu linkten indirebilirsiniz.
Hatırlatma:
Arkadaşlar 1,2,3,4,5,6 diye belirlenenler sizin sd kartının içinde olması gereken wav dosyalarıdır. Ses dosyalarınız wav formatında değilse o ses dosyalarını wav formatına dönüştürmeniz gerekmektedir. mp3towav adresinden dönüştürebilirsiniz.

Real-Time Clock


Real Time Clock Modülü


Bağlantı Şeması

Örnek Kod
#include <virtuabotixRTC.h>   //rtc modülünün kütüphanesi                                                                          
virtuabotixRTC myRTC(6, 7, 8); //Pin Bağlantıları resimde olduğu gibidir
void setup() {
Serial.begin(9600);
// Dilediğiniz tarihi aşağıda belirtilen biçimde girebiliyorsunuz. Ben örnek olarak
// bugünün tarihini girdim.
// saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl (Not: haftanın günü 1:pazartesiden başlıyor
 myRTC.setDS1302Time(00, 9,15 ,1, 19, 06, 2017);
}
void loop() {
myRTC.updateTime();
// Şimdi değerleri okuyalım
Serial.print("Şuanki Tarih / Saat : ");
Serial.print(myRTC.dayofmonth);
Serial.print("/");
Serial.print(myRTC.month);
Serial.print("/");
Serial.print(myRTC.year);
Serial.print(" ");
Serial.print(myRTC.hours);
Serial.print(":");
Serial.print(myRTC.minutes);
Serial.print(":");
Serial.println(myRTC.seconds);
}                                                                                              
Kütüphane dosyasını bu linkten ulaşabilirsiniz.

Hatırlatma:

Arkadaşlar vermiş olduğum koddaki  void setup kısmınnda yer alan myRTC.setDS1302Time(00, 9,15 ,1, 19, 06, 2017); kodu çalışma yaptığınız saat ve tarihi girerek düzeltmeyi unutmayınız.
Bu kodu update edip yükledikten sonra aynı kodun başına // koyup yorum yapmayı yada silip tekrar yüklemeyi unutmayınız.

HC-SR04 Mesafe Sensörü

HC-SR04 Mesafe Sensörü

Bağlantı Şeması

                                                               Örnek Yazılmış Kod

const int trigPin = 7;
const int echoPin = 8;
long duration;
float dist;
void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
Serial.begin(9600); // Starts the serial communication
}
void loop() {
// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the dist
dist= (duration/2)/29.1;
// Prints the dist on the Serial Monitor
Serial.print("dist: ");
Serial.println(dist);
}