info@kodmek.com
Kodmek
  • Anasayfa
  • Blog
  • Araçlar
Kodmek
  • Anasayfa
  • Blog
  • Araçlar
  • Anasayfa
  • Blog
  • Araçlar
  • Anasayfa
  • Blog
  • Araçlar
Arduino
Home Elektronik Archive by Category "Arduino"

Category: Arduino

Arduino örnekleri ve Programlama
Arduino

Arduino ile Buzz Wire Oyunu Yapımı

Arduino hobi projeleri ve oyunları oluşturmak çok popilerdir. Sizlerle bu yazımızda Buzz Wire Oyunu Yapımına değineceğiz.

Bu proje için Arduino Uno, Buzzer ve iki Alüminyum tel kullanacağız. Oyun durumunu görüntülemek için 16×2 LCD kullanılacaktır. Labirent telin her iki ucu Arduino’nun dijital pim 2 ve 3’üne bağlanacak ve tutamak teli Arduino’nun Toprak pimine bağlanacaktır. Dijital pinler INPUT_PULLUP pinleri olarak tanımlanır. Böylece tutma teli labirent teline dokunduğunda, dijital pim durumunu düşük olarak değiştirir ve zil sesi çalacaktır.

Labirent telinin sonuna bir diyot bağlanır, bu yüzden bu diyotun yanından geçtiğinizde ve labirent teline yuvarlak saplı tel ile dokunduğunuzda, sadece bir pim (Pin 3) alçalır. Bu durumda, LCD’de bir tebrik metni (Kazandınız) görüntülenir.

Gerekli Bileşenler
Arduino Uno
Alüminyum Tel
16×2 LCD
I2C Modülü
Breadboard
Buzzer
Diyot

Arduino ile Buzz Wire Oyunu Yapımı 1
Devre Şeması

Arduino Buzz Tel Oyunu için devre şeması yukarıda verilmiştir. I2C modülünün SCL ve SDA pinleri Arduino’nun A5 ve A4 pinlerine, I2C modülünün VCC ve GND pinleri Arduino’nun 5V ve GND pinlerine bağlanır. Buzzer’ın pozitif rayı Arduino’nun dijital pimi 4’e ve negatif rayı GND’ye bağlıdır. Bir alüminyum tel kesin ve Zig-Zag şeklinde bükün. Telin bir ucuna bir diyot lehimleyin. Daha sonra bir tutamak yapmak için bir tel daha kesin ve bir ucunu bir ilmek içine bükün.

Arduino ile Buzz Wire Oyunu Yapımı 2

Arduino Kodları :

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int startPin = 2;
const int endPin = 3;
const int buzzer = 4;
int start, end_;
void setup(void)
{
  Serial.begin(9600);
  lcd.begin();
  lcd.clear();
  pinMode(buzzer, OUTPUT);
  pinMode(startPin, INPUT_PULLUP);
  pinMode(startPin, INPUT_PULLUP);
}
void loop(void)
{  
  start = digitalRead(startPin);
  end_ = digitalRead(endPin); 
  Serial.print(start);
  Serial.print("\n");
  Serial.print(end_);  
  if (start == LOW && end_== LOW ){
    digitalWrite(buzzer, HIGH);
    delay(1000); 
    digitalWrite(buzzer, LOW); 
    lcd.setCursor(0,0);
    lcd.print("Try Again");     
    Serial.print("Try Again");        
  }
  else if (start == HIGH && end_== LOW){
    lcd.setCursor(0,0);
    lcd.print("Well Done");
    Serial.print("Well Done");
  }
 delay(500); 
}

Read More
MeK 29 Mart 2020 0 Comments
126
Arduino

Arduino Kullanarak Akıllı Restoran Menü Sipariş Sistemi

Günümüzün sistemler ev, ofis veya herhangi bir büyük endüstrisi olsun, her yerde otomasyon sistemleri ile donatılmıştır. Restoranlar / Oteller de son otomasyon trendlerini benimsiyor ve sipariş almak için yiyecek dağıtmak için robotlar ve tabletler kullanıyor. Tabletler gibi bu dijital menü kartlarını kullanarak müşteriler öğeleri kolayca seçebilirler ve seçilen ürün mutfağa iletiliyor.

Bu projede Arduino, TFT ekran ve 433MHz RF verici / alıcı modülünü kullanarak Akıllı Restoran Projesi yapıyoruz. Burada verici bölümü, müşterilerin gıda maddelerini seçip sipariş verebilecekleri Arduino Uno, TFT ekran ve bir RF vericiden oluşacaktır. Alıcı bölümü, sipariş öğelerini izlemek için restoran mutfağında kurulacak bir Arduino Uno, LCD modülü, RF alıcısı ve bir Buzzer’den oluşur.

Gerekli Bileşenler

  • Arduino Uno (2)
  • 433MHz RF Transmitter & Receiver
  • 2.4″ TFT LCD Touch shield
  • 16*2 LCD Module
  • I2C Module

Arduino ile arayüz TFT LCD Dokunmatik ekran

2.4 “TFT LCD dokunmatik ekran ve SD kart soketi ile birlikte gelen çok renkli bir Arduino UNO / Mega uyumlu TFT ekrandır. Bu TFT ekran modülü, parlak bir arka ışık ve renkli bir 240X320 piksel ekrana sahiptir. Siyah beyaz ekranlardan çok daha iyi çözünürlük sağlamaktdır.

TFT ekranın Arduino ile arayüzlenmesi çok basittir ve diğer derste açıklanmıştır. TFT ekranını yalnızca aşağıdaki resimde gösterildiği gibi Arduino Uno kartı üzerine monte etmeniz gerekir.

Arduino Kullanarak Akıllı Restoran Menü Sipariş Sistemi 3

Devre şeması

Akıllı Restoran Menü Sipariş Sistemi projesi RF Verici ve Alıcı bölümünden oluşmaktadır. Hem verici hem de alıcı tarafı veri işleme için Arduino Uno’yu kullanır. Verici ve alıcı bölümü için devre şeması aşağıda verilmiştir.

Verici Bölüm Devresi

Bu projenin verici bölümü bir Arduino Uno, RF Verici ve TFT ekran dan oluşuyor. Bu bölüm, TFT ekranında gösterilen menüden sipariş vermek için kullanılır. Arduino Uno, tüm verileri işleyen verici tarafının beynidir ve RF verici modülü, seçilen verileri alıcıya iletmek için kullanılır. RF verici modülünün veri pimi Arduino’nun dijital pimine 12 bağlanırken, VCC ve GND pimleri Arduino’nun 5V ve GND pinine bağlanır.

Arduino Kullanarak Akıllı Restoran Menü Sipariş Sistemi 4
Arduino Kullanarak Akıllı Restoran Menü Sipariş Sistemi 5

Alıcı Bölüm Devresi

Bu projenin alıcı bölümü bir Arduino Uno, RF Alıcı, 16 * 2 LCD modülü ve I2C modülünden oluşur. Verici bölümünden veri almak için RF alıcısı kullanılır ve alınan verileri görüntülemek için LCD modülü kullanılır. Yeni bir sipariş verildiğinde ses çıkarmak için bir zil sesi kullanılır. RF alıcısının veri pimi Arduino’nun dijital pim 11’ine bağlanırken, VCC ve GND pimi Arduino’nun 5V ve GND pimine bağlanır. Buzzer’ın pozitif pimi Arduino’nun dijital pimine 2, negatif pimi Arduino’nun GND pimine bağlanır. I2C modülünün SCL ve SDA pinleri A5 ve A4 Arduino analog pinlerine, VCC ve GND pinleri Arduino’nun 5V ve GND pinlerine bağlanır.

Arduino Kullanarak Akıllı Restoran Menü Sipariş Sistemi 6
Arduino Kullanarak Akıllı Restoran Menü Sipariş Sistemi 7

Proje Kodları :

Restoranda bu Akıllı Sipariş Sistemi için RF Verici ve Alıcı tarafları için tam kod yazının sonunda verilmiştir. Bu projede kullanılan tüm kütüphaneler verilen linklerden indirilebilir.

  • RadioHead Library
  • SPFD5408 library
Code for Transmitter (TFT LCD)

#include <RH_ASK.h>
#include <SPI.h> // Not actually used but needed to compile
#include <SPFD5408_Adafruit_GFX.h>    // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library
#include <SPFD5408_TouchScreen.h>
const char *msg ;
RH_ASK driver;
#define YP A1  // must be an analog pin, use "An" notation!
#define XM A2  // must be an analog pin, use "An" notation!
#define YM 7   // can be a digital pin
#define XP 6   // can be a digital pin
#define TS_MINX 125
#define TS_MINY 85
#define TS_MAXX 965
#define TS_MAXY 905
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
// optional
#define LCD_RESET A4
#define REDBAR_MINX 80
#define GREENBAR_MINX 130
#define BLUEBAR_MINX 180
#define BAR_MINY 30
#define BAR_HEIGHT 250
#define BAR_WIDTH 30
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
#define BLACK   0x0000
int BLUE = tft.color565(50, 50, 255);
#define DARKBLUE 0x0010
#define VIOLET 0x8888
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
#define GREY   tft.color565(64, 64, 64);
#define GOLD 0xFEA0
#define BROWN 0xA145
#define SILVER 0xC618
#define LIME 0x07E0
void drawHome()
{
  tft.fillScreen(WHITE);
  tft.drawRoundRect(0, 0, 319, 240, 8, WHITE);     //Page border
  tft.fillRoundRect(30, 40, 100, 40, 8, GOLD);
  tft.drawRoundRect(30, 40, 100, 40, 8, WHITE);  //Dish1
  tft.fillRoundRect(30, 90, 100, 40, 8, GOLD);
  tft.drawRoundRect(30, 90, 100, 40, 8, WHITE);  //Dish2
  tft.fillRoundRect(30, 140, 100, 40, 8, GOLD);   //Dish3
  tft.drawRoundRect(30, 140, 100, 40, 8, WHITE);
  tft.fillRoundRect(10, 190, 190, 40, 8, CYAN);
  tft.drawRoundRect(10, 190, 190, 40, 8, WHITE); //Call Waiter
  tft.fillRoundRect(180, 40, 100, 40, 8, GOLD);
  tft.drawRoundRect(180, 40, 100, 40, 8, WHITE);  //Dish4
  tft.fillRoundRect(180, 90, 100, 40, 8, GOLD);
  tft.drawRoundRect(180, 90, 100, 40, 8, WHITE); //Dish5
  tft.fillRoundRect(180, 140, 100, 40, 8, GOLD);
  tft.drawRoundRect(180, 140, 100, 40, 8, WHITE); //Dish6
  tft.fillRoundRect(210, 190, 100, 40, 8, GREEN);
  tft.drawRoundRect(210, 190, 100, 40, 8, WHITE); //Bill
  tft.setCursor(60, 0);
  tft.setTextSize(3);
  tft.setTextColor(LIME);
  tft.print("   Menu");
  tft.setTextSize(2);
  tft.setTextColor(WHITE);
  tft.setCursor(37, 47);
  tft.print(" Dish1");
  tft.setCursor(37, 97);
  tft.print(" Dish2");
  tft.setCursor(37, 147);
  tft.print(" Dish3");
  tft.setCursor(23, 197);
  tft.print(" Call Waiter");
  tft.setCursor(187, 47);
  tft.print(" Dish4");
  tft.setCursor(187, 97);
  tft.print(" Dish5");
  tft.setCursor(187, 147);
  tft.print(" Dish6");
  tft.setCursor(227, 197);
  tft.print(" Bill");
  //  delay(500);
}
int oldcolor, currentcolor, currentpcolour;
void setup(void) { 
  tft.reset();
  tft.begin(tft.readID());
  Serial.begin(9600);
  Serial.println();
  Serial.print("reading id...");
  delay(500);
  Serial.println(tft.readID(), HEX);  
  tft.fillScreen(BLACK);
  tft.setRotation(1);
  tft.setTextSize(3);
  tft.setTextColor(WHITE);
  tft.setCursor(50, 140);
  tft.print("Loading...");
  tft.setTextColor(tft.color565(255, 255, 0));
  tft.setCursor(30, 70);
  tft.print("By:");
  tft.setCursor(10, 100);
  tft.print("CircuitDigest.Com");
  for (int i; i < 250; i++)
  {
    tft.fillRect(BAR_MINY - 10, BLUEBAR_MINX, i, 10, RED);
    delay(0.000000000000000000000000000000000000000000000000001);
  }
  tft.fillScreen(BLACK);
  if (!driver.init())
      Serial.println("init failed");
  drawHome();
  pinMode(13, OUTPUT);
}
#define MINPRESSURE 10
#define MAXPRESSURE 1000
void transmit()
{  
  driver.send((uint8_t *)msg, strlen(msg));
  driver.waitPacketSent();
  delay(1000);
  }
void loop()
{  
  digitalWrite(13, HIGH);
  TSPoint p = ts.getPoint();
  digitalWrite(13, LOW);
  // if sharing pins, you'll need to fix the directions of the touchscreen pins
  //pinMode(XP, OUTPUT);
  pinMode(XM, OUTPUT);
  pinMode(YP, OUTPUT);
  //pinMode(YM, OUTPUT);
  if (p.z > ts.pressureThreshhold)
    {
      p.x = map(p.x, TS_MAXX, TS_MINX, 0, 320);
      p.y = map(p.y, TS_MAXY, TS_MINY, 0, 240);      
      if (p.x > 180 && p.x < 280 && p.y > 190 && p.y < 230  && p.z > MINPRESSURE && p.z < MAXPRESSURE)
      {
        Serial.println("Dish1");
        msg = "Dish1 Ordered";
        transmit();
        tft.fillRoundRect(30, 40, 100, 40, 8, WHITE);
        delay(70);
        tft.fillRoundRect(30, 40, 100, 40, 8, GOLD);
        tft.drawRoundRect(30, 40, 100, 40, 8, WHITE);
        tft.setCursor(37, 47);
        tft.println(" Dish1");
        delay(70);
        }
      if (p.x > 180 && p.x < 280 && p.y > 140 && p.y < 180)
      {
        Serial.println("Dish2");
        msg = "Dish2 Ordered";
        transmit();
        tft.fillRoundRect(30, 90, 100, 40, 8, WHITE);
        delay(70);
        tft.fillRoundRect(30, 90, 100, 40, 8, GOLD);
        tft.drawRoundRect(30, 90, 100, 40, 8, WHITE);
        tft.setCursor(37, 97);
        tft.println(" Dish2");
        delay(70);      
      }
      if (p.x > 180 && p.x < 280 && p.y > 90 && p.y < 130)
      {
        Serial.println("Dish3");
        msg = "Dish3 Ordered";
        transmit();
        tft.fillRoundRect(30, 140, 100, 40, 8, WHITE);   //rgb led
        delay(70);
        tft.fillRoundRect(30, 140, 100, 40, 8, GOLD);   //rgb led
        tft.drawRoundRect(30, 140, 100, 40, 8, WHITE);   //rgb led
        tft.setCursor(37, 147);
        tft.print(" Dish3");
        delay(70);       
      }
      if (p.x > 210 && p.x < 310 && p.y > 40 && p.y < 80)
      {
        Serial.println("Call Waiter");
        msg = "CallingWaiter";
        transmit();
        tft.fillRoundRect(10, 190, 190, 40, 8, WHITE);
        delay(70);
        tft.fillRoundRect(10, 190, 190, 40, 8, CYAN);
        tft.drawRoundRect(10, 190, 190, 40, 8, WHITE);
        tft.setCursor(23, 197);
        tft.print(" Call Waiter");
        delay(70);
      }
      if (p.x > 30 && p.x < 130 && p.y > 190 && p.y < 230)
      {
        Serial.println("Dish4");
        msg = "Dish4 Ordered";
        transmit();
        tft.fillRoundRect(30, 40, 100, 40, 8, WHITE);
        delay(70);
        tft.fillRoundRect(30, 40, 100, 40, 8, GOLD);
        tft.drawRoundRect(30, 40, 100, 40, 8, WHITE);
        tft.setCursor(187, 47);
        tft.print(" Dish4");
        delay(70);
      }
      if (p.x > 30 && p.x < 130 && p.y > 140 && p.y < 180 )
      {
        Serial.println("Dish5");
        msg = "Dish5 Ordered";
        transmit();
        tft.fillRoundRect(180, 90, 100, 40, 8, WHITE);
        delay(70);
        tft.fillRoundRect(180, 90, 100, 40, 8, GOLD);
        tft.drawRoundRect(180, 90, 100, 40, 8, WHITE);
        tft.setCursor(187, 97);
        tft.print(" Dish5");
        delay(70);
      }
      if (p.x > 30 && p.x < 130 && p.y > 90 && p.y < 130)
      {
        Serial.println("Dish6");
        msg = "Dish6 Ordered";
        transmit();
        tft.fillRoundRect(180, 140, 100, 40, 8, WHITE);
        delay(70);
        tft.fillRoundRect(180, 140, 100, 40, 8, GOLD);
        tft.drawRoundRect(180, 140, 100, 40, 8, WHITE);
        tft.setCursor(187, 147);
        tft.print(" Dish6");
        delay(70);
      }

      if (p.x > 10 && p.x < 210 && p.y > 40 && p.y < 80)
      {
        Serial.println("Bill");
        msg = "Customer Bill";
        transmit();
        tft.fillRoundRect(210, 190, 100, 40, 8, WHITE);
        delay(70);
        tft.fillRoundRect(210, 190, 100, 40, 8, GREEN);
        tft.drawRoundRect(210, 190, 100, 40, 8, WHITE);
        tft.setCursor(227, 197);
        tft.print(" Bill");
        delay(70);
      }
    }
}

Code for Receiver

#include <RH_ASK.h>
#include <SPI.h> // Not actualy used but needed to compile
#include <LiquidCrystal_I2C.h>
//String msg;
LiquidCrystal_I2C lcd(0x27, 16, 2);
RH_ASK driver;
#define buzzer 2
void setup()
{
    Serial.begin(9600);  // Debugging only
    pinMode(buzzer, OUTPUT);
    lcd.begin();
    lcd.clear(); 
    if (!driver.init())
         Serial.println("init failed");
}
void loop()
{
    uint8_t buf[17];
    uint8_t buflen = sizeof(buf);
    if (driver.recv(buf, &buflen)) // Non-blocking
    {
      int i;
      digitalWrite(buzzer, HIGH);
      delay(1000);
      digitalWrite(buzzer, LOW);
      // Message with a good checksum received, dump it.
      Serial.print("Message: ");
      Serial.println((char*)buf);
      lcd.clear(); 
      lcd.setCursor(0,0);
      lcd.print("T1:");
      lcd.print((char*)buf);            
    }
}

Read More
MeK 25 Mart 2020 0 Comments
103
Arduino

Arduino ile Kayan Yazı Yapımı

Bu projemizde Arduino ile P10 modülü kullanarak kayan yazı yapacağız. P10 modülünü gelin biraz yakından tanıyalım.

Özellikleri;

– Her bir grafik led panel 32×16 cm ölçülerindedir.

– Her bir grafik led panelde 512 adet led vardır.

– Her bir grafik led panel max. 4A çekmektedir.

– Gündüz ve gece çok daha fazla farkedilebilirlik özelliğine sahiptir.

– Ürün modüllerinde 140 dereceden okunabilen oval ledler kullanılmaktadır.

– Ürün modüler istem bir ürün olduğundan,müdahalede o denli kolay ve pratiktir.

– Bu tabelalar üzerinde basit bir program ve bilgisayar erişimiyle,istediğiniz fontta ve karekterde yazı ekleyip kaldırmanız mümkündür.

– Bunun yanında firma logonuzu,yada sabit ve hareketli giflerle tabelanızın görselliğini artımanız mümkündür.

– Tabelanız satırlara bölerek,birkaç farklı lisanda aynı anda kullanabilme avantajı sağlamaktadır.

Kod için Gerekli Olan Kütüphane  : https://github.com/freetronics/DMD

2×16 lık headerın arduino nano’ya bağlantı şekli:

Arduino ile Kayan Yazı Yapımı 8

Arduino ile kayan yazı

Arduino ile kayan yazı kodları :

#include <SPI.h>       
#include <DMD.h>     
#include <TimerOne.h>  
#include "SystemFont5x7.h"
#include "Arial_black_16.h"
#include "Arial14.h"


#define DISPLAYS_ACROSS 1
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);

void ScanDMD()
{
  dmd.scanDisplayBySPI();
}

void setup(void)
{

  
   Timer1.initialize( 5000 );          
   Timer1.attachInterrupt( ScanDMD );  

   //clear/init the DMD pixels held in RAM
   dmd.clearScreen( true );  

}

void loop(void)
{
   byte b;
  
  
  
   dmd.clearScreen( true );
   dmd.selectFont(Arial_Black_16);
   //dmd.selectFont(Arial_14);
  

   dmd.drawMarquee("FATIH BASARIS",13,(32*DISPLAYS_ACROSS)-1,1);
   long start=millis();
   long timer=start;
   boolean ret=false;
   while(!ret){
     if ((timer+30) < millis()) {
       ret=dmd.stepMarquee(-1,0);
       timer=millis();
     }
   }
}

 

Read More
MeK 6 Ocak 2019 3 Comments
139
Arduino

MATLAB ile Arduino kullanarak Step Motor Kontrolü

Step motorlar, farklı adımlarla dönen bir DC motordur. Ayrıca, step motorlar konumlandırma, hız kontrolü ve uygulamaları için iyidir.

MATLAB’ın önceki derslerinde, MATLAB DC motor, Servo motor gibi yazılar paylaştık. Eğer MATLAB için yeniyseniz bu yazılarımıza bakınız.

Step Motorda çalışma modları

Step motor için kodlamaya başlamadan önce bir step motorun nasıl çalıştığını anlamanız gerekir. Step modunun statoru farklı bobin çiftlerinden oluştuğu için, her bir bobin çifti birçok farklı yöntemde uyarılabilir, bu da modların birçok farklı modda sürülmesini sağlar. Aşağıdaki sınıflandırma çeşitleri başlıkları :

  • Full Step Mode
  • One phase-on stepping or Wave Stepping
  • Two Phase-on stepping
  • Half Step Mode

Step Motorun kontrol edilmesi için MATLAB Grafik Kullanıcı Arayüzü Oluşturulması

Daha sonra Step motorunu kontrol etmek için GUI (Grafik Kullanıcı Arayüzü) oluşturmamız gerekiyor. GUI’yi başlatmak için komut penceresinde aşağıdaki komutu yazın.

guide

Bir açılır pencere açılır, ardından aşağıdaki resimde gösterildiği gibi yeni boş GUI’yi seçin.

MATLAB ile Arduino kullanarak Step Motor Kontrolü 9

Şimdi, aşağıda gösterildiği gibi, step motorunu saat yönünde ve saat yönünün tersine döndürmek için iki geçiş düğmesi seçin

MATLAB ile Arduino kullanarak Step Motor Kontrolü 10

Düğmenin şeklini yeniden boyutlandırmak veya değiştirmek için, sadece üzerine tıklayın ve düğmenin köşelerini sürükleyebilirsiniz. Geçiş düğmesine çift tıklayarak, ilgili düğmenin rengini, dizesini ve etiketini değiştirebilirsiniz. Aşağıdaki resimde gösterildiği gibi iki düğmeyi özelleştirdik.

MATLAB ile Arduino kullanarak Step Motor Kontrolü 11

Arduino ile Step Motor kontrol etmek için MATLAB Kodu

Step motorun kontrolü için MATLAB kodunun tamamı bu projenin sonunda verilmektedir. Aşağıda, Step Motor’u saat yönünde ve saat yönünün tersine döndürmek için yaptığımız bazı düzeltmeler var.

Aşağıdaki kodu kopyalayıp satır no. 74 Arduino’nun m-dosyasını her çalıştırdığınızda MATLAB ile bağlandığından emin olmak için.

MATLAB ile Arduino kullanarak Step Motor Kontrolü 12

Aşağı kaydırdığınızda, GUI’deki Düğmelerin her ikisi için oluşturulmuş iki işlev olduğunu görürsünüz. Şimdi kodu  gerçekleştirmek istediğiniz görevi yazın.

Saat yönünde tuşun işlevinde, motoru, saat yönünde döndürmek için, işlevin bitmesinden hemen önce aşağıdaki kodu kopyalayıp yapıştırın. Step motorun saat yönünde sürekli olarak döndürülmesi için, döngü sırasında iki faz açık kademeli tam mod adımlarını tekrarlamak için döngüyü kullanıyoruz.

MATLAB ile Arduino kullanarak Step Motor Kontrolü 13

Şimdi saat yönünün tersine düğmesinin işleviyle, motoru saat yönünün tersine döndürmek için aşağıdaki kodu fonksiyonun üzerine yapıştırın. Step motorunu saat yönünün tersi yönünde sürekli olarak döndürmek için, iki faz açma kademeli tam mod adımlarını saat yönünün tersi yönünde tekrarlamak için döngü kullanırken kullanıyoruz.

MATLAB ile Arduino kullanarak Step Motor Kontrolü 14

Gerekli Malzeme

MATLAB
Arduino UNO
Step Motor (28BYJ-48, 5VDC)
ULN2003 – Step motor sürücüsü

MATLAB ile Arduino kullanarak Step Motor Kontrolü 15

Icon

Matlab Arduino Step Motor Kontrol

1 file(s) 2.11 KB
Please login to download

 

Read More
MeK 18 Aralık 2018 0 Comments
106
Arduino

MATLAB ile Arduino Kullanarak DC Motor Kontrolü

Bu yazımızda, MATLAB ve Arduino kullanarak DC motorunu nasıl kontrol edeceğinizi göstereceğiz. MATLAB de yeni iseniz, MATLAB ile basit LED yanıp sönme programı ile başlamak için tavsiye edilir.

DC Motorun kontrol edilmesi için MATLAB Grafik Kullanıcı Arayüzü Oluşturulması

MATLAB için Arduino ile kurulumu tamamladıktan sonra, DC motorunu kontrol etmek için GUI (Grafik Kullanıcı Arayüzü) oluşturmamız gerekiyor. GUI’yi başlatmak için komut penceresinde aşağıdaki komutu yazın.

guide

Bir pencere açılır, ardından aşağıdaki resimde gösterildiği gibi yeni boş GUI’yi seçin.Creating-GUI-in-MATLAB

Şimdi, aşağıda gösterildiği gibi, Saat yönünde dönme, Saat yönünün tersine dönme ve DURDURMA için üç düğme ekleyin.

Pushbutton-in-MATLAB-GUI

Butonun şeklini yeniden boyutlandırmak veya değiştirmek için, üzerine tıklayın ve butonun köşelerinden sürükleyebilirsiniz. Özelleştirmek istediğiniz butona çift tıklayarak, ilgili düğmenin rengini, şeklini ve etiketini değiştirebilirsiniz. Aşağıdaki resimde gösterildiği gibi üç butonu özelleştiriniz.

GUI-Inspector-for-Changing-Tag-string-and-color

GUI-for-DC-Motor-Control-Using-MATLAB

Butonları istediğiniz gibi özelleştirebilirsiniz. Şimdi bunu kaydettiğinizde, MATLAB’un Editör penceresinde bir kod oluşturulur. Arduino’nuzu projenizle ilgili herhangi bir görevi yerine getirmesi için kodlamak için her zaman bu oluşturulan kodu düzenlemelisiniz. Aşağıda MATLAB kodunu düzenledik.

Arduino ile DC Motor kontrol etmek için MATLAB Kodu

Aşağıdaki kodu kopyalayıp satır no. 74 e ekleyiniz. Arduino’nun m-dosyasını her çalıştırdığınızda MATLAB ile bağlantı kurmasını sağlıyacaktır.

clear all;
global a;
a = arduino();

Initializing-Arduino-in-MATLAB

Aşağı kaydırdığınızda, GUI’deki her Düğme için üç işlev olduğunu görürsünüz. Şimdi bu kodları düzenliyelim

Command-to-run-DC-motor-clockwise-in-MATLAB

Şimdi saat yönünün tersine düğmesinin işleviyle, motoru saat yönünün tersine döndürmek için, işlevin sonunda aşağıdaki kodu ekleyin. 

Command-to-run-DC-motor-anticlockwise-in-MATLAB

Motorun dönüşünü durdurmak için aşağıdaki kodu ekleyin.

Command-to-stop-DC-motor-in-MATLAB

Matlab ile kodlama işlemi bukadar şimdi devre şemamıza bakalım.

Devre Şeması :

Circuit-Diagram-for-DC-Motor-Control-Using-MATLAB-and-Arduino

Artık Matlab ile Run ederek devremizin çalışmasını gözlemleyebilirsiniz. Tüm Matlab kod dosyaları ektedir.Web sitemize ücretsiz üye olarak dosyayı indirebilirsiniz.

Icon

Arduino-Matlab-Dc motor kontrolü

1 file(s) 1.29 KB
Please login to download

 

Read More
MeK 26 Kasım 2018 0 Comments
101
Arduino

Arduino ile EEPROM Okuma ve Yazma

Bu yazımızda sizlere Arduino kullanarak verilerinizi kaydedebilmeniz için EEPROM kullanımına bakacağız.

Her tip arduino türünde içerisinde belli miktarda eeprom bellek vardır. Bu bellek arduinonun kapatıldıktan sonra verilerinizin kaybolmamasını sağlar.

EEPROM fonksiyonarını kullanabilmek için önce EEPROM.h kütüphanesini programınıza eklemeniz gerekir. Bunu yapar yapmaz bir takım EEPROM işlevlerine ulaşma imkanını elde edersiniz.Arduinonun içerisindeki dahili gelen eeprom belleğinin boyutunu öğrenmek için EEPROM.length() komudunu kullanabilirsiniz.

EEPROM.length() komutundan dönen değerde dikkat etmemiz gereken bir nokta aldığımız değerin nasıl kullanılacağıdır. EEPROM adresleri sıfır (0) dan başladığı için geri gelen veri değeri adres olarak kullanıldığında sıfır ile eepromBellek – 1 arası olmalıdır. Örneğin: ARDUINO UNO da EEPROM boyutu 1024 dür. Buna göre adres olarak kullandığımızda bu değer 0 – 1023 arasında olmalıdır.

Tüm eeprom belleğini sıfırlamak :

#include <EEPROM.h>
void setup()  {
  int eepromBellek = EEPROM.length();
  for (int i = 0 ; i < eepromBellek ; i++) {EEPROM.write(i, '\0');}
}

Yukardaki kod ile tüm eeprom belleğini sıfırlayabilirsiniz.Bunu yaparken EEPROM.write() işlevini kullanıyoruz. Burada belleğe yazdığımız değer tamamen bize kalmış bir seçenektir. NUL (\0), SIFIR (0), BOŞLUK ( ), vs gibi herhangi uygun değer kullanılabilir.

EEPROM belleğine veri yazıp okumak için üç tip işlev vardır:

  • EEPROM.read() ve EEPROM.write() : karakter veya bayt olarak okuyup yazma
  • EEPROM.get() ve EEPROM.put() : dizgi veya özel / değişik veri yapılarına göre okuyup yazma
  • EEPROM.update() : Eğer veri bellektekinden değişikse yaz

EEPROM.read() ve EEPROM.write() işlevleri verileri belleğe tek bayt olarak okuyup yazarlar.

EEPROM.get() ve EEPROM.put() işlevleri ise belleğe bir bayttan daha fazla veya uzunlukta veri kaydetmek istediğimiz zaman kullanılır. Örneğin float tipi veriler dört (4) bayt olduğundan bu işlevle kaydedilmesi gerekir. Eğer uzunca bir dizgi veya dizi kaydetmek isterseniz (örneğin: “dosyaadı.txt”) bu işlevleri kullanmanız gerekir.

EEPROM.update() işlevi yazılacak veriyi yazmak istediğimiz adresteki değer ile karşılaştırır ve yalnız aynı değilse yazma işlemini tamamlar.

ARDUINO EEPROM referansına bu bağlantıdan ulaşabilirsiniz.

 

Read More
MeK 22 Kasım 2018 0 Comments
115
Arduino

Arduino ile LCD I2C Protekolü Kullanımı

Arduino ile LCD haberleştirmek için 9 adet kabloya ihtiyacınız var buda hem pin işgali hemde çok fazla kablo işgali ile projenizi karışık bir hale sokmaktadır.Bu sorunu I2C protokolü kullanarak düzeltebilirsiniz.Bazı modüllerin üzerinde geldiği gibi ayrı olarak da satılan IIC i2c modülü ile bu sorunu çözebilirsiniz.

I2C modülü sayesinde enerji pinleri haric 2 tane pin yardımı ile Sda ve Scl üzerinden süre bilmektesiniz.Öncelikle bunun için bir I2C kütüphanesine ihtiyacınız var bu kütüphaneyi aşağıdan web sitemiz aracılığı ile indirebilirsiniz.

I2C Nedir?

I2C haberleşmesinde, haberleşmeyi kontrol eden master cihazı bulunur. Her haberleşmede bir tane master bulunmalıdır. Haberleşmenin sağlanabilmesi için haberleşme hattına en az bir adet slave (köle) cihaz bağlanmalıdır. Hatta bağlanan birden fazla slave cihazlardan hangisinin veri aktaracağına, master cihaz karar verir. Böylece hat sayısında bir değişiklik olmadan birden fazla cihazla haberleşme sağlanır.

i2c_lcdbaglantisi

Arduino türü SDA pini SCL pini
Arduino Uno A4 A5
Arduino Mega 20 21
Arduino Leonardo 2 3
Arduino Due 20 21
Arduino Nano A4 A5
//Kodmek Örnek I2C LCD kodu
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x27, 16, 2);
 
void setup()
{
// LCD yi çalıştır
lcd.begin();
lcd.backlight();
 
// Ekrana yazdırılacak metin
lcd.print("Proje Hocam");
}
 
void loop()
{
}

 

Read More
MeK 19 Kasım 2018 0 Comments
97
Arduino

Arduino ile Matlab kullanarak sıcaklık ölçümü

Sıcaklık sensöründen alınan değerler ile matlab yardımıyla bu değerleri okunup grafik haline getirilecek. Girdi değerlerine dayanan grafikleri çizmek için birçok yazılım mevcut, bu yazımızda LM35 sensöründen gelen sıcaklık verilerine dayanan grafiği grafiklemek için MATLAB kullanacağız. Bu eğitim size MATLAB kullanarak gerçek zamanlı grafiğin nasıl çizileceği hakkında temel bir fikir verecektir. Arduino Uno, LM35 sıcaklık sensöründen sıcaklık verilerini almak için burada kullanıldı.

Grafik çizme için MATLAB Grafik Kullanıcı Arayüzü Oluşturma

Öncelikle sıcaklık grafiği ile Grafik Çizimi için GUI (Grafik Kullanıcı Arayüzü) oluşturmamız gerekiyor. GUI’yi başlatmak için komut penceresinde aşağıdaki komutu yazın.

guide

Bir açılır pencere açılır, ardından aşağıdaki resimde gösterildiği gibi yeni boş GUI’yi seçin.

Gui oluşturma-MATLAB

Şimdi MATLAB grafik arayüzü için bir düğme, iki eksen ve bir metin kutusu seçmeliyiz. Sıcaklık algılamayı başlatmak için başlat düğmesi, grafiğin çizilmesi için iki eksen ve mevcut sıcaklığın mevcut değerini göstermek için Metin kutusu kullanılabilir.

Designing-GUI-MATLAB

Düğmenin şeklini veya rengini değiştirebilirsiniz. Üzerine tıklayarak düzenleme işlemlerinizi tamamlayıp kod satırına geçebiliriz.

GUI-using-MATLAB

Düğmeleri seçiminize göre özelleştirebilirsiniz. Şimdi bunu kaydettiğinizde, MATLAB’un Editör penceresinde bir kod oluşturulur. Arduino’nuzun projenizle ilgili belirli bir görevi yerine getirmesini sağlamak için, bu oluşturulan kodu düzenlemelisiniz. 

Aşağıdaki kodu kopyalayıp 74. satırdaki yer ile değiştiriniz .

clear all;
global a;
a = arduino();

Aşağı kaydırdığınızda, GUI’de Düğme ve Düzenleme Metni için iki işlev oluşturulduğunu göreceksiniz, Eksenler için hiçbir işlev oluşturulmaz. Şimdi, gerçekleştirmek istediğimiz fonksiyona göre Düğme (başlat butonu) için fonksiyonu yazalım.

Başlat düğmesinin işlevi, sıcaklık algılamayı başlatmak içindir, başlat butonunun fonksiyonu içerisine aşağıdaki kodu kopyalayıp yapıştırın. Sıcaklığın sürekli olarak algılanması, gösterilmesi ve grafik olarak çizilmesi için while döngüsünü kullanıyoruz. Her iterasyondan 1 saniye sonra duraklama sağladık, böylece her saniye sıcaklık değeri güncellenecektir.

Code-using-MATLAB

Şimdi, kodun nasıl çalıştığını görelim. Üç satırlık satırın altında, başlangıç değerinin ‘x’ değerini sıfır olarak belirledik, while döngüsünü başlatmak için ‘go’yu tanımlamak ve Arduino’yu çağırmak için‘ global a ’olarak nitelendirdik.

LM35 Sıcaklık Sensörünün ‘A1’ pinine bağlı Arduino’nun analog pininden “A1” gelen voltaj değerini algılamak için kullanılır. Çıkış, analog değer değil voltaj değeri olacaktır.

Burada 10 ile çarparak voltaj değerini doğrudan sıcaklık değerine (derece Celsius) dönüştürebiliriz.

Devre Şeması :

Circuit-Diagram-MATLAB

 

 

 

 

 

Read More
MeK 15 Kasım 2018 0 Comments
93
Arduino

Arduino Programlama Yapısı ve Arduino ya giriş

Arduino ile programlama ile yazı dizimizde sizlere elimden geldiğinde programlama yapısından başlayıp yapıları sırası ile tanıtacağız.

Temel bir Arduino program döngüsü, setup () ve loop () adında iki işlevden oluşur.

Arduino IDE’yi açın ve iki işlevi görmek için Dosya → Örnekler → 01.Basics → BareMinimum öğesini seçin. Bu iki işlev artık varsayılan olarak yeni bir Arduino IDE penceresinde göründüğünden, IDE’nin yeni versiyonunda BareMinimum örnek taslağını açmak gerekli değildir.

Function Nedir?

Function daha sonra daha ayrıntılı olarak ele alınacaktır, şimdilik sadece işlevler hakkında aşağıdakileri bilmeniz gerekecektir:

Tüm fonksiyonlar benzersiz bir isme sahip olmalıdır, setup benzersiz bir fonksiyon isminin bir örneğidir (setup ve loop Arduino programlamada özel fonksiyonlardır ve temel yapısının bir parçasını oluşturur).
     İşlev adını, bir şey içerebilen veya içermeyen parantez () açıp kapatarak takip eder.
     Tüm fonksiyonlar bir dönüş tipine sahip olmalıdır. Hem setup hem de loop geçersiz bir dönüş tipine sahiptir.
     Bir fonksiyonun gövdesi bir açılış ve kapanış ayracı ({ve}) oluşur.

Yeni bir programlama dilini öğrenmeye başladığında “merhaba dünya” programı yazmak bir programlama geleneğidir. Bunun İçin bizde bu geleneği yerine getirelim

“Merhaba dünya” programı sadece “Merhaba, dünya!” yazısını ekrana yazdırmaktır. Bu programın amacı, programlama ortamınızın doğru şekilde kurulduğunu ve çalıştığını doğrulamaktır. “Merhaba dünya” programınız çalışıyorsa, yeni programlama dilini öğrenmeye başlayabilirsiniz.

Arduino’nun “merhaba dünya” metnini yazacak bir ekranı yok, ama USB portunu kullanabiliriz ve Serial Monitör kısmına bakınız.

void setup() {
  Serial.begin(9600);
  Serial.println("Hello, world!");
}

void loop() {
}


Dosya → Farklı Kaydet … Arduino IDE menüsünden ve sonra dosyayı hello_world olarak yeniden adlandırın.

Arduino’nuzu bir USB kablosu kullanarak PC’nize takın. Programı Arduino’ya yüklemek için Yükle düğmesine tıklayın.

Şimdi uygulamamızı denemek ve metin mesajını yazdırmak için Arduino IDE Seri Monitör Penceresini açın.

Ekranda Hello World yazını görüyorsanız uygulamanız çalışmaktadır.


Hata bulma
Programlama Hataları

IDE penceresine yanlış yazılan kod satırlarında bir hata derleme hatasına neden olacaktır, bu nedenle yukarıdaki kodda gösterildiği gibi her şeyi yazdığınızdan emin olun. Doğrulama düğmesi (onay simgesi) veya Yükle düğmesi (yatay ok simgesi) tıklandığında program derlenir.

Arduino’ya yüklerken sorun yaşıyorsanız, Araçlar → Kart altında doğru Arduino kartının seçildiğinden ve Araçlar → Seri Bağlantı Noktası altında doğru seri bağlantı noktasının seçildiğinden emin olun.
Baud Hızı Ayar Hatası

Uygulama başarılı bir şekilde yüklendiyse, seri izleme penceresinde metnin gösterilmesini engelleyen tek sorun, seri monitör penceresinin sağ alt tarafındaki baud hızının “Running the hello_world” de gösterildiği gibi 9600 olarak ayarlanmamasıdır.


Setup () işlevi

Setup () işlevindeki ifadeler, taslağın her çalıştırıldığında yalnızca bir kez çalıştırılır. Program daha sonra loop () işlevindeki ifadeleri çalıştırmaya başlar.

Arduino’ya programlandıktan sonra çalışacaktır. Seri monitör penceresini açmak Arduino’yu sıfırlayacak ve taslağı tekrar çalıştırmaya başlayacaktır.

Ayrıca Arduino üzerindeki sıfırlama düğmesine basılarak veya bağlantıyı keserek ve ardından Arduino’ya giden güce yeniden bağlanarak yeniden çalışabilir.

Loop () işlevi

Loop () işlevindeki ifadeler, sürekli olarak yukarıdan aşağıya ve sonra da en üste doğru çalışır.

Loop () işlevi iki deyim içeriyorsa, ilk ifade çalıştırılacak, ardından ikinci deyim, daha sonra ilk ifade tekrarlanacak ve böylece bir döngüde olacaktır.

Merhaba dünya örneğimizde loop () işlevinde hiçbir ifade bulunmadığından, program yürütme döngüde sona erecek ve hiçbir şey yapmadan takılıp kalmaya başlayacaktır.

Boş olsa bile,  loop () işlevine sahip olmak önemlidir, çünkü onsuz, Arduino kartındaki mikro denetleyici, setup () işlevindeki ifadeler sonraki bellekte buldukları her şeyi yürütmeye çalışacaktır. Mikrodenetleyici, bir komut olarak bellekte bulduğu her şeyi yürütmeye çalışacaktır, ancak Loop() işlevi, program yürütmeyi döngüde tutarak bunu yapmasını engeller.

Dersimizin bu bölümü bitmiştir. Diğer bölümde Loop işlevini daha detaylı örnekler ile göreceğiz.

Read More
MeK 9 Ekim 2018 0 Comments
97
Arduino

Arduino şifreleme

Bu projemizde serial portu kullanarak arduinomuzun şifre ile açacağız.Kısaca arduino bize bir şifre sorcak ve doğru ise arduino çalışmaya devam edecek.

Şifre gönderimini bilgisayarımızdan serial monitör tarafından olacak eğer şifre doğru ise asıl projemizin döngüsüne girecek şimdi bunu nasıl yapacağımıza kodlara geçelim

void setup() {
   pinMode(13, OUTPUT);
   digitalWrite(13, LOW);
   Serial.begin(9600);
   Serial.println("Merhaba!");
   delay(1000);
   Serial.println("Lutfen sifreyi giriniz");
 }

 void loop()  {
   start:
   const char pas = 'kodmek';

     if (Serial.read() == pas) {
         Serial.println("giris basarili");          
         delay(1000);
         digitalWrite(13, HIGH);
         goto start;
     }
   }

Not: Şifre girilirken serial haberleşme kullanıldığı için arduinonuzun üstündeki rx tx pinlerini dikkatli kullanalım


Read More
MeK 6 Ekim 2018 0 Comments
64
Arduino

Arduino Seri Haberleşme Serial Port Ve Fonksiyonları

Tüm Arduino kartlarında bilgisayar veya diğer cihazlar arasında bağlantı kuran Serial Port bulunuyor. Arduino UNO’dan bir tane Serial Port bulunurken Arduino MEGA ve Arduino DUE’de daha fazla port yer alıyor.

Arduino UNO, 0’dan 13’e kadar olmak üzere toplam 14 tane dijital pine sahiptir. Bu kartta da diğer kartlarda da görebileceğimiz gibi dijital 0 (RX) ve dijital 1 (TX) pinleri Serial Port için ayrılmıştır. Arduino kartımız üzerindeki Serial Port için ayrılmış pinleri tek seferde yalnızca Serial Port için kullanabiliriz. Bu sırada bu pinler başka giriş veya çıkış işlemlerini gerçekleştiremez.

Arduino programlama dilinde seri haberleşme portunu kullanımı için tanımlanmış bir Serial nesnesi bulunmaktadır. Serial nesnesi işimizi kolaylaştırıcı bir çok fonksiyona sahiptir. Bunları şöyle sıralayabiliriz.

  • available ()
  • availableForWrite ()
  • begin ()
  • end ()
  • find ()
  • findUntil ()
  • flush ()
  • if ( Serial )
  • parseFloat ()
  • parseInt ()
  • peek ()
  • print ()
  • println ()
  • read ()
  • readBytes ()
  • readBytesUntil ()
  • readString ()
  • readStringUntil ()
  • serialEvent ()
  • setTimeOut ()
  • write ()

Bu fonksiyonların her biri farklı bir görev için tanımlanmıştır ve Arduino kartınızla işlem yapmanızı sağlarlar.

Serial.begin()

Bu komut ile Seri ara birimi kullanmak için hazır hale getirmiş oluruz. Kullanım şekli Serial.begin(baud rate); şeklindedir. Burada gördüğünüz Baud Rate, haberleşme hızını belirtir ve birimi bps yani saniye başına bit’dir. Baud Rate;  300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, yada 115200 değerlerini alabilir. Standart olarak basit bir iletişim kurup haberleşme yapmak için 9600 bps kullanılır.

Serial.begin(baud_rate): Serial haberleşmenin başlatılması için “setup” kısmına yazılır.

Serial.print() / Serial.println(): Serial ASCII yazılarının göndermemizi sağlar. String ve Char değişkenlerini gönderir.

Serial.Write(): Serial üzerinden byte verileri gönderir.

Serial.read(): Serialden gelen verileri okumak için kullanılır.

Serial.available():  Serial bağlantının kullanılabilir olup olmadığını kontrol eder. “if” gibi foksiyonlarla kullanılır.

Read More
MeK 24 Nisan 2018 0 Comments
79
Arduino

Arduino LCD Kullanımı

LCD 16*2 yani 16 sütun 2 satırdan oluşuyor toplam 32 karektere yazı yazabiliyoruz.LCD toplam 16 pinden oluşur ve 10 pini kullanarak ekrana yazı yazdırabiliriz. Ekran kontrantını ayarlamak içinde bir tane potansiyometre kullanıyoruz.

LCD’yi kullanmak için kütüphaneye ihtiyacımız var. Kütüphaneyi normalda Arduino IDE programında …… klosörünün içine atıyoruz ama LCD kütüphanesi zaten IDE programında mevcut ayriyeten indirmeye gerek yok.

Kodlarımız :

//Kodmek.com
#include<LiquidCrystal.h> // Kütüphaneler programa bu şeklde eklenir.
LiquidCrystal LCD(2,3,4,5,6,7); // LCD'nin data pinileri olarak adlandırabiliriz.
// Bunların dışındaki pinler vcc, 2 gnd ve constant pini toplam 10 pin.
void setup(){
LCD.begin(16,2); //16 satır 2 sütun olan LCD'yi tanımladık
// Piyasada 20*4 LCDlerde var onlar için "LCD.begin(20,4);" yazılması gerek.
LCD.clear();// LCDdeki tüm karakterleri ve yazıları siler. Yeni birşey yazarken bunu kullanamazsanız
// LCD'de karmaşık olarak harf yada karakter gösterir.
}

void loop(){
LCD.setCursor(0,0); // Bu kod ile 1. satır ve ilk sütuna kursörümüzü çektik.
LCD.print("LCD kullanim"); // 1. satıra LCD kullanim yazdık Türkçe karakter desteklemiyor.
LCD.setCursor(5,1); // Kursörü 5. satır 2. sütuna çektik
LCD.print("Arduinocu");
lcd.blink(); //Kursorü yakıp söndürmek için.
delay(100); // Kursor 100 milisaniyede bir yanıp sönüyor.
}

Arduino LCD Kullanımı 16

Read More
MeK 17 Nisan 2018 0 Comments
67
Arduino

Arduino ile RGB led kontrolü nasıl yapılır?

Arduinoya bağlı 3 potansiyometreden okunan değerleri RGB ledin renk pinlerine pwm sinyali olarak göndererek bu işlemi gerçekleştirebilirsiniz.

Bildiğimiz gibi potansiyometreler 0-1023 arasında analog değerler üretmektedir. Potansiyometreden alınan analog değerler map komutu ile 0-255 arasındaki pwm sinyallerine dönüştürülerek, arduino üzerindeki pwm pinlerine bağlı RGB led pinlerine aktarılarak RGB led kontrol edilebilir. Bu sayede kırmızı, yeşil ve mavi dışında tüm ara renkleri de potansiyometreleri hareket ettirilerek ara renkler elde edilebilmektedir.

Şimdi hep birlikte potansiyometre ile RGB led nasıl kontrol edilir? Devre şemasını ve arduino kodlarını inceleyelim.

Arduino ile RGB led kontrolü nasıl yapılır? 17

Devre şeması incelendiğinde RGB led renk pinleri arduino 3,5,6 numaralı pwm pinlerinde bağlandı. Potansiyometrelerin veri pinleri ise sırayla A0,A1,A2 analog pinlerine bağlandı.

Kodlarımız :

//Kodmek.com
int r=3;
int g=5;
int b=6;

const byte potRed=A0;
const byte potGreen=A1;
const byte potBlue=A2;

int potDegerRed; int potDegerGreen; int potDegerBlue;
 
void setup() {
 
pinMode(r,OUTPUT);
pinMode(g,OUTPUT);
pinMode(b,OUTPUT);
}
 
void loop() {
int potDegerRed=map(analogRead(potRed,0,1023,0,255);
int potDegerGreen=map(analogRead(potGreen,0,1023,0,255);
int potDegerBlue=map(analogRead(potBlue,0,1023,0,255);
analogWrite(r,potDegerRed);
analogWrite(g,potDegerGreen);
analogWrite(b,potDegerBlue);
delay(100);
}

 

Read More
MeK 16 Nisan 2018 0 Comments
75
Arduino

Arduino ile L298N motor sürücü kullanma

L298N motor sürücü kartı ne işe yarar?

L298N motor sürücü kartı ile arduino kullanarak motor kontrolü gerçekleştirebilirsiniz. Motor sürücü kartına bağlayacağınız 2 motoru ileri veya geri tam güçte ya da istediğiniz hızda sürebilirsiniz. Motor sürücü kartları DC motor kullanılacak projelerde işinize oldukça yarayacak ve kullanımı ve kodlaması oldukça basit bir karttır.

298N motor sürücü kartının arduino bağlantı şemasına geçmeden önce kartın harici bir güç kaynağına ihtiyacı olduğunu bilmeliyiz. Bunun için 9V pil kullanabilirsiniz.

Pilin + kutbunu motor sürücünün +12V , – kutbunu ise GND girişine bağlanmalıdır. Ayrıca motor sürücünün çalışabilmesi için motor sürücünün GND girişinden bir ek kablo ile arduino GND pinine bağlantı yapılmalıdır.

Arduino ile L298N motor sürücü kullanma 18

L298n motor sürücü kartı arduino bağlantı devre şeması

L298N motor sürücü kartı arduino bağlantı şeması görseldeki gibi yapılmalıdır. Burada Sürücü kart üzerindeki IN1 ve IN2 soldaki motoru, IN3 ve IN4 ise sağdaki motoru kontrol etmek için kullanılmaktadır. Arduinoda sırasıyla 8,9,10 ve 11 numaralı pinlere bağlantı yapabilirsiniz. Motorları tam güçte sürmek için ENA ve ENB pinlerine bağlı kelepçeler çıkarılmamalıdır.

L298N motor sürücü arduino kodları

//Kodmek.com
const int in1 = 8;     // Motor sürücümüze bağladığımız pinleri tanımlıyoruz
const int in2 = 9;     
const int in3 =  10;
const int in4 =  11;

void setup() 

{
pinMode(in1, OUTPUT);  //Tüm pinlerden güç çıkışı olacağı için OUTPUT olarak ayarladık.
pinMode(in2, OUTPUT);  
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);

}

void loop() 

{
// motor 1
digitalWrite(in1, HIGH);
digitalWrite(in2,  LOW);  
// motor 2
digitalWrite(in3, HIGH);
digitalWrite(in4,  LOW);
}

L298N motor sürücü motor hız kontrolü arduino kodları

//Kodmek.com
const int in1 = 8;     // Motor sürücümüze bağladığımız pinleri tanımlıyoruz
const int in2 = 9;     
const int in3 =  10;
const int in4 =  11;

const int enA = 5;  //Enable pinlerini arduino 5,6 pwm pinlerine bağladık.
const int enB = 6;

void setup() 

{
pinMode(in1, OUTPUT); 
pinMode(in2, OUTPUT);  
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);

pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
}

void loop() 

{
 // motor 1
analogWrite(enA,  255);   //1. motor 255 ile tam hızda dönüyor...
digitalWrite(in1, LOW);
digitalWrite(in2,  HIGH);  

 // motor 2
analogWrite(enB,  40);  //2. motor 40 ile yavaş dönüyor...
digitalWrite(in3, HIGH);
digitalWrite(in4,  LOW);
}

 

Read More
MeK 15 Nisan 2018 0 Comments
80
Arduino

Arduino ile Park Sensörü Uygulaması

Bu yazımızda Arduino ile ufak bir park sensörü uygulaması yapacağız. Etraftaki nesneleri algılayarak uyarı verebilceğiniz bir uygulamadır. Uygulama da Arduino kütüphanelerini kullanarak sensör yardımı ile nesneleri algılatıp uyarı verdireceğiz .

Sizler uygulamayı geliştirerek robotlarda vb uygulamalarınızda kullanabilirsiniz.Şimdi uygulamamıza geçelim

GEREKLİ MALZEMELER

  • ARDUINO
  • 4 ADET LED
  • 5 ADET 220 OHM DİRENÇ
  • 1 ADET BUZZER
  • BREAD BOARD
  • YETERİ KADAR JUMPER KABLO

Devre Çizimimiz :

Arduino ile Park Sensörü Uygulaması 19

Kodlarımız :

//M Enes KALE  park sensör yapımı.
 
const int trigger_pin = 12; //12. pini  trigger pin olarak tanımladık.
 
const int echo_pin = 13; //13. pini echo pin  olarak tanımladık.
 
const int aled = 2; //2. pini aled  olarak tanımladık.
 
const int bled = 3; //3. pini bled  olarak tanımladık.
 
const int cled = 4; //4. pini cled  olarak tanımladık.
 
const int dled = 5; //5. pini dled  olarak tanımladık.
 
const int buzzer = 6; //6. pini buzzer  olarak tanımladık.
 
int sure ; //sure adlı bir değişken tanımladık.
 
int mesafe ; //mesafe adlı bir değişken tanımladık.
 
&nbsp;
 
void setup() {
 
pinMode(aled , OUTPUT); //aled'i çıkış olarak tanımladık.
 
pinMode(bled , OUTPUT); //bled'i çıkış olarak tanımladık.
 
pinMode(cled , OUTPUT); //cled'i çıkış olarak tanımladık.
 
pinMode(dled , OUTPUT); //dled'i çıkış olarak tanımladık.
 
pinMode(buzzer , OUTPUT); //buzzer'i çıkış olarak tanımladık.
 
pinMode(trigger_pin , OUTPUT); //trigger pin'i çıkış olarak tanımladık.
 
pinMode(echo_pin , INPUT); //echo pin'i giriş olarak tanımladık.
 
}
 
void loop()
 
{
 
digitalWrite(trigger_pin , HIGH); //trigger pin'e enerji verdik.
 
delayMicroseconds(1000); //mesafeyi ölçmesini sağladık.
 
digitalWrite(trigger_pin , LOW); //trigger pinin enerjisini kestik.
 
sure = pulseIn(echo_pin , HIGH); //sure değişkenin echo pin'in değiştirmesini sağladık.
 
mesafe = (sure / 2) / 29.1;
 
&nbsp;
 
if (mesafe <= 10) //mesafemiz 10 cm den kısa ise bunları yapar.
 
{
 
digitalWrite(aled , HIGH); //aled'e enerji verdik.
 
digitalWrite(bled , HIGH); //bled'e enerji verdik.
 
digitalWrite(cled , HIGH); //cled'e enerji verdik.
 
digitalWrite(dled , HIGH); //dled'e enerji verdik.
 
digitalWrite(buzzer , HIGH); //buzzer'e enerji verdik.
 
delay(250); //0,25 saniyede bir tekrarlanmasını sağladık.
 
digitalWrite(buzzer , LOW); //buzzer'in enerjisini kestik.
 
}
 
else if (mesafe <= 25) //mesafemiz 25 cm den kısa ise bunları yapar.
 
{
 
digitalWrite(aled , LOW); //aled'in enerjisini kestik.
 
digitalWrite(bled , HIGH); //bled'e enerji verdik.
 
digitalWrite(cled , HIGH); //cled'e enerji verdik.
 
digitalWrite(dled , HIGH); //dled'e enerji verdik.
 
digitalWrite(buzzer , HIGH); //buzzer'e enerji verdik.
 
delay(500); //0,50 saniyede bir tekrarlanmasını sağladık
 
digitalWrite(buzzer , LOW); //buzzer'in enerjisini kestik.
 
}
 
else if ( mesafe <= 50) //mesafemiz 50 cm den kısa ise bunları yapar.
 
{
 
digitalWrite(aled , LOW); //aled'in enerjisini kestik.
 
digitalWrite(bled , LOW); //bled'in enerjisini kestik.
 
digitalWrite(cled , HIGH); //cled'e enerji verdik.
 
digitalWrite(dled , HIGH); //dled'e enerji verdik.
 
digitalWrite(buzzer , HIGH); //buzzer'e enerji verdik.
 
delay(750); //0,75 saniyede bir tekrarlanmasını sağladık
 
digitalWrite(buzzer , LOW); //buzzer'in enerjisini kestik.
 
}
 
else //alan boş ise bunu yapar
 
{
 
digitalWrite(aled , LOW); //aled'in enerjisini kestik.
 
digitalWrite(bled , LOW); //bled'in enerjisini kestik.
 
digitalWrite(cled , LOW); //cled'in enerjisini kestik.
 
digitalWrite(dled , HIGH); //dled'e enerji verdik.
 
}
 
}

Yukarıdaki kodlar sayesinde sizde arduino ile araba park sensörü yapabilirsiniz. Kodları bir robot projenizde kullanarak robotunuzun nesnelerden kaçmasınıda sağlayabilirsiniz. Kodları geliştirmek size kalmış . Başka projelerde kullanmak için veya gelişmiş daha farklı projeleriniz var ise bizlerle yorum atarak paylaşabilirsiniz.

 

 

Read More
MeK 22 Şubat 2018 0 Comments
76
Arduino

Arduino Bluetooth Modulü ile Led Yakma

Bu uygulamamız ile Arduino Bluetooth Modülü ile haberleşim led yakma uygulaması yapacağız.

Kullanacağımız malzemeler :

  1. Ledler ve buzzer
  2. HC-05 Bluetooth Modulü (veya HC-05)
  3. Arduino Uno(veya herhangi bir modeli)
  4. Android Telefon

Uygulamamız iki adet Led yakcaz ve bir buzzer dan ses çıkaracağız.

Kodlarımız :
#include<SoftwareSerial.h>
SoftwareSerial btmodul(10,11);   // 10 ve 11. pin Rx ve Tx pinleri olacaktır.
char data;  //data değişkeninin türünü char olarak ayarlıyoruz.
int led=13; 
int led1=3;
int buzzer=4;
void setup()
{
btmodul.begin(9600);  // Seri iletişimi başlatır.
pinMode(led,OUTPUT);  //13. pinimizi(led=13) çıkış yapıyoruz.  
pinMode(led1,OUTPUT);
pinMode(buzzer,OUTPUT);
}
void loop()
{
if (btmodul.available()) {   // Eğer bluetooth bağlantısı varsa içindeki kodları çalıştırır. (Bu kısmı kullanmayada bilirsin.)
data = btmodul.read();     //Gelen değeri okuyoruz. ve data değişkenine aktarıyoruz.
if(data=='1') {    //Eğer Android'ten gelen değer "1" ise( yani 1 rakamına bastığımızda,)
digitalWrite(led,HIGH);}    //digitalWrite ile 13. pini (HIGH) yaparak Ledimizi yakıyoruz. 
else if(data=='0'){       //Eğer Android'ten gelen değer  "2"  rakamı ise
digitalWrite(led,LOW); }    //digitalWrite ile 13. pini (LOW) yaparak Ledimizi söndürüyoruz. 
else if(data=='g'){    // Eğer "g" tuşuna basılırsa;
digitalWrite(led1,HIGH);  // ledi 0.1 saniye aralıklarla yakıp söndür
delay(100);
digitalWrite(led1,LOW);
delay(100);
}
else if(data=='k'){    // Eğer "k" tuşuna basılırsa,
digitalWrite(buzzer,HIGH);   // Buzzer'ı 1 saniye aralıklarla aktif et.
delay(1000);
digitalWrite(buzzer,LOW);
delay(1000);
}
}
}
Devre Tasarımı :

Arduino Bluetooth Modulü ile Led Yakma 20

Yukardaki kodlarımızı Arduino muzun içine attıktan sonra devremizi kurup çalıştırabilirsiniz . Android telefonunuza GooglePlay den Bluetooth modülünden haberleşme için Arduino Bluetooth Controller uygulamasını indirerek modül ile eşleştirip kontrol edebilirsiniz. Kontrol için “1,0,g ve k” karakterlerini kullanarak çalıştırğını görebilirsiniz.

Read More
MeK 5 Şubat 2018 0 Comments
75
  • 1
  • 2
New Comments
  • SP Flash Tool için veysel25
  • DZ09 Smartwatch Saat modelleri ekleme için MeK
  • DZ09 Smartwatch Saat modelleri ekleme için furkan öztoprak
  • STM32F103 1602A LCD Bağlantısı için MeK

Kodmek güncel teknoloji ve programlama platformu
Bültene kayıt ol

[mc4wp_form id="357"]

Kullanım koşulları | Gizlilik Çevreve politikası

Copyright © 2023 kodmek.com. All Rights Reserved.