Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

4 Mayıs 2021 Salı

Servo Motor Nasıl Çalışır ve Arduino

 Servo Motor Nasıl Çalışır ve Arduino

Arduino projenize hareket eklemek ister misiniz? O zaman servo motorlar sizin için sağlam bir başlangıç ​​noktası olabilir.DC motorların aksine, bu motorların konumunu hassas bir şekilde kontrol edebilirsiniz. Onlara hangi yöne ne kadar hareket edeceklerini söyleyin, onlar sizin için yapacaklar.Bir RC modelinde ön tekerlekleri döndürmek veya robotik bir araca bakmak için bir sensörü döndürmek gibi birçok robotik projede kullanışlıdırlar.


Servo nedir?
Servo, kapalı döngü kontrol sistemi için genel bir terimdir .Kapalı döngü sistemi, istenen sonucu elde etmek için motorun hızını ve yönünü ayarlamak için geri bildirim sinyalini kullanır.
servo motor kapalı çevrim sistem blok şeması

RC servo motor aynı prensipte çalışır. Çıkış miline dişliler aracılığıyla bağlanan küçük bir DC motor içerir.

Çıkış mili bir servo kolu tahrik eder ve ayrıca bir potansiyometreye (pota) bağlıdır.

servo motor iç yapısı çizimi

Potansiyometre, motorun mevcut konumunun hedef konumla karşılaştırıldığı yerde servo kontrol ünitesine konum geri bildirimi sağlar.

Hataya göre, kontrol ünitesi, motorun gerçek konumunu, hedef konumla eşleşecek şekilde düzeltir.



Servo Motorlar Nasıl Çalışır?

Sinyal hattına bir dizi darbe göndererek servo motoru kontrol edebilirsiniz Geleneksel bir analog servo motor, kabaca her 20 milisaniyede bir darbe almayı bekler (yani sinyal 50Hz olmalıdır).

Darbenin uzunluğu servo motorun konumunu belirler.

servo motor çalışma zamanlama diyagramı
  • Darbe 1 ms için yüksekse, servo açısı sıfır olacaktır.
  • Darbe 1.5 ms için yüksekse, servo merkez konumunda olacaktır.
  • Darbe 2 ms için yüksekse, servo 180 derecede olacaktır.
  • 1 ms ile 2 ms arasında değişen darbeler, servo milini hareketinin 180 derecesinin tamamı boyunca hareket ettirecektir.

Darbelerin süresi bazen farklı markalara göre değişebilir ve 0 derece için 0,5 ms, 180 derece için 2,5 ms olabilir.

Servo Motor Pin Çıkışı

Servo motorlar tipik olarak üç bağlantıya sahiptir ve aşağıdaki gibidir:



GND hem motor hem de mantık için ortak bir zemindir.

5V Power servoya güç veren pozitif bir voltajdır.

Signal Kontrol kontrol sistemi için giriştir.

Tellerin rengi servo motorlara göre değişir, ancak kırmızı kablo her zaman 5V'dur ve GND siyah veya kahverengi olacaktır. Kontrol teli genellikle turuncu veya sarıdır.

Servo Motorun Arduino UNO'ya Kablolanması

Servo motoru Arduino ya bağlayalım.

Örneğin SG90 Micro Servo Motor kullanalım. 4.8-6VDC (5V Tipik) ile çalışır ve yaklaşık 180 derece (her yönde 90) dönebilir.

Boşta yaklaşık 10mA ve hareket halindeyken 100mA ila 250mA tüketir, böylece Arduino'daki 5 voltluk çıkışla onu çalıştırabiliriz.

250mA'dan fazla tüketen bir servonuz varsa, servonuz için ayrı bir güç kaynağı kullanmayı düşünün.

Kırmızı kabloyu Arduino'daki (veya DC jakındaki) 5V'ye ve Siyah / Kahverengi kabloyu toprağa bağlayın. Son olarak Turuncu / Sarı kabloyu PWM etkin pim 9'a bağlayın.

servo motorun arduino uno süpürme koduna bağlanması

Arduino Kodu - Tarama

İlk Arduino taslağımız için, Arduino IDE ile birlikte gelen yerleşik örneklerden birini kullanacağız.

Örnekler alt menüsüne gidin. Servo'yu seçin ve Süpürme çizimini yükleyin.

servo süpürme örneği

Devam edin ve çizimi yükleyin. Motorun bir yönde hareket ettiğini ve sonra başka bir yönde geri döndüğünü hemen göreceksiniz.

#include <Servo.h>

int servoPin = 9;
Servo servo;
int angle = 0; // servo position in degrees

void setup() {
servo.attach(servoPin);
}

void loop() {

// scan from 0 to 180 degrees
for(angle = 0; angle < 180; angle++) {
servo.write(angle);
delay(15);
}
// now scan back from 180 to 0 degrees
for(angle = 180; angle > 0; angle--) {
servo.write(angle);
delay(15);
}
}

Açıklama:

Servoları kontrol etmek kolay bir iş değil, ama neyse ki bizim için Arduino IDE zaten Servo adında çok güzel bir kitaplık içeriyor Servoya belirli bir açıya dönmesi için hızlı bir şekilde talimat verebilmeniz için basit komutlar içerir.

Bu komutları kullanacaksanız, Arduino IDE'ye bu komutla kütüphaneyi kullandığınızı söylemeniz gerekir:

#include <Servo.h>

Bundan sonra yapacağımız şey, servo motorun kontrol piminin bağlı olduğu Arduino pinini ilan etmektir.

int servoPin = 9;

Aşağıdaki çizgi bir servo nesnesi oluşturur.

Servo servo;

Aslında bu şekilde sekize kadar servo tanımlayabilirsiniz, örneğin iki servomuz olsaydı, o zaman şöyle bir şey yazabilirdik:

Servo servo1;
Servo servo2;

Değişken angle, servonun mevcut açısını derece cinsinden saklamak için kullanılır.

int angle = 0;

Kurulum işlevinde, servobu komutu kullanarak nesneyi servoyu kontrol edecek pime bağlarız:

servo.attach(servoPin);

Döngü işlevi aslında iki for döngüsü içerir. İlk döngü, açıyı bir yönde ve ikincisi ters yönde artırır.

Aşağıdaki komut, servoya konumunu belirtilen açıya göre güncellemesini söyler.

servo.write(angle);

Sorun giderme

Doğrudan Arduino'dan çalıştırmaya karar verirseniz bazen servonuz hatalı davranabilir. Bunun nedeni servonun özellikle başlatma sırasında hatırı sayılır bir güç çekmesidir ve bu Arduino kartının sıfırlanmasına neden olabilir.

Bu olursa, genellikle bunu GND ve 5V arasına oldukça büyük bir elektrolitik kapasitör (470uF - 1000uF) yerleştirerek düzeltebilirsiniz.

Kondansatör, bir elektrik deposu görevi görür, böylece motor başladığında, kondansatörün yanı sıra Arduino beslemesinden de şarj alır.

Kapasitörün daha uzun ucu 5V'a ve negatif ucu GND'ye bağlanmalıdır.

servo motorun kondansatör ile arduino uno'ya bağlanması

Servo'nun Potansiyometre ile Kontrol Edilmesi

Bir sonraki adımımız, topuzu çevirerek servonun konumunu kontrol edebilmemiz için bir potansiyometre eklemektir.

Servoya bağlı bir sensörün pan ve eğimini kontrol etmek istediğinizde bu proje çok faydalı olabilir.

Kablolama

Bağlantı şemasının gösterdiği gibi bir potansiyometreye ihtiyacınız olacak, 10k'dan itibaren herhangi bir değer uygun olacaktır. Potun bir ucunu toprağa, diğer ucunu Arduino 5V'ye ve sileceği A0 analog girişine bağlayın.

potansiyometre kontrolü için servo motorun arduino uno'ya bağlanması

Arduino Kodu

Servoyu, topuzun konumunu takip ettirecek kod, onu süpürmekten daha basittir.

#include <Servo.h>

int potPin = 0;
int servoPin = 9;
Servo servo;

void setup() {
servo.attach(servoPin);
}

void loop() {
int reading = analogRead(potPin);
int angle = map(reading, 0, 1023, 0, 180);
servo.write(angle);
}

Şimdi adında yeni bir değişken olduğuna dikkat edin potPin.

Döngü fonksiyonunda, A0 analog pininden değeri okuyarak başlarız.

int reading = analogRead(potPin);

Bu bize 0 ile 1023 arasında bir değer verir. Fakat onu küçültmemiz gerekir çünkü servo yalnızca 180 derece dönebilir.

Bunu yapmanın bir yolu, bir sayıyı bir aralıktan diğerine yeniden eşleyen Arduino map () İşlevini kullanmaktır Bu nedenle, alt çizgi, 0 ile 180 derece arasındaki açıyı temsil edecek şekilde okumayı değiştirir.

int angle = map(reading, 0, 1023, 0, 180);

Son olarak, write()servoya pozisyonunu potansiyometre tarafından seçilen açıya göre güncellemesini söyleyen komutu kullanıyoruz .

servo.write(angle);

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

3 Mayıs 2021 Pazartesi

Arduino ile Micro SD Kart Modülü

 

Arduino ile Micro SD Kart Modülü


Arduino projeniz için büyük miktarda günlük verisi ve diğer bilgileri depolamanın bir yolunu bulmanız gereken bir fikirle karşılaşırsınız, örneğin bir GPS kaydedici.


Çözüm, her dijital kamera ve mp3 oynatıcıda bulunanları kullanmaktır: Flash Kartlar ! genellikle SD veya mikro SD kartlar olarak adlandırılır. GigaByte'lık verileri bir madeni paradan daha küçük bir alana sığdırma yetenekleri, onları hayatımızın vazgeçilmez bir parçası haline getirdi.









Donanıma Genel Bakış

Mikro SD kart modülü, bir sonraki Arduino projenize veri kaydı eklemeyi şüphesiz kolaylaştıran iki ana bileşen içerir:
Micro SD TF Kart Modülü modülü, seviye değiştirici ve regülatör içerir
  • Herhangi bir standart mikro SD Kartın çalışma voltajı 3,3 V'tur. Bu nedenle, 5V mantık kullanan devrelere doğrudan bağlayamayız. Aslında, 3,6V'u aşan voltajlar mikro SD karta kalıcı olarak zarar verecektir. Bu yüzden; modül, voltajları 3,3V - 6V'den ~ 3,3V'a çeviren yerleşik bir ultra düşük bırakma regülatörüne sahiptir.
  • Modülde ayrıca arabirim mantığını 3.3V- 5V'den 3.3V'ye dönüştüren bir 74LVC125A yongası vardır Buna mantık seviyesi kaydırma denir. Bu, bu kartı Arduino gibi hem 3.3V hem de 5V mikrodenetleyicilerle etkileşim kurmak için kullanabileceğiniz anlamına gelir.

Aslında mikro SD kartlarla arayüz oluşturmanın iki yolu vardır - SPI modu ve SDIO modu. SDIO modu çok daha hızlıdır ve cep telefonlarında, dijital kameralarda vb. Kullanılır. Ancak daha karmaşıktır ve ifşa edilmeyen belgelerin imzalanmasını gerektirir. Bu nedenle, bizim gibi hobiler büyük olasılıkla SDIO modu arayüz koduyla asla karşılaşmayacaklar. Bunun yerine, her SD kart modülü, herhangi bir mikro denetleyicinin kullanması kolay olan 'düşük hız ve daha az ek yük' SPI moduna dayanmaktadır.

Mikro SD Kart Modülü Pin Çıkışı

Mikro SD kart modülünün bağlanması oldukça basittir. Altı pimi vardır:

Micro SD TF Kart Modülü Pinout SPI

VCC pin modül için güç sağlar ve Arduino'daki 5V pinine bağlanmalıdır.

GND Arduino'nun zeminine bağlanmalıdır.

MISO (Köle Çıkışında Master) Micro SD Kart Modülünden SPI çıkışıdır.

MOSI (Ana Çıkış Köle Girişi) Micro SD Kart Modülüne SPI girişidir.

SCK (Seri Saat) pin, Arduino tarafından üretilen veri iletimini senkronize eden saat darbelerini kabul eder.

SS (Bağımlı Seçimi) pin, Arduino (Master) tarafından SPI veriyolundaki belirli cihazları etkinleştirmek ve devre dışı bırakmak için kullanılır.

Mikro SD kartın hazırlanması

Mikro SD kartı modüle takmadan ve Arduino'ya bağlamadan önce kartı uygun şekilde formatlamalısınız. Arduino kitaplığı için tartışacağız ve neredeyse diğer tüm SD kitaplıkları, kart FAT16 veya FAT32 olarak biçimlendirilmelidir.

Yeni bir SD kartınız varsa, muhtemelen bir FAT dosya sistemi ile önceden biçimlendirilmiştir. Bununla birlikte, fabrikanın kartı nasıl biçimlendirdiği veya eski bir kartsa yeniden biçimlendirilmesi gerektiği konusunda sorun yaşayabilirsiniz. Her iki durumda da, yeni olsa bile kullanmadan önce kartı biçimlendirmek her zaman iyi bir fikirdir!

Resmi SD kart formatlayıcı yardımcı programını kullanmanızı şiddetle tavsiye ederiz SD derneği tarafından yazılan bu program , kötü biçimlendirmeyle gelen birçok sorunu çözer! Biçimlendiriciyi indirin ve bilgisayarınızda çalıştırın, sadece doğru sürücüyü seçin ve BİÇİMLENDİR'e tıklayın.

SD Formatter Ekran Görüntüsü

Kablolama - Micro SD Kart Modülünü Arduino ya Bağlama

Artık kartınız kullanıma hazır olduğuna göre, mikro SD ara kartını bağlayabiliriz!

Başlamak için mikro SD kart modülünü devre tahtasına yerleştirin. Modül üzerindeki VCC pinini Arduino'daki 5V'a ve GND pinini toprağa bağlayın. Artık SPI iletişimi için kullanılan pinlerde kaldık.

Mikro SD kartlar çok fazla veri aktarımı gerektirdiğinden, bir mikro denetleyicideki donanım SPI pinlerine bağlandığında en iyi performansı vereceklerdir. Donanım SPI pinleri, başka bir pin seti kullanarak arayüz kodunu 'bit-vurmaktan' çok daha hızlıdır.

Her Arduino Board'un uygun şekilde bağlanması gereken farklı SPI pinlerine sahip olduğunu unutmayın. UNO / Nano gibi Arduino kartları için bu pinler dijital 13 (SCK), 12 (MISO) ve 11 (MOSI) 'dir. Ayrıca 'çip / bağımlı seçim' (SS) hattı için dördüncü bir pime ihtiyacınız olacak. Genellikle bu pin 10'dur, ancak aslında istediğiniz herhangi bir pimi kullanabilirsiniz.

Bir Mega'nız varsa, iğneler farklıdır! Dijital 50 (MISO), 51 (MOSI), 52 (SCK) ve 53 (SS) kullanmak isteyeceksiniz. Hızlı anlamak için aşağıdaki tabloya bakın.

MOSIMİSOSCKCS
Arduino Uno11121310
Arduino Nano11121310
Arduino Mega51505253

Yukarıda belirtilenden farklı bir Arduino kartı kullanıyorsanız, devam etmeden önce Arduino resmi belgelerini kontrol etmeniz önerilir .

Micro SD TF Kart Modülü ile Arduino Kablolama Fritzing Bağlantıları
Micro SD Kart Modülünü Arduino UNO'ya Kablolama

Arduino Kodu - CardInfo ile SD kart modülünü test etme

Bir SD kart ile iletişim kurmak bir sürü iştir, ancak neyse ki bizim için Arduino IDE , SD kartlardan okumayı ve SD kartlara yazmayı kolaylaştıran SD adlı çok güzel bir kitaplık içeriyor Örnekler alt menüsünde görebilirsiniz.

Ardından, CardInfo örnek taslağını seçin.

Arduino IDE'de SD Kütüphane CardInfo Sketch

Bu taslak karta herhangi bir veri yazmayacaktır. Sadece size kartı tanıyıp tanımadığını söyler ve kartla ilgili bazı bilgiler görüntüler. Bu, bir SD kartın desteklenip desteklenmediğini anlamaya çalışırken çok yararlı olabilir. Herhangi bir yeni kartı denemeden önce, bu çizimi bir kez çalıştırmanızı tavsiye ederiz!

Taslağın başına gidin ve chipSelect çizgisinin doğru şekilde başlatıldığından emin olun, bizim durumumuzda dijital pin # 10 kullanıyoruz, bu yüzden onu 10 olarak değiştirin!

Arduino IDE'de ChipSelect CardInfo Sketch'in başlatılması

Tamam, şimdi SD kartı modüle takın ve çizimi yükleyin.

Seri Monitörü açar açmaz, muhtemelen aşağıdaki gibi bir şey alacaksınız:

Arduino IDE'de CardInfo Sketch Çıkışı - Çalışıyor

Anlamsız gelebilir, ancak kart türünün SDHC (SD Yüksek Kapasite), Hacim türü FAT32 ve kartın boyutunun yaklaşık 4 GB vb. Olduğunu görmek yararlıdır.

Bozuk bir kartınız varsa, bu daha çok klon sürümlerinde ortaya çıkıyorsa, şunu görebilirsiniz:

Arduino IDE'de CardInfo Sketch Çıkışı - Bozuk Bozuk Kart

Kart çoğunlukla yanıt verdi, ancak veriler tamamen kötü. Üretici Kimliği / OEM Kimliği olmadığını ve Ürün Kimliğinin 'Yok' olduğunu görün. Bu, kartın bazı SD hataları döndürdüğünü gösterir. Temelde kötü bir sahne. Böyle bir şey alırsanız, onu yeniden biçimlendirmeyi deneyebilirsiniz ya da hala dağıldıysa, kartı fırlatmalısınız.

Son olarak, SD kartı çıkarmayı ve çizimi tekrar çalıştırmayı deneyin, aşağıdakileri alacaksınız,

Arduino IDE'de CardInfo Sketch Çıkışı - Başlatma Başarısız

Gördün mü, SD kartı bile başlatamadı. Bu, bir kablolama hatası varsa veya kart kalıcı olarak hasar görmüşse de olabilir.

Kablolama doğruysa ancak SD kart uygun şekilde biçimlendirilmemişse, şuna benzer bir şey elde edersiniz:

Arduino IDE'de CardInfo Sketch Çıkışı - Uygun Format Yok

Arduino Kodu - Veri Okuma ve Yazma

SD kartı başarıyla başlattığınızı düşünürsek, bir sonraki deneyimize geçeceğiz. Aşağıdaki taslak, bir dosyadan veri yazma ve okumanın temel bir gösterimini yapacaktır. Ayrıntılı incelemeye başlamadan önce taslağı deneyin.

#include <SPI.h>
#include <SD.h>

File myFile;

// change this to match your SD shield or module;
const int chipSelect = 10;

void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.print("Initializing SD card...");

  if (!SD.begin()) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  myFile = SD.open("test.txt", FILE_WRITE);

  // if the file opened okay, write to it:
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // close the file:
    myFile.close();
    Serial.println("done.");
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }

  // re-open the file for reading:
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop()
{
  // nothing happens after setup
}

Bir kod yüklenir, her şey yolunda giderse, seri monitörde aşağıdakiler görünecektir.

Seri Monitörde Mikro SD Kart SD kitaplık Çıkışı

Arduino'nuzu sıfırlarsanız ve eskizin tekrar çalışmasına izin verirseniz; yazılan yeni veriler, önceki verilerin üzerine yazılmadan dosyaya eklenir.

Mikro SD Kart SD kitaplığı Seri Monitörde İkinci Çıkış
Kod Açıklaması:

Taslak, yerleşik SD kitaplığını ve SPI arabirimi üzerinden SD kart ile kolayca iletişim kurmamızı sağlayan SPI kitaplığını dahil ederek başlar .

#include <SPI.h>
#include <SD.h>

Kitaplıklar dahil edildikten sonra, yapacağımız bir sonraki şey chipSelect (CS), SD kart modülünün pininin bağlı olduğu Arduino pinini ilan etmektir CS pini, Arduino dijital pini gibi gerçekten sabit olmayan tek pimdir. Donanım SPI arayüzünü kullandığımız ve bu pinler zaten SPI kütüphanesinde bildirildiği için diğer SPI pinlerini bildirmemize gerek yok. Pimi tanımladıktan sonra, daha sonra SD kartta veri depolamak için kullanılacak bir myFile nesnesi oluşturuyoruz .

const int chipSelect = 10;
File myFile;

Ardından, setup()bölümde: Sonuçları seri monitörde göstermek için seri iletişimi başlatıyoruz. Şimdi, SD.begin()işlevi kullanarak SD kartı başlatacağız ve başlatma başarılı olursa " if " ifadesi gerçek olur ve String " başlatma yapılır. "" Seri monitörde yazdırılır, aksi takdirde " başlatma başarısız oldu! ”Yazdırılır ve program sona erer.

Serial.begin(9600);
  Serial.print("Initializing SD card...");
  if (!SD.begin()) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

Ardından, SD.open()işlev " test.txt " adlı dosyayı açacaktır Bizim durumumuzda böyle bir dosya olmadığı için oluşturulacaktır. Diğer parametre FILE_WRITE , dosyayı okuma-yazma modunda açar.

myFile = SD.open("test.txt", FILE_WRITE);

Dosya açıldığında, seri monitörde " Test.txt'ye yazılıyor ... " mesajını yazdıracağız ve ardından myFile.println()işlevi kullanarak "test 1, 2, 3" metnini yazacağız. dosyaya. Bundan sonra close(), dosyaya yazılan verilerin kaydedilmesini sağlamak için fonksiyonu kullanmamız gerekir .

  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    myFile.close();
    Serial.println("done.");
  } else {
    Serial.println("error opening test.txt");
  }

Şimdi yazma işleminin başarılı olup olmadığını kontrol etmek için aynı dosyayı okuyalım.Bunu yapmak için aynı işlevi kullanacağız SD.open(), ancak bu sefer " test.txt " dosyası zaten oluşturulmuş olduğundan, işlev sadece dosyayı açacaktır. . Ardından myFile.read()işlevi kullanarak dosyadan okuyacağız ve seri monitörde yazdıracağız. read()Fonksiyon aslında bu nedenle biz “ise” döngü ve işlevi kullanmak gerekir, bir seferde sadece bir karakter okur myFile.available()dosyada tüm karakterleri okumak için. Sonunda dosyayı kapatmamız gerekiyor.

myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    myFile.close();
  } else {
    Serial.println("error opening test.txt");
  }

Bu sadece dosyaların nasıl okunacağını ve yazılacağını gösteren bir demo taslağı olduğundan, kodu birden çok kez çalıştırmanın bir anlamı yoktur, bu nedenle kodun tamamı, üzerinde çalışan setup()bir loop()işleve koymak yerine yalnızca bir kez çalışan işleve yerleştirilir. ve tekrar.

void loop() 
{
}

Dikkat edilmesi gereken bazı şeyler

  • Dizeler, değişkenler vb. Yazmak için print() ve println() tıpkı Seri nesneler gibi işlevler kullanabilirsiniz.
  • Read()bir seferde yalnızca bir karakter döndürür. Tam bir satır veya bir sayı okumuyor!
  • Sen gerekir close() bu veriler kalıcı yazılır emin tüm yapmak için dosya (lar) bitince! Bu, kullanılan RAM miktarını azaltır.
  • Dosyaları bir dizinde açabilirsiniz. Örneğin, dizindeki bir dosyayı açmak istiyorsanız arayabilirsiniz SD.open("/myfiles/example.txt")Dosya yolunun göreceli olduğuna dikkat edin.
  • SD kart kitaplığı 'uzun dosya adlarını' desteklemiyor. Bunun yerine, dosya adları için 3 formatını kullanır , bu nedenle dosya adlarını kısa tutun! Örneğin, datalog.txt iyidir, ancak “Algılayıcım günlük dosyası.text” iyi değildir!
  • Ayrıca, dosya adlarının 'büyük / küçük harf' duyarlılığına sahip olmadığını unutmayın, bu nedenle datalog.txt, DataLog ile aynı dosyadır.Txt, DATALOG.TXT ile aynı dosyadır.

SD Kitaplığındaki diğer kullanışlı işlevler

SD nesnesiyle kullanılan işlevler

SD nesnesiyle kullanabileceğiniz birkaç yararlı işlev vardır Bunlardan birkaçı aşağıda listelenmiştir:

  • Sadece bir dosyanın var olup olmadığını kontrol etmek istiyorsanız, exists("filename.txt") true veya false döndürecek olanı kullanın .
  • remove("unwanted.txt") Dikkatli olun diyerek bir dosyayı silebilirsiniz Bu onu gerçekten silecek ve onu çıkaracak bir 'Geri Dönüşüm Kutusu' yok.
  • mkdir("/mynewdir") Dosyaları bir konumda doldurmak istediğinizde kullanışlı arayarak bir alt dizin oluşturabilirsiniz Zaten varsa hiçbir şey olmaz, ancak her zaman SD.exists() önce yukarıyı arayabilirsiniz .

File nesnesiyle kullanılan işlevler

Ayrıca, Dosya nesneleriyle kullanabileceğiniz birkaç işlev vardır :

  • seek()Bir dosya üzerinde yapabilirsiniz Bu, okuma / yazma imlecini yeni bir konuma hareket ettirecektir. Örneğin seek(0) , sizi dosyanın başlangıcına götürecek, bu çok kullanışlı olabilir!
  • Aynı şekilde position(), dosyanın neresinde olduğunuzu söyleyecek olanı arayabilirsiniz .
  • Bir dosyanın boyutunu öğrenmek istiyorsanız size() , dosyadaki bayt sayısını öğrenmek için arayın .
  • Dizinler / klasörler özel dosyalardır, bir dosyanın dizin olup olmadığını arayarak belirleyebilirsiniz. isDirectory()
  • Bir dizine sahip olduğunuzda, dizindeki tüm dosyaları arayarak başlayabilirsiniz. openNextFile()
  • openNextFile()Bir dizini aradıysanız, bir dosyanın adını bilmeniz gerekebilir Bu durumda, name()isterseniz doğrudan yapabileceğiniz 8.3-formatlı karakter dizisine bir işaretçi döndürecek çağrı Serial.print() .

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.