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

Category: Elektronik

Elektronik

UHF ve HF RFID Etiketleri Arasındaki Farklar

RFID teknolojisi, nesneleri tanımlamak ve izlemek için kullanılan bir teknolojidir. RFID etiketleri, nesneler hakkında bilgi saklayan ve bu bilgiyi okuyuculara ileten küçük cihazlardır.

UHF (Ultra Yüksek Frekans) ve HF (Yüksek Frekans) RFID etiketleri, en yaygın kullanılan iki RFID etiketi türüdür. Her iki teknolojinin de kendine özgü avantajları ve dezavantajları vardır.

UHF RFID Etiketleri:

UHF RFID etiketleri, 860 MHz – 960 MHz frekans bandında çalışır. Bu etiketler, 10 metreye kadar okuma mesafesine sahiptir ve daha yüksek veri aktarım hızına sahiptir.

UHF RFID etiketlerinin avantajları:

  • Uzun okuma mesafesi
  • Hızlı veri aktarım hızı
  • Düşük maliyet
  • Metal ve sıvı gibi ortamlara karşı daha az hassasiyet

UHF RFID etiketlerinin dezavantajları:

  • Daha büyük boyut
  • Daha az hassas okuma

HF RFID Etiketleri:

HF RFID etiketleri, 13.56 MHz frekans bandında çalışır. Bu etiketler, 1 metreye kadar okuma mesafesine sahiptir ve daha düşük veri aktarım hızına sahiptir. HF RFID etiketleri genellikle erişim kontrolü gibi alanlarda kullanılır.

HF RFID etiketlerinin avantajları:

  • Daha küçük boyut
  • Daha hassas okuma

HF RFID etiketlerinin dezavantajları:

  • Kısa okuma mesafesi
  • Yavaş veri aktarım hızı
  • Daha yüksek maliyet
  • Metal ve sıvı gibi ortamlara karşı daha fazla hassasiyet

Yorum : HF etiketler düşük frekanslı etiketler olduğu için NFC okuyucu tarafından okunabiliyor ve buda bir güvenlik açığına sebep olabilir. Ayrıca okuma mesafelerinin çok kısa olması sebebi ile okuyucuların çok yakın tutulması gerekiyor. Güvenlik kapıları gibi alanlarda kontrol amaçlı kullanıldığında güvenlik kapısının hassasiyetinin iyi ayarlanması gerekir yoksa geçişlerde alarm üretmeyebilir. Ayrıca Kütüphane sistemlerinde veya depo sisteminde envanter sayımlarda kullanılması çok uygun değildir. Çünkü okuyucunun tek tek materyallere yakın tutulması gerekir. Bu gibi senaryolarda Yüksek Frekanslı Etiket olan UHF kullanılması daha uygun olacaktır.

UHF etiketleri uzaktan okumadan HF etiketlere göre çok başarılıdır. Envanter sayım yapılırken bir odada ki materyallerin tümünü saniyeler içerisinde getirebilir. Güvenlik kapılarında geçişlerde HF etiketlere göre çok başarılıdır. Uzun okuma mesafelerinden dolayı genelde kaçak geçişlerde güvenlik kapıları alarm üretecektir. Özel okuyucular ile okuma ve yazma işlemi yapılmaktadır. Bir NFC okuyuculu telefon bu etiketleri okuyamamaktadır.

Kısaca kısa okuma mesafesi alanlarında geçiş kontrol kartları gibi alanlarda HF etiket kullanılabilir. Bir depo materyal takip güvenlik gibi alanlarda UHF etiketi tercih edilebilir.

Read More
MeK 27 Mart 2024 0 Comments
123
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
Devre Tasarımı

0-30 V Kısa Devre Korumalı Transistörlü Güç Kaynağı Modeli

Bu yazımızda kısa devre korumalı bir güç kaynağı devresine bakacağız. 0 – 30 V aralığında olan bir transformatör kullanarak yapılacaktır. Şimdi projemize göz atalım :

Devre Elemanları

• 220/30 V luk transformatör
• Köprü tipi diyot D1=B80 C5000/3300
• C1=2200µf / 63V elektrolitik kondansatör
• ZD=30V zener diyot
• Transistor ler T1 =2N3055 , T2=T4=BD239 , T3=BC141
• Direçler : R1=1K5 (2W) , R2= 470 , R3=680 , R4=22 , R5=120 , R6=1K (2W)
• 5mm Kırmızı LED

Temel Güç Kaynağı Bloğu :

0-30 V Kısa Devre Korumalı Transistörlü Güç Kaynağı Modeli 9

Şebekeden alınan 220V’luk gerilimi 30V’a düşüren devre elemanına transformatör denir. Transformatörümüz 12V veya 24V olsaydı şebekeyi verilen değerlere düşürürdü. Diyod köprüsü yardımıyla akım tek yönlü geçmektedir. Transformatör çıkışlarındaki sinüsoidal gerilimi tam olarak doğrultmasa da zamana bağlı olarak yönün hep aynı olmasını sağlar.

Kondansatörün devredeki faktörü ise, gerilimin sabit bir değerde kalması için filtreleme görevi yapmaktadır.Potansiyometre yardımıyla T3 trasnsistörün Ib akımı altırılıp azaltarak gerilim ayarlaması yapılır. Led devrede gerilimin olup olmadığını anlamak için bir sinyal görevi yapar. Ona bağlı seri direnç ise led’ in yanmaması için gerilim bölücü görevi yapmaktadır.

Devre Şeması :

0-30 V Kısa Devre Korumalı Transistörlü Güç Kaynağı Modeli 10

Read More
MeK 5 Ocak 2019 1 Comment
107
Mikrodenetleyiciler

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek

Mikrodenetleyici PIC16F877A, CCP modüllerini kullanırsak, sadece RC1 ve RC2 pimleri üzerinde PWM sinyalleri üretebiliriz. Ancak PWM sinyaline ihtiyacımız olan bir çok durumla karşılaşabiliriz ve bu sinyal için diğer pimlerden yararlanmamız gerekebilir. Bu durumda, zamanlayıcı modüllerini kullanarak PWM sinyalleri üretmek için GPIO pimlerini programlayabiliriz. Bu şekilde, GPIO pinleri ile birçok PWM sinyali üretebiliriz. Bu projemizde bir potansiyometre kullanarak servo motorumuzu kontrol edeceğiz.

PWM Sinyali Nedir?

Proje detaylarına girmeden önce, PWM Sinyallerinin ne olduğunu biraz inceleyelim. Darbe Genişliği Modülasyonu (PWM), kontrol devrelerinde en sık kullanılan dijital bir sinyaldir. Bu sinyal önceden tanımlanmış bir zaman aralığında ve hızda yüksek (5v) ve düşük (0v) olarak ayarlanır. Sinyalin yüksek kaldığı süre “açık süre”, sinyalin düşük kaldığı süre “kapalı süre” olarak adlandırılır.

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 11

PWM için Duty Cycle Hesapı

Bir GPIO pininde PWM sinyali üretmek için önceden tanımlanmış bir süre için onu açıp kapatmak zorundayız. Ama göründüğü kadar basit değildir. Bu açık ve kapalı zaman her döngü için doğru zamanda olmalıdır, bu nedenle gecikme fonksiyonlarını kullanamayız, bu nedenle zamanlayıcı modülünü kullanarak zamanlayıcı kesmesinden yararlanabiliriz. Ayrıca ürettiğimiz PWM sinyalinin görev döngüsünü ve sıklığını da göz önünde bulundurmalıyız. Parametreleri tanımlamak için aşağıdaki değişken isimleri programda kullanılır.

PWM_Frequency = PWM Sinyalinin Frekansı
T_TOTAL = Bir tam PWM döngüsü için harcanan toplam süre

T_ON = PWM sinyalinin açık kalma süresi
T_OFF = PWM sinyalinin kapalı kalma süresi
Duty_cycle = Görev döngüsü

T_TOTAL = (1/PWM_Frequency)

T_ON = (Duty_Cycle*T_TOTAL)/100

T_OFF = T_TOTAL – T_ON

Mikrodenetleyici GPIO Pimleri Üzerinde PWM Üretmek İçin Programlama

Kodların tamamı sayfanın altındandır. Kodların açıklamaları

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 12

Gerekli ayarlamaları yaptıktan sonra aşağıda bir hobi RC servo motoru kontrol etmek için Frekans değeri olarak 0.05KHz’i ayarlandı. Bunu uygulama gereksinimlerinize göre değiştirebilirsiniz.

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 13

T_Total değeri yukardaki formüle göre hesaplandı

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 14

Ana fonksiyonun içinde zamanlayıcı modülünü yapılandırırız. Burada Timer modülünü her 0.1ms için yapılandırıldı.

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 15

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 16

Ardından Giriş ve Çıkış yapılandırmasını ayarlamalıyız. Burada ADC değerini okumak için AN0 pimini ve PWM sinyallerini vermek için PORTD pimlerini kullanıyoruz. Bu nedenle, bunları çıkış pimleri ayarlayın ve aşağıdaki kod satırlarını kullanarak bunları düşük kenarlı yapınız.

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 17

Potansiyometrenin durumuna göre Görev süresini hesapladık

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 18

Zamanlayıcı kullanarak 0.1 sn de bir kesme ayarladık.

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 19

Son olarak GPIO pinlerini T_on ve T_off değerlerine göre değiştirdik.

 

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 20

Circuit Diagram

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 21

Mikrodenetleyici PWM Sinyali Servo Motor

 

Mikrodenetleyici Kullanarak PWM Sinyali Üretmek 22En uygun Fiyat1pcs PIC16F877A-I/P PIC16F877A PIC16F877 16F877A-I/P MICROCHIP DIP40
 

Tam Kodlar :

Icon

Microcontroller Servo Motor

1 file(s) 0
Please login to download

Read More
MeK 27 Aralık 2018 0 Comments
93
Raspberry

Raspberry Pi Nedir ?

Raspberry küçük boyutlara sahip kredi kartı büyüklüğünde bilgisayar yapılarıdır. Uygun fiyatlı olması ile programlama geliştirme ve projelerinizde kullanabileceğiniz ufak boyutlu uygun sistemlerdir. Bunların yanı sıra Masaüstü bilgisayarınız veya notebook unzda yapabileceğiniz tüm işlemleri bu küçük bilgisayarınızda yapabilirsiniz.

Raspberry Pi Modelleri

Raspberry Pi’nin çeşitli modelleri bulunmaktadır. Bu modeller temelde aynı olsalar da, yenilik, hız vb. açılardan farklılık gösterirler.

Model A: Raspberry Pi’nin en temel sürümüdür. Üzerinde sadece 1 adet USB portu, 3.5 mm stereo ses çıkışı, kompozit video ve HDMI portu bulunur. Ethernet girişi bulunmaz. ARM v6 mimarisine sahip tek çekirdek işlemciye sahiptir. 256MB RAM belleği vardır. 26-pinli GPIO konektörü bulunur. Az güç tüketmesi sayesinde gömülü sistem projelerinde kullanılması için tasarlanmıştır.

Model A+: Model A’nın güncellenmiş sürümüdür. Bu sürümde 26-pinli GPIO konektörü 40-pine çıkartılmış, kompozit video çıkışı kaldırılmış ve normal SD kart yerine mikro SD kart slotu kullanılmıştır. Kart boyutları ufaltılarak yer sıkıntısı çekilebilecek projelerde kullanılması hedeflenmiştir. En küçük boyutlu Raspberry Pi’dir.

Model B: Raspberry Pi’nin en çok bilinen ve kullanılan modelidir. 2 adet USB portu, Ethernet girişi, 3.5 mm stereo HDMI ve kompozit video çıkışları bulunur. ARMv6 mimarisine sahip tek çekirdek işlemciye sahiptir. 512MB RAM belleği vardır. 26-pinli GPIO konektörü bulunur. En popüler Raspberry Pi modelidir.

Model B+: Raspberry Pi Model B’nin geliştirilmiş ve kart tasarımı değiştirilmiş sürümüdür. Model B’den farklı olarak 4 adet USB portu, normal SD kart yerine mikro SD kart slotu ve 26-pin yerine 40-pinli GPIO konektörü bulunur. HDMI ve Ethernet bağlantıları yine bu kartta yer almaktadır. Kompozit video çıkışı bu kartta ayrı bir konektör olarak yer almamaktadır, 3.5 mm ses çıkış portundan 3’lü RCA tipi kabloyla bağlanır.

Raspberry Pi 2: Model B+ ile aynı kart dizilimine sahip olmasına karşın, bu kartta ARMv7 mimarisine sahip 4 çekirdekli işlemci ve 1GB RAM bellek bulunmaktadır. Model B+ ile aralarında çok fazla fiyat farklı bulunmadığından, satın almanızı tavsiye edeceğimiz model budur.

Raspberry Pi 3: Raspberry Pi 2’nin devamı olan bu modelin en büyük farkı dahili Wi-Fi ve Bluetooth bağlantıya sahip olmasıdır. Ayrıca ARMv8 64-bit mimarisine sahip 4 çekirdekli işlemcisi, 1.2GHz frekansında çalışmaktadır ve 1GB RAM belleğe sahiptir.

Raspberry Pi Zero: Bütün dünyayı ayağa kaldıran Raspberry Pi modelidir :). Bunun en büyük sebebi, $5’lık fiyat etiketiyle satışa sunulması olmuştur. En küçük boyutlu Raspberry Pi modelidir. Donanımı (işlemci ve belleği) Raspberry Pi Model B ile tamamen aynıdır. Boyutundan dolayı tam boy USB yerine mikro USB-OTG portuna sahiptir.

Raspberry Pi 3 B+: Fiziksel olarak kartın boyutu ve yerleşimi B+/2/3 sırasını takip edecek şekilde değişmeden aynı formunu korumuş, buna karşılık işlemcisi ve kablolu/kablosuz ağ bağlantı hızı güncellenmiştir. Pi 3B+ üzerinde yer alan gigabit Ethernet kontrolcü sayesinde eskisine göre 3 kat daha hızlı ve PoE (Power-over-Ethernet) destekli kablolu; çift band 802.11ac kablosuz bağlantı sayesinde ise kablosuz bağlantıda 2 kat hızlı bağlantı desteği sunulmaktadır. Ayrıca Bluetooth desteği de Pi 3’te sağlanan Bluetooth BLE 4.1’den BLE 4.2’ye terfi etmiştir.

Read More
MeK 25 Aralık 2018 0 Comments
73
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ü 23

Ş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ü 24

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ü 25

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ü 26

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ü 27

Ş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ü 28

Gerekli Malzeme

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

MATLAB ile Arduino kullanarak Step Motor Kontrolü 29

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
STM

STM32F103C8 Kartının USB Portunu Kullanarak Programlama

STM32F103C8 Arm tabanlı mikroişlemci barındıran STM32 Geliştirme Kartı, ARM Cortex M3 mimarisi sayesinde gittikçe daha popüler hale geliyor, yüksek çalışma hızı ve daha fazla çevre seçeneğine sahip. Ayrıca bu kart Arduino IDE kullanılarak kolayca programlanabileceğinden hızlı prototipleme için birçok hobi ve mühendis için tercih seçeneği haline gelmiştir.

Önceki dersimizde STM32 Geliştirme Kartının temellerini öğrendik ve bir basit bir uygulama programladık. Fakat programlamak için bir programlayıcı modülü kullandık ve aynı zamanda bir kod yüklerken ve test ederken önyükleme 0 jumper’ı ile 1 pozisyonu arasında geçiş yapmak zorunda kaldık. Bu kesinlikle uğraştırıcı ve pratik değil. Ayrıca Geliştirme kartındaki mini USB bağlantı noktası programlama için kullanılmamaktaydı. Bunun nedeni, STM32 geliştirme kartını satın aldığınızda, bir Arduino hazır ön yükleyici ile birlikte gelmez ve dolayısıyla USB üzerinden bilgisayarınıza bağladığınızda bilgisayarınız görmüyecektir.

Ancak yine de Maple mini anakartlar için LeafLabs tarafından geliştirilen bir ön yükleyici bulunmaktadır. Bu önyükleyici STM32’ye bir kez yüklenir ve daha sonra diğer herhangi bir Arduino kartında olduğu gibi programları yüklemek için doğrudan STM32 kartının USB portunu kullanabiliriz. Ancak bu önyükleyicinin beta aşamasında olduğunu söylemek isterim.

Gerekli malzemeler

 

STM32 – (BluePill) Geliştirme Kartı (STM32F103C8)
FTDI Programcısı

Devre şeması

Programlayıcı ve stm32 kartımız aşağıda gösterildiği gibi STM32’nin Rx ve Tx pinine bağlanır.

STM32 Geliştirme Kartı

STM32 Geliştirme Kartı

 

Stm kartımız aşağıda gösterildiği gibi programlama moduna alınır.

STM32 Geliştirme Kartı

STM32 Geliştirme Kartı

Önyükleyiciyi Karta Yükleme :

Yukarıdaki bağlantıyı yaptıktan sonra FTDI kartını bilgisayarınıza bağlayınız ve bootloader’ı STM32’ye yüklemek  için adımları takip ediniz.

  1. Adım : Önyükleyici dosyasını indiriniz
Icon

STM32duino-bootloader 10.97 KB 184 downloads

STM32duino bootloader ...
Please login to download

2. Adım: Daha sonra indirilen bin dosyasını STM32’ye aktarmak için STM Flash yükleyici yazılımını indirip kurmamız gerekiyor.

3. Adım: Yazılımı indirmek için E-posta adresinizi girmeniz gerekmektedir ve indirme linki E-postanıza gönderilecektir. Ardından bağlantıya tıklayarak yazılımı tekrar al seçeneğine tıklayın. İndirme işlemi başlayacaktır. Evet biraz sinir bozucu bir işlem gerektiriyor. E-posta için spam klasörünüzü kontrol etmeyi unutmayın, bazen E-postanın gelmesi birkaç dakika alır.

4. Adım: İndirildikten sonra yazılımı kurun, STM32 kartınızın seriport dönüştürücü kartının bilgisayarınıza bağlı olduğundan emin olun ve yazılımı başlatın. Yazılım, COM bağlantı noktasını otomatik olarak algılar ve doğru COM bağlantı noktası numarasını seçtiğinizden emin olun. Benim portum COM4. Ayarın geri kalanını aşağıda gösterildiği gibi bırakın.

stm32 kartı önyükleyici

stm32 kartı önyükleyici

5. Adım: Next butonuna iki kez tıklayın ve yazılım yine kartı otomatik olarak algılar ve aşağıda gösterildiği gibi görüntülenir. Kullandığımız kart 128K flash belleğe sahip STM32F1.

stm32 kartı önyükleyici

stm32 kartı önyükleyici

6. Adım: Bir sonraki adımda, Cihaza yükleyi seçin ve 1. adımda bin dosyamızı indirdiğimiz yere göz atın ve onu seçin. Sonraki adıma geçin

stm32 kartı önyükleyici

stm32 kartı önyükleyici

7. Adım: Yazılım, aşağıda gösterildiği gibi bazı gerekli dosyaları indirecek ve ardından yükleme sürecine başlayacaktır.

stm32 kartı önyükleyici

stm32

8. Adım: Yükleme işlemi başarıyla tamamlandığında, aşağıdaki ekranı göreceğiz. Kapat’a tıklayın ve uygulamadan çıkın. STM32 için önyükleyiciyi başarı ile yüklemiş bulunmaktayız. Şimdi, STM32 kartını programlayabilmek için Arduino IDE’yi hazırlamalı ve sürücüleri kurmalıyız.

STM32 Satın Almak İçin :

STM32F103C8 Kartının USB Portunu Kullanarak Programlama 30En Uygun Fiyata STM32F103 – stm32f103c8t6 stm32f103 stm32f1 stm32 system board learning board evaluation kit development board

Read More
MeK 15 Aralık 2018 0 Comments
105
Devre Tasarımı

Melodi devresi Yapımı

Bu yazımızda en basidinden nasıl bir melodi devresi yapılacağını anlatacağız.

Gerekli Malzemeler :

UM66 ENTEGRESİ

hoparlör veya Piezo

1.5 VE 4.5 Volt Arası Herhangi Bir Pil.(3V önerilir)

Bakır Tel

UM66 dediğimiz entegre, 3 bacaklı transistör görünümlü bir tümleşik devredir ve ucuzdur. Batı dünyasının dinsel melodileri, doğum günü melodileri, herkesçe bilinen klasik müzik parçalarını monofonik olarak içinde barındıran bu devreyi alırken son yazan kod numarasına göre melodilere bakabilirsiniz. Fakat piyasada sadece belli başlı melodiler bulunmaktadır.

Melodi Listesi :

UM66TO1 = Jingle Bells + Santa Claus is Coming to Town + We Wish You a Merry
UM66T02 = Jingle Bells
UM66T04 = Jingle Bells + Rudolph, the Red-nosed Reindeer+Joy to the World
UM66T05 = Home Swee tHome
UM66T06 = Let Me Call You Sweetheart
UM66T08 = Happy Birthday to You
UM66109 = Wedding March (Mendelssohn)
UM66T11 = Love Me Tender, Love Me True
UM66T13 = Easter Parade
UM66T19 = For Elise
UM66T32 = Waltz
UM66T33 = Mary Had a Little Lamb
UM66T34 = The Train is Running Fast
UM66T68 =It’s a Small World
Piezo denilen metal levha ise; Arasında, gerilim verildiğinde titreşen kristallerin olduğu 2 levhanın birleşiminden oluşur ve bu titreşimler sonucu ses çıkarır.
Devre Şeması :
um66

 

Read More
MeK 4 Aralık 2018 0 Comments
102
STM

Keil uVision kullanarak STM32F103C8 Programlama

ARM Cortex M mimarisini kullanan STM32 Mikrodenetleyiciler artık yaygınlaşıyor özelliği, maliyeti ve performansı nedeniyle birçok uygulamada kullanılıyor. Önceki derslerimizde Arduino IDE kullanarak STM32F103C8’i programladık. Arduino IDE ile programlama STM32 basittir, çünkü herhangi bir görevi yerine getirmek için çeşitli sensörler için birçok kütüphane mevcut olduğundan, sadece bu kütüphaneleri programa eklememiz yetiyordu. Bu kolay bir işlemdir ve ARM işlemcileri hakkında derinlemesine öğrenmenizi engelliyecektir. Şimdi, ARM programlama adı verilen bir sonraki programlama seviyesine geçiyoruz. Bununla sadece kod yapımızı geliştirmekle kalmaz, aynı zamanda gereksiz kütüphaneleri kullanmadan da hafıza alanını koruyabiliriz.

Bu yazımızda, STM32F103C8’i, Keil uVision & STM32CubeMX kullanarak basit bir led örneğini nasıl programlayacağımızı öğreneceğiz. Kodu STM32Cube MX kullanarak oluşturacağız ve daha sonra kodu Keil uVision kullanarak STM32F103C8’e düzenleyip yükleyeceğiz.

ST-LINK V2

ST-LINK / V2, STM8 ve STM32 mikrodenetleyici aileler için bir debugger ve programcıdır. Bu ST-LINK kullanarak STM32F103C8 ve diğer STM8 & STM32 mikrodenetleyicilere kod yükleyebiliriz. STM32 uygulamaları Atollic, IAR, Keil veya TASKING entegre geliştirme ortamları ile iletişim kurmak için USB arabirimini kullandıklarından, bu donanımı STM 8 ve STM32 mikro denetleyicileri programlamak için kullanabiliriz.

ST-LINK-V2-in-Circuit-Debugger-and-Programmer[1]

STM32CubeMX

STM32CubeMX aracı, STMicroelectronics STMCube’un bir parçasıdır. Bu yazılım aracı, kodlamayı ve zamanı azaltarak kolaylaştırır. STM32Cube, grafik sihirbazlarını kullanarak C başlatma kodunun oluşturulmasını sağlayan grafiksel bir yazılım yapılandırma aracı olan STM32CubeMX’i içerir. Bu kod, keil uVision, GCC, IAR gibi çeşitli geliştirme ortamlarında kullanılabilir. Bu aracı linkten indirebilirsiniz.

Devre Şeması ve Bağlantıları

Aşağıda, bir buton kullanılarak STM32 kartlı bir LED’in bağlanması için devre şeması verilmiştir.

Circuit-Diagram-for-Programming-STM32F103C8-using-Keil-uVision-and-STM32CubeMX[1]

Burada STM32 Blue Pill board, bilgisayarın USB portuna bağlı ST-LINK’den güç alır. Bu yüzden STM32’ye ayrı ayrı güç vermemize gerek yok. 

STM32F103C8

ST-Link V2

GND

GND

SWCLK

SWCLK

SWDIO

SWDIO

3V3

3.3V

 

Circuit-Hardware-for-Programming-STM32F103C8-using-Keil-uVision-and-STM32CubeMX[1]

Keil uVision ve ST-Link kullanarak STM32’ye bir program oluşturma ve yükleme

Adım 1:  Önce ST-LINK V2 için tüm aygıt sürücülerini, STM32Cube MX & Keil uVision yazılım araçlarını kurun ve STM32F103C8 için gerekli paketleri kurun.

Adım 2: İkinci adım >> STM32Cube MX çalıştırın

Adım 3: Sonra Yeni Projeye tıklayın

Open-STM32Cube-MX[1]

Adım 4: – STM32F103C8’yi seçin

Choose-STM32F103C8-for-Programming[1]

Adım 5: – Şimdi STM32F103C8’in pin-out çizimi belirir, burada pin konfigürasyonlarını ayarlayabiliriz. Projelerimize göre çevre birimlerimizdeki pimlerimizi de seçebiliriz.

STM32F103C8-Pinout[1]

Adım 6: – Ayrıca pimi doğrudan tıklatabilirsiniz ve bir liste belirir, şimdi gerekli pin konfigürasyonunu seçin.

Select-Pin-Configuration-for-STM32F103C8-in-STM32CubeMX[1]

Adım 7: – Projemiz için PA1’i GPIO GİRİŞİ olarak, PC13’ü SERİ olarak GPIO ÇIKIŞI ve SYS hata ayıklaması olarak seçtik, burada sadece ST-LINK SWCLK & SWDIO pinlerini bağlarız. Seçilen ve yapılandırılmış pimler YEŞİL renkte görünür. Aşağıdaki resimde görülebilir.

Selected-IO-Configuration-for-STM32F103C8-in-STM32CubeMX[1]

Adım 8: – Konfigürasyon sekmesi altında, seçtiğiniz pinler için GPIO pin konfigürasyonlarını ayarlamak için GPIO’yu seçin.

Select-the-Selected-Pins-in-Configuration-tab-of-STM32CubeMX[1]

Adım 9: – Bu pin yapılandırma kutusunda, kullanıcı etiketini kullandığımız pimler için, yani kullanıcı tanımlı pin isimleri için yapılandırabiliriz.

Configure-User-Label-in-STM32CubeMX[1]

Adım 10: – Bundan sonra Proje >> Kodu Oluştur’a tıklayın.

Generate-Code-for-Programming-STM32F103C8-using-STM32CubeMX[1]

Adım 11: – Şimdi proje ayarları iletişim kutusu belirir. Bu kutuda proje adınızı ve yerinizi seçin ve geliştirme ortamını seçin. Keil’i kullanıyoruz, bu yüzden IDE olarak MDK-ARMv5’i seçin.

Select-MDK-ARMv5-a-IDE-in-Keiluvision[1]

Adım 12: – Kod Oluşturucu sekmesi altında İleri’yi, yalnızca gerekli kitaplık dosyalarını kopyala’yı ve ardından Tamam’ı tıklatın.

Copy-necessary-Library-files-for-Programming-STM32F103C8[1]

Adım 13: – Şimdi kod oluşturma iletişim kutusu belirir. Keil uvsion’da oluşturulan kodu otomatik olarak açmak için Projeyi Aç’ı seçin.

Open-the-Generated-code-for-Programming-STM32F103C8_0[1]

Adım 14: – Şimdi Keil uVision aracı, STM32CubeMx’te oluşturduğumuz kod ile, seçilen proje için yapılandırılmış gerekli kütüphane ve kodlarla aynı proje adı ile açılır.

Generated-Code-in-Keiluvision-for-Programming-STM32F103C[1]

Adım 15: – Led yakma programımız için main.c dosyası açılır ve düzenlenir.

Edit-main-Code-for-Programming-STM32F103C8[1]

Adım 16: – Şimdi while (1) döngüsüne kodu ekleyin, kodu sürekli olarak çalıştırmak için o bölümün altını çizdiğim aşağıdaki resme bakın.

while (1)
{
  if(HAL_GPIO_ReadPin(BUTN_GPIO_Port,BUTN_Pin)==0) //=> DETECTS Button is Pressed
{          
    HAL_GPIO_WritePin(LEDOUT_GPIO_Port,LEDOUT_Pin,1); //To make output high when button pressesd
}

else
{
    HAL_GPIO_WritePin(LEDOUT_GPIO_Port,LEDOUT_Pin,0); //To make output Low when button de pressed
}
}

Edit-Code-for-GPIO-pin-of-STM32F103C8[1]

Adım 17: – Kodu düzenlemeyi bitirdikten sonra, hata ayıklama sekmesi altındaki ST-LINK Debugger’ı seçin.

Select-ST-Link-Debugger[1]

Ayrıca, Ayarlar düğmesini tıklayın ve ardından Flash İndirme sekmesinin altında Sıfırla ve Çalıştır onay kutusunu işaretleyin ve ‘ok’ seçeneğini tıklayın.

Set-up-for-Programming-STM32F103C8-using-KeiluVision[1]

Adım 18: – Şimdi tüm hedef dosyaları yeniden oluşturmak için Rebuild simgesine tıklayın.

Rebuild-all-target-files-for-Programming-STM32F103C8[1]

Adım 19: – Şimdi ST-LINK’ı devre bağlantılarını hazır olarak bilgisayara bağlayabilir ve Yükleme simgesine tıklayabilir veya STM32F103C8’i oluşturduğunuz ve düzenlediğiniz kodları yükleyebilirsiniz.

Flash-STM32F103C8[1]

Adım 20: – keil uVision penceresinin altındaki işlemleri görebilirsiniz.

Flashing-STM32F103C8-using-KeiluVision[1]

Testing-Keil-Programmed-STM32-Board[1]

Icon

STM32 Led

1 file(s) 7.76 KB
Please login to download

 

 

Read More
MeK 28 Kasım 2018 0 Comments
139
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
  • 1
  • 2
  • 3
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.