SINAU PROGRAMMING
SINAU PROGRAMMING
  • Home
  • Source Code
  • Social
  • CONTROL
    • Internet of Think (IoT)
    • ESP
      • NodeMcu
      • Lora
      • WeMos
      • Esp 32 Dev
      • Node 32s
    • Arduino
    • Raspberry
    • Proteus
  • MATLAB
    • MATLAB PROJECT
    • PLC
      • Omron
      • Mitsubishi
      • Siemens
      • Schneider
      • ArduinoPLC
    • Arduino
    • Basic & Doc
  • Contact Us

 Description

Ini hampir merupakan salinan persis dari TP4056. Satu-satunya perbedaan adalah board ini memiliki IC perlindungan yang lebih baik. Pada dasarnya ia memiliki sistem perlindungan yang lebih baik.



Modul TP4056 dibuat untuk mengisi daya baterai lithium yang dapat diisi ulang menggunakan metode pengisian arus konstan/tegangan konstan (CC/CV). Selain mengisi daya baterai litium dengan aman, modul ini juga memberikan perlindungan yang diperlukan oleh baterai litium. Lihat di bawah mengenai fitur perlindungan yang disediakan modul ini.


Fitur Perlindungan

Modul ini menggunakan IC pengontrol muatan Li-Ion TP4056 dan IC perlindungan terpisah. Ada jenis modul lain di pasaran yang menggunakan TP4056 tetapi tidak memiliki sirkuit perlindungan atau IC untuk memberikan perlindungan yang diperlukan dengan baterai litium. Modul ini menggunakan IC perlindungan baterai Li-Ion TP4056 dan DW01A, yang bersama-sama memberikan fitur perlindungan berikut:


  • Kelola pengisian arus konstan ke tegangan konstan dari baterai litium yang terhubung;


  • Perlindungan pengosongan berlebih - menjaga agar baterai Anda tidak habis di bawah 2,4V, tingkat tegangan minimum yang sehat untuk baterai Anda Jika daya baterai yang terhubung telah habis di bawah 2.4V, modul akan memutus daya keluaran dari baterai hingga tegangan baterai terisi kembali. di atas 3.0V (tegangan pelepasan pelepasan berlebih), yang pada saat itu modul akan kembali memungkinkan pelepasan daya dari baterai ke beban yang terhubung. Meskipun modul memutus daya keluaran dari baterai selama situasi pengosongan berlebih, modul ini tetap memungkinkan pengisian daya baterai terjadi melalui dioda parasit dari MOSFET kontrol pelepasan (FS8205A Dual MOSFET).

  • Perlindungan overcharge - modul akan mengisi daya baterai Anda dengan aman hingga 4.2V

  • Perlindungan arus lebih dan arus pendek - modul akan memotong output dari baterai jika laju pengosongan melebihi 3A atau jika kondisi arus pendek terjadi

  • Perlindungan soft-start membatasi arus masuk


Trickle charge (rekondisi baterai) - jika level tegangan baterai yang terhubung kurang dari 2,9V, modul akan menggunakan arus trickle charge sebesar 130mA hingga tegangan baterai mencapai 2.9V, pada saat itu arus pengisian akan meningkat secara linier ke arus pengisian yang dikonfigurasi.Termasuk dua LED indikator. LED merah menunjukkan pengisian daya. LED hijau menunjukkan pengisian daya selesai.Tegangan masukan tidak boleh melebihi 5V.

CATATAN: Karena sifat dan karakteristik baterai litium-ion, saya tidak bertanggung jawab atau berkewajiban atas segala kerusakan, malfungsi, cedera, kebakaran, luka bakar, atau akibat atau akibat lain apa pun yang mungkin terjadi akibat penggunaan modul ini yang salah atau benar atau baterai, perangkat, atau item apa pun yang digunakan dengan modul ini, termasuk mengikuti atau menggunakan instruksi, panduan, atau arahan apa pun dari Addicore atau pihak lain. Dengan membeli produk ini Anda menerima produk sebelumnya.


file selengkapnya dapat diunduh disini 

Apa itu Centrifuge ?

Centrifuge adalah alat yang menggunakan motor gerak atau mesin untuk memutar sampel pada kecepatan tinggi  pada kurun waktu tertentu. fungsi dari Centrifuge adalah untuk melakukan pemisahan pada suatu larutan atau komponen zat dengan proses pengendapan sehingga terbagi menjadi dua fase yaitu supernatan dan pellet. Sampel yang ingin diendapkan dimasukkan ke dalam consumable yang disebut dengan tube dan diletakkan secara sejajar di dalam alat centrifuge. 




Sejarah Centrifuge

Kata Centrifuge diambil dari kata sentrifugasi atau sentrifugal, yaitu suatu gaya yang terjadi ketika suatu objek berputar. English militer insinyur Benjamin Robins (1707-1751) menciptakan aparatur lengan berputar untuk menentukan tarik . Pada tahun 1864,  Antonin Prandtl menemukan centrifuge susu pertama untuk memisahkan krim dari susu. Dalam pemisah sentrifugal kontinyu yang pertama kali, membuat aplikasi komersial layak.

Prinsip Centrifuge

Peralatan Centrifuge terdiri dari sebuah rotor atau tempat untuk meletakan larutan yang akan dipisahkan. Rotor ini nantinya akan berputar dengan cepat yang akan mengakibatkan larutan akan terpisah menjadi dua fase. Semakin cepat perputaran yang dilakukan, semakin banyak pula organel sel yang dapat diendapkan begitu juga sebaliknya. Jadi Prinsip kerja alat centrifuge adalah dengan memanfaatkan gaya sentrifugal. Gaya sentrifugal juga dipengaruhi oleh gaya gravitasi. Makin cepat putarannya maka semakin tinggi pula gaya yang dihasilkan.

Fungsi Centrifuge

Adapun fungsi utama dari alat centrifuge yaitu :

  1. Memisahkan pelet dengan substansi dari sampel cair, seperti cairan immiscible
  2. Memisahkan partikel atau sel darah dari while blood untuk memperoleh plasma atau serum.
  3. Memisahkan endapan protein dalam pemeriksaan kimia.
  4. Untuk mendapatkan elemen seluler berkonsentrasi tinggi dan komponen lainnya dari cairan biologi untuk pemeriksaan mikroskopik atau pemeriksaan kimia.
  5. Memisahkan komponen lipid dan komponen lainnya dari plasma/serum, dan memisahkan lipoprotein dari yang lainnya

Jenis-Jenis Centrifuge

1. General purpose centrifuge

Model ini biasaya dalam bentuk tabletop (bisa diletakkan di atas meja) yang dirancang untuk memisahkan sample urine, serum, atau cairan lain dari bahan padat yang tidak larut. Centrifuge ini biasanya berkecepatan 0-3000 rpm, dan bisa menampung sampel dari 5-100 ml.

2. Micro centrifuge

Disebut juga microfuges, memutar microtubes khusus pada kecepatan tinggi. Volume mctubes berkisar 0,5-2,0 ml.

3. Speciality centrifuge

Merupakan centrifuge yang dipakai untuk keperluan yang lebih spesifik. Seperti microhematocrit centrifuges dan blood bank centrifuges, yang dirancang untuk pemakaian spesifik di laboratorium klinik.

Blok Diagram Centrifuge


Tegangan Jala-jala PLN merupakan tegangan sumber yang nantinya disearahkan untuk mensupply seluruh rangkaian. Dalam SOP penggunaan awal mula lakukan setting kecepatan dan waktu. Setelah disetting, data pengaturan kecepatan dan waktu akan diproses oleh kontrol circuit  supaya motor dapat berputar sesuai dengan yang diinginkan. Safety circuit berfungsi sebagai pengaman pada pesawat centrifuge. Dalam safety circuit ini terdapat rangkaian switching yang menghubungkan control circuit dengan motor yang terletak pada tutup centrifuge.

Pintu centrifuge tidak akan terbuka jika motor masih berputar. Motor akan berputar saat pintu centrifuge ditutup. Selanjutnya motor akan berputar sesuai dengan kecepatan yang telah disetting selama waktu yang telah ditentukan. Perputaran motor ini akan menggerakkan tempat sampel sehingga timbul gaya centrifugal yang akan memisahkan partikel pada sampel sesuai berat molekulnya. Setelah timer habis, maka motor akan melambat dan berhenti berputar.

Cara Pemeliharaan Alat Centrifuge

  1. Memeriksa kelengkapan dan aksesoris pada centrifuge
  2. Lakukan pengecekan dan pembersihan pada seluruh bagian alat
  3. Lakukan pemeriksaan kinerja dan aspek keselamatan kerja
  4. Memberikan pelumasan pada bagian – bagian yang bergerak
  5. Melakukan pengencangan pada baut centrifuge
  6. Lakukan pengecekan fungsi dan kondisi bagian alat
  7. Melakukan kalibrasi dan pengujian kecepatan pada centrifuge
  8. apabila motor tidak berputar, maka dilakukan penggantian sikat arang 
  9. Lakukan penyetelan/adjustmen
  10. Bersihkan dari pecahan tabung, tumpahan darah, serum dan lakukan desinfeksi setiap saat
  11. Bersihkan bagian luar dan dalam setiap hari.
  12. Timer:  Lakukan pemantauan timer sesuai  penggunaan atau lakukan pemantauan setiap satu minggu sekali
  13. Kalibrasi : Mengukur kecepatan putaran dengan menggunakan tachometer terkalibrasi dan  lakukan 1 bulan sekali
  14. Braking system : Selalu mengikuti anjuran pabrik, Pengambilan tabung centrifuge   dilakukan setelah posisi putaran benar-benar berhenti.
  15. Power suply: Pengecekan kabel, steker dan stop kontak (pengecekan grounding dan kebocoran arus listrik dari kabel), steker dan stop kontak.
  16. Lakukan pengecekan terhadap motor dan minyak bila perlu.
  17. Terjadinya getaran yang tidak biasa perlu melakukan pengecekan rotor balance dan menyesuaikan rekomendasi pabrik.
  18. Pemeriksaan terhadap komponen lainnya, apabila ditemukan kerusakan atau cacat produk, maka komponen dapat diganti oleh pabrik (bila masih garansi).

Parameter Kalibrasi Centrifuge

1. Kalibrasi RPM (Rotary Per Minute)

Tachometer Mekanik adalah kabel yang lentur.

Cara kerja:

  1. Ujung kabel yang satu dikaitkan pada kemparan motor di dalam,sedangkan ujung yang lain dihubungkan denagn alat meter.
  2. Set centrifuge pada RPM yang paling sering dipakai,kemudian jalankan.
  3. Catat  RPM yang ditunjukkan oleh meter pada tachometer.

Tachometer elektrikal

Cara kerja:

  1. Letakkan bagian magnit di sekeliling coil,sehingga menimbullkan aliran listrik bila alat dijalankan.
  2. Set centrifuge pada RPM yang paling sering dipakai,kemudian jalankan.
  3. Aliran listrik yang timbul akan menggerakkan bagian meter
  4. Strobe light

Alat ini digunakan bila tachometer tidak dapat menjangkau motor.pemeriksaan dilakukan beberapa kali dan hitung rata-ratanya. Kecepatan putar/rpm masih dapat diterima bila nilai rata-rata yang diperoleh adalah ±5 % rpm yang seharusnya.

Kalibrasi Timer Centrifuge

Kalibrasi timer dapat dilakukan dengan menggunakan stopwatch.

Cara kerja:

  1. Set centrifuge pada waktu yang sering dipakai.
  2. Jalankan alat dan bersamaan dengan itu jalankan stopwatch.
  3. Pada waktu centrifuge berhenti,matikan centrifuge.
  4. Catat waktu yang ditunjukkan oleh stopwatch.

Timer masih dapat diterima bila niali rata-ratanya adalah ±10 % waktu yang sering dipakai.


 Sistem PID sudah dibahas pada laman 

Sistem PID Proportional-Integral-Derivative



Sebagai Ilustrasi 

suhu sangat penting untuk membuat secangkir kopi yang sempurna. Suhu pembuatan bir harus antara 89 dan 95 °C. Menyeduh kopi espresso pada suhu yang lebih tinggi menghasilkan kopi yang lebih pahit, sedangkan suhu yang lebih rendah memberikan rasa yang lebih asam. Namun, suhu penyeduhan optimal dapat bervariasi untuk proses pemanggangan dan campuran yang berbeda.

alat atau Mesin kopi espresso dalam rangkaian Perfetta kami memiliki kemampuan untuk mengubah suhu minuman (di atas atau di bawah pengaturan default), sehingga dapat bermanfaat untuk kopi sempurna Anda.  

Ada juga perbedaan antara kontrol PID biasa dan PID Adaptif. PID reguler menggunakan parameter yang sama untuk semua fungsi mesin espresso dan dengan demikian merupakan kompromi antara fungsi-fungsi yang berbeda. PID adaptif menyediakan berbagai kontrol suhu untuk fungsi uap, fungsi air panas, dan proses pembuatan bir. 

Kontrol suhu ganda ini memastikan suhu diatur saat Anda membuat buih susu, membuat teh, dan saat espresso sempurna Anda sedang disiapkan. PID adaptif memastikan stabilitas suhu di semua tingkat.


 

 Library Proteus 8 full download 




Merupakan cara yang praktis jika kita dapat melakukan simulasi program atau rangkaian arduino kita di proteus,  sehingga kita tidak perlu bersusah payah membeli komponennya terlebih dahulu. Download library berbagai macam sensor dan juga arduino untuk proteus 8, sehingga kalian dapat dengan mudah menggunakanya.

  • Download library arduino untuk proteus pada link berikut ini.

  • ​Extract Zip Folder dan Paste kedua file yaitu ARDUINO.LIB and ARDUINO.IDX  ke Library folder, seperti pada gambar berikut ini.


silahkan extract dan pindahkan semua file kedalam folder “../Labcenter Electronics/Proteus 8 Profesional/DATA/Library”

  • Jika Anda menggunakan Proteus 8 maka folder Library akan berada dalam folder data (Proteus 8 Professional \ Data \ LIBRARY) ATAU ProgramData (C: \ ProgramData \ Labcenter Electronics \ Proteus 8 Professional \ LIBRARY)

Daftar Library yang Tersedia untuk Proteus 8

  1. Sensor PIR
  2. Sensor Flek
  3. Sensor IR Flame
  4. Sensor Ultrasonik
  5. Sensor MQ2, MQ3, MQ4, MQ5, MQ6, MQ7, MQ8, MQ9
  6. Bluetooth HC-05 / HC-06
  7. LCD
  8. GPS
  9. Xbee
  10. Sensor Getar

 

Apa itu PID ?

PID adalah singkatan dari Proportional-Integral-Derivative. Jadi ada 3 parameter / konstanta yang bisa kita gunakan dalam kontrol PID, yaitu konstanta kP, kI, dan kD.

Setiap parameter memiliki peran penting dalam sebuah sinyal respon atau output, adapun bagian penting pada sebuah sinyal respon adalah :
Rise Time
Overshoot
Setling Time
Steady State Error

Rise Time

Rise time merupakan waktu pertama kali sinyal sampai pada titik set-point

Overshoot

Overshoot merupakan sinyal yang melebihi batas dari set-point pada saat pertama menuju set point

Setling Time

Setling Time merupakan waktu pada saat sinyal turun pertama kali dari steady state sampai naik lagi , sehingga menyebabkan sinyal berisolasi

Steady State Error

Steady State Error merupakan kondisi sinyal yang tidak sampai pada set-point (steady state)

Respon Sistem

Ketika sebuah sistem diberikan input, maka sistem tersebut akan memberikan respon berupa output yang nilainya dapat berubah terhadap waktu. Hal tersebut disebut dengan time response dari sebuah sistem. Respon dari sistem dapat dibagi menjadi dua bagian :

·         Respon transien

·         Respon steady state



Sebagai contoh, misalkan suatu sistem yang memberikan respon seperti pada plot diatas. Respon total yang diberikan oleh sistem terdiri dari respon transien dan respon steady yang dapat ditanyatakan secara matematis sebagai berikut:


Ketika suatu input diberikan kepada sistem, output sistem akan berada di kondisi transien dimana sistem akan memberikan respon transien yang berubah terhadap waktu sampai menjadi kondisi steady. Setelah beberapa waktu, respon transien akan menghilang dari respon total sehingga sistem hanya akan memberikan respon steady. Pembagian respon sistem menjadi respon transien dan steady state penting dalam menganalisis karakteristik dari respon sistem. Sebagai contoh, salah satu karakteristik respon sistem yaitu Setting Time (Ts) akan menyatakan seberapa cepat sistem mencapai keadaan steady state. Pada umumnya, kita ingin agar sistem memiliki Settling Time yang secepat mungkin supaya output sistem cepat mencapai nilai steady state yang kita inginkan.




Berdasarkan jenis sinyal input testnya, respon sistem dari dibagi menjadi beberapa jenis respon diantaranya respon impuls, respon step, respon ramp, dan respon parabola. Pada artikel ini, akan dibahas secara singkat mengenai sistem orde 1 dan sistem orde 2 beserta parameter-parameter yang mendefinisikan parameter-parameter yang menentukan performa dari respon step dari sistem.

Sistem Orde 1

Secara umum, fungsi transfer dari sistem orde 1 dapat dinyatakan sebagai :


Dengan parameter-parameter :

·         K (Steady State Gain) : Nilai DC gain dari sistem ketika telah mencapai steady state

·         T (Time Constant) : Waktu yang dibutuhkan sistem untuk mencapai nilai 63% dari Steady state gain

Pada umumnya, kita menginginkan agar sistem memiliki Time Constant yang kecil agar sistem dapat semakin cepat mencapai nilai DC steady state.

Sistem Orde 2



Secara umum, fungsi transfer dari sistem orde 2 dapat dinyatakan sebagai:

ζ merupakan damping ratio dan Ï‰n merupakan natural frequency dari sistem. Dapat dilihat bahwa berbeda dengan respon sistem orde 1, respon untuk sistem orde 2 akan memiliki gelombang overshoot. Overshoot terjadi ketika damping ratio bernilai kurang dari unity yang menyebabkan respon underdamped. Parameter-parameter yang menentukan performa dari respons step sistem orde dua diantaranya adalah :

·         K (Steady State Gain) : Nilai DC gain dari sistem ketika telah mencapai steady state

·         Ess (Error Steady State) : Beda nilai steady state sistem terhadap setpoint yang diinginkan

·         Tr (Rise Time) : Waktu yang dibutuhkan sistem dari 10% nilai final untuk menjadi 90% nilai final

·         Tp (Peak Time): Waktu yang dibutuhkan sistem untuk mencapai nilai peak maksimum pertama

·         Ts (Settling Time): Waktu yang dibutuhkan sistem untuk mencapai nilai +- 2% dari nilai steady state

·         %OS (Percent Overshoot): Besar nilai overshoot terhadap nilai steady state, dinyatakan dalam persen

Pada umumnya, kita menginginkan sistem dengan error steady state untuk memiliki respon steady state yang baik. Diinginkan juga agar Rise Time, Settling Time, dan overshoot yang sekecil mungkin. Semakin cepat parameter tersebut, maka dapat dibilang bahwa sistem memiliki respon transien yang cepat. Parameter ini juga harus disesuaikan dengan kondisi real dari sistem yang digunakan. Sebagai contoh, kita bisa aja membuat sistem yang memiliki respon transien sangat cepat, namun dengan tradeoff persen overshoot yang sangat tinggi. Misalkan kita menggunakan motor DC yang digunakan bekerja pada kisaran tegangan 5V, lalu kita mendesain suatu kontroller yang mengakibatkan respon sistem akan memiliki overshoot dengan peak dari control voltage sebesar 100V. Hal ini tentu saja tidak masuk akal untuk diimplementasikan pada sistem real karena Motor DC tersebut pasti akan overheat dan rusak ketika diberikan tegangan yang jauh lebih tinggi dari rentang tegangan normal. Dari contoh kasus tersebut, poin yang ingin disampaikan adalah proses desain kontroler juga harus memperhatikan batasan fisik dari sistem yang ingin dikendalikan.

 


 PRIVACY POLICY

Salah satu prioritas utama blog/website sinauprogramming.com, adalah privasi pengunjung kami. Dokumen Kebijakan Privasi ini berisi jenis informasi yang dikumpulkan dan dicatat oleh ainamulyana.com dan bagaimana kami menggunakannya.


Informasi yang Kami Kumpulkan

sinauprogramming.com mengikuti prosedur standar menggunakan file log. File-file ini mencatat pengunjung ketika mereka mengunjungi situs web. Informasi yang dikumpulkan oleh file log termasuk alamat protokol internet (IP), jenis browser, Penyedia Layanan Internet (ISP), tanggal dan waktu, halaman rujukan/keluar, dan mungkin jumlah klik. Ini tidak terkait dengan informasi apa pun yang dapat diidentifikasi secara pribadi. Tujuan informasi adalah untuk menganalisis tren, mengelola situs, melacak pergerakan pengguna di situs web, dan mengumpulkan informasi demografis.


Cookies

sinauprogramming.com menggunakan ‘cookie’. Cookie digunakan untuk menyimpan informasi seperti preferensi pengunjung dan halaman yang diakses atau dikunjungi pengunjung pada situs web ini. Informasi tersebut kami gunakan untuk mengoptimalkan pengalaman pengguna dengan menyesuaikan konten halaman web kami.


Kebijakan Privasi Pihak Ketiga

Kebijakan Privasi sinauprogramming.com tidak berlaku untuk pengiklan atau situs web lain. Karena itu, kami menyarankan Anda untuk membaca seksama masing-masing Kebijakan Privasi dari pihak ketiga untuk informasi yang lebih rinci. Anda berhak untuk menonaktifkan cookies pada browser Anda.


Informasi Anak

sinauprogramming.com tidak mengumpulkan informasi identifikasi pribadi termasuk terhadap anak-anak di bawah umur. Salah satu prioritas kami adalah membantu perlindungan untuk anak-anak saat menggunakan internet. Kami mendorong orang tua dan wali untuk mengamati, berpartisipasi, memantau, dan membimbing aktivitas online mereka.


Persetujuan

Dengan menggunakan situs website/blog sinauprogramming.com, Anda dengan ini menyetujui Kebijakan Privasi kami dan menyetujui syarat dan ketentuannya.




 Part yang dibutuhkkan:

  • ESP32 development board 
  • MicroSD Card Module
  • MicroSD Card
  • Jumper Wires
  • Breadboard

Modul kartu microSD berkomunikasi menggunakan protokol komunikasi SPI. Anda dapat menghubungkannya ke ESP32 menggunakan pin SPI default.

MicroSD card moduleESP32
3V33.3V
CSGPIO 5
MOSIGPIO 23
CLKGPIO 18
MISOGPIO 19
GNDGND

Pada bagian ini, kami akan menunjukkan kepada Anda bagaimana menangani file dengan kartu microSD menggunakan ESP32 dan Arduino IDE. Kami akan menggunakan contoh pustaka SD untuk mendemonstrasikan semua fungsi penanganan file utama termasuk membaca, menghapus, menambahkan file, dll. Pustaka SD untuk ESP32 menggunakan pengontrol SPI.

Persiapan Micro SD Card Module

Sebelum memasukkan Kartu SD ke dalam modul pembaca kartu SD, Anda perlu memformat kartu dengan benar sebelum Anda benar-benar dapat menggunakannya, jika tidak, Anda akan mengalami masalah karena modul pembaca kartu SD hanya dapat membaca sistem file FAT16 atau FAT32. Jika kartu sd Anda baru maka kemungkinan besar kartu tersebut diformat pabrik, itu mungkin juga tidak berfungsi karena kartu pra-format dilengkapi dengan sistem file FAT, bagaimanapun juga, lebih baik memformat kartu lama untuk mengurangi masalah selama pengoperasian.


Ada beberapa contoh di Arduino IDE yang menunjukkan cara menangani file di kartu microSD menggunakan ESP32. Di Arduino IDE, buka File > Examples > SD(esp32) > SD_Test,





Program Micro SD Card Module

Library disini


/*
 * Connect the SD card to the following pins:
 *
 * SD Card | ESP32
 *    D2       -
 *    D3       SS
 *    CMD      MOSI
 *    VSS      GND
 *    VDD      3.3V
 *    CLK      SCK
 *    VSS      GND
 *    D0       MISO
 *    D1       -
 */
#include "FS.h"
#include "SD.h"
#include "SPI.h"

void listDir(fs::FS &fs, const char * dirname, uint8_t levels){
    Serial.printf("Listing directory: %s\n", dirname);

    File root = fs.open(dirname);
    if(!root){
        Serial.println("Failed to open directory");
        return;
    }
    if(!root.isDirectory()){
        Serial.println("Not a directory");
        return;
    }

    File file = root.openNextFile();
    while(file){
        if(file.isDirectory()){
            Serial.print("  DIR : ");
            Serial.println(file.name());
            if(levels){
                listDir(fs, file.path(), levels -1);
            }
        } else {
            Serial.print("  FILE: ");
            Serial.print(file.name());
            Serial.print("  SIZE: ");
            Serial.println(file.size());
        }
        file = root.openNextFile();
    }
}

void createDir(fs::FS &fs, const char * path){
    Serial.printf("Creating Dir: %s\n", path);
    if(fs.mkdir(path)){
        Serial.println("Dir created");
    } else {
        Serial.println("mkdir failed");
    }
}

void removeDir(fs::FS &fs, const char * path){
    Serial.printf("Removing Dir: %s\n", path);
    if(fs.rmdir(path)){
        Serial.println("Dir removed");
    } else {
        Serial.println("rmdir failed");
    }
}

void readFile(fs::FS &fs, const char * path){
    Serial.printf("Reading file: %s\n", path);

    File file = fs.open(path);
    if(!file){
        Serial.println("Failed to open file for reading");
        return;
    }

    Serial.print("Read from file: ");
    while(file.available()){
        Serial.write(file.read());
    }
    file.close();
}

void writeFile(fs::FS &fs, const char * path, const char * message){
    Serial.printf("Writing file: %s\n", path);

    File file = fs.open(path, FILE_WRITE);
    if(!file){
        Serial.println("Failed to open file for writing");
        return;
    }
    if(file.print(message)){
        Serial.println("File written");
    } else {
        Serial.println("Write failed");
    }
    file.close();
}

void appendFile(fs::FS &fs, const char * path, const char * message){
    Serial.printf("Appending to file: %s\n", path);

    File file = fs.open(path, FILE_APPEND);
    if(!file){
        Serial.println("Failed to open file for appending");
        return;
    }
    if(file.print(message)){
        Serial.println("Message appended");
    } else {
        Serial.println("Append failed");
    }
    file.close();
}

void renameFile(fs::FS &fs, const char * path1, const char * path2){
    Serial.printf("Renaming file %s to %s\n", path1, path2);
    if (fs.rename(path1, path2)) {
        Serial.println("File renamed");
    } else {
        Serial.println("Rename failed");
    }
}

void deleteFile(fs::FS &fs, const char * path){
    Serial.printf("Deleting file: %s\n", path);
    if(fs.remove(path)){
        Serial.println("File deleted");
    } else {
        Serial.println("Delete failed");
    }
}

void testFileIO(fs::FS &fs, const char * path){
    File file = fs.open(path);
    static uint8_t buf[512];
    size_t len = 0;
    uint32_t start = millis();
    uint32_t end = start;
    if(file){
        len = file.size();
        size_t flen = len;
        start = millis();
        while(len){
            size_t toRead = len;
            if(toRead > 512){
                toRead = 512;
            }
            file.read(buf, toRead);
            len -= toRead;
        }
        end = millis() - start;
        Serial.printf("%u bytes read for %u ms\n", flen, end);
        file.close();
    } else {
        Serial.println("Failed to open file for reading");
    }


    file = fs.open(path, FILE_WRITE);
    if(!file){
        Serial.println("Failed to open file for writing");
        return;
    }

    size_t i;
    start = millis();
    for(i=0; i<2048; i++){
        file.write(buf, 512);
    }
    end = millis() - start;
    Serial.printf("%u bytes written for %u ms\n", 2048 * 512, end);
    file.close();
}

void setup(){
    Serial.begin(115200);
    if(!SD.begin()){
        Serial.println("Card Mount Failed");
        return;
    }
    uint8_t cardType = SD.cardType();

    if(cardType == CARD_NONE){
        Serial.println("No SD card attached");
        return;
    }

    Serial.print("SD Card Type: ");
    if(cardType == CARD_MMC){
        Serial.println("MMC");
    } else if(cardType == CARD_SD){
        Serial.println("SDSC");
    } else if(cardType == CARD_SDHC){
        Serial.println("SDHC");
    } else {
        Serial.println("UNKNOWN");
    }

    uint64_t cardSize = SD.cardSize() / (1024 * 1024);
    Serial.printf("SD Card Size: %lluMB\n", cardSize);

    listDir(SD, "/", 0);
    createDir(SD, "/mydir");
    listDir(SD, "/", 0);
    removeDir(SD, "/mydir");
    listDir(SD, "/", 2);
    writeFile(SD, "/hello.txt", "Hello ");
    appendFile(SD, "/hello.txt", "World!\n");
    readFile(SD, "/hello.txt");
    deleteFile(SD, "/foo.txt");
    renameFile(SD, "/hello.txt", "/foo.txt");
    readFile(SD, "/foo.txt");
    testFileIO(SD, "/test.txt");
    Serial.printf("Total space: %lluMB\n", SD.totalBytes() / (1024 * 1024));
    Serial.printf("Used space: %lluMB\n", SD.usedBytes() / (1024 * 1024));
}

void loop(){

}


Hasil Akan ditampilkan pada Serial Monitor








Newer Posts Older Posts Home





POPULAR POSTS

  • Skema Power Supply Switching SMPS
  • Proteus 8.5 Full Version Professional
  • Tutorial ILI9341 TFT SPI LCD touch Screen
  • Artificial Neural Network for Identification MATLAB
  • Serial Communication UART Raspberry Pico (SoftSerial)
  • Pulse Oxymetry (SPO2) + Raspberry Pi
  • Menampilkan Text Pada LCD 16x2 I2C Arduino

ABOUT ME

cobabaru

Sinau Programming

SUBSCRIBE & FOLLOW

Training


Contact Form

Name

Email *

Message *

Categories

  • alkes 1
  • Android 4
  • Arduino 35
  • Basic & Doc 12
  • centrifuge 1
  • ESP32 8
  • Internet of Things (IoT) 23
  • LCD TFT SPI 2
  • MATLAB 6
  • Metode kendali 1
  • Modul Charger 1
  • Nextion 4
  • NodeMcu 8
  • oled 1
  • Pattern Recognition 2
  • Pemrograman 2
  • Perbaikan 1
  • PID 2
  • PLC HMI VTSCADA ARDUINO 3
  • PRIVACY POLICY 1
  • Proteus 11
  • Python 1
  • raspberry 5
  • Teknik Elektromedik 2
  • Thingsboard 1
  • Video 5
  • Wemos 4

sinau_programming

Sinau Programming Distributed by Sinau Programming