Sketch di Arduino: Apa itu, untuk apa digunakan, dan bagaimana struktur program-program ini?

Pembaharuan Terakhir: 03/09/2022
Struktur Sketch di Arduino: Apa itu, untuk apa, dan bagaimana program-program ini disusun

Sketsa adalah salah satu elemen terpenting dalam Lingkungan pemrograman IDEOleh karena itu, jika Anda ingin menjadi seorang ahli sejati, Anda perlu mengetahui struktur sketsa.

Anda dapat menemukan informasi ini di paragraf-paragraf berikut. Kami akan menjelaskan secara detail apa itu Sketch dan untuk apa program-program ini digunakan. Anda juga Kami akan menunjukkan semua bagian dari sebuah Kode Arduino.

Kami mengajak Anda untuk terus membaca hingga akhir karena Anda akan menemukan informasi tentang Contoh sketsa yang dapat Anda gunakan untuk belajar pemrograman. Silakan lihat.

Apa itu Arduino Sketch dan untuk apa program-program ini digunakan?

Jika Anda pergi ke Buat proyek dengan papan Arduino. Anda tidak hanya perlu menggunakan pin untuk menghubungkan berbagai elemen di antara papan tersebut.Anda akan membutuhkan rangkaian dan perangkat keras yang Anda inginkan. Anda juga perlu memprogram model Arduino Anda agar dapat memancarkan sinyal elektronik dan proyek dapat berjalan. Misalnya, jika Anda membuat robot, pada tahap pertama Anda perlu membuat koneksi yang diperlukan dengan benar. Namun ini tidak akan membantu Anda sama sekali karena robot tersebut akan tetap tidak bergerak..

Yang seperti itu Anda perlu memprogram pergerakan mereka. agar proyek tersebut masuk akal. Untuk membuat robot bergerak, melanjutkan contoh sebelumnya, Anda harus mengkonfigurasi papan Arduino di lingkungan IDE. Ini adalah perangkat lunak yang menggunakan bahasa khusus dan membagi setiap proyek menjadi sebuah Sketch. Oleh karena itu, Sketch Arduino adalah program tempat semua kode disimpan. yang digunakan untuk membuat papan tersebut melakukan tugas-tugas tertentu.

Saat Anda menemukan file dengan ekstensi .ino, itu berarti file tersebut adalah Sketch.Agar berfungsi dengan benar, Anda harus mengingat nama folder tempat file tersebut berada. simpan sketsa File tersebut harus disertakan dalam direktori yang memiliki nama yang sama dengan Sketsa.

Anda dapat menyimpan program dari Arduino dalam file yang berbeda, tetapi folder-folder ini harus selalu berada dalam direktori yang sama dengan file utama. Terakhir, Anda harus ingat bahwa Sebuah sketsa terdiri dari dua instruksi: satu disebut loop() dan yang lainnya setup().Yang pertama bertanggung jawab untuk mengeksekusi instruksi program secara siklik, atau melalui perulangan, sedangkan yang kedua adalah pernyataan yang digunakan untuk melakukan konfigurasi.

Struktur Sketsa: Apa saja bagian-bagian dari kode Arduino?

Seperti yang telah kami sebutkan sebelumnya Fungsi setup() dan loop() adalah bagian dari sebuah Sketch.Namun, ini bukan satu-satunya komponen yang dapat Anda temukan dalam sebuah program. Arduino.

Di bawah ini kami akan menunjukkan kepada Anda semua bagian kode papan elektronik yang dapat Anda gunakan di IDE:

struktur

struktur

Menganalisis struktur Sketsa secara lebih mendalam., bisa dibilang Fungsi setup() digunakan untuk memulai sebuah sketsa.menginisialisasi pustaka, variabel, dan bagaimana pin papan akan digunakan, di antara hal-hal lainnya. Ini digunakan setiap kali Arduino dinyalakan atau dihidupkan ulang. Oleh karena itu, sebaiknya hanya ditulis sekali dan di bagian awal kode.

Salah satu contohnya adalah: 

int buttonPin = 5; void setup() { begin(9600); pinMode(buttonPin, INPUT); } void loop() { // ... }

Komponen lain yang membentuk Sketch adalah loop(). Dokumen atau instruksi ini digunakan setelah pembuatan mempersiapkan() ayat Menentukan nilai awal yang akan dimiliki oleh suatu fungsi tertentu. Hal ini membuat pengendalian papan menjadi jauh lebih mudah setiap kali loop ini digunakan.

Cara penggunaannya adalah sebagai berikut: 

int buttonPin = 5; // setup menginisialisasi serial dan pin tombol void setup() { begin(9600); pinMode(buttonPin, INPUT); } // untuk mengontrol pin 5, // juga, jika ditekan akan mengirim Serial void loop() { if (digitalRead(buttonPin) == HIGH) { write('H'); } else { write('L'); } delay(1000); }

Seperti yang terlihat pada contoh-contoh sebelumnya, komparator lain juga digunakan., oleh karena itu struktur dari Sketsa Hal ini juga dapat dibagi lagi menjadi beberapa variabel.

Komponen-komponen ini meliputi: 

  • Kontrol: Digunakan untuk menetapkan kondisi atau menjalankan prosedur tertentu. Kelompok ini meliputi: istirahat; terus; do... sementara; untuk; goto; if; if...lain; kembali; kasus sakelar y sementara.
  • Hitung: Fungsi-fungsi ini harus digunakan ketika Anda perlu memprogram operasi matematika dasar dalam lingkungan Arduino. Para pembeli ini adalah =; +; -; /; * y %.
  • Sintaksis: Mereka membantu untuk memasukkan komentar satu atau beberapa baris, serta untuk menyebutkan nilai konstanta atau memasukkannya dalam kompilasi program. Mereka digunakan dalam kasus ini. #menetapkan; #include; {}; titik koma (;); // untuk komentar satu baris di samping kode dan / * * / Untuk membuka dan menutup komentar multi-baris.
  • Boolean: Saat Anda perlu memperkenalkan variabel logis, Anda harus menggunakan operator-operator ini di IDE. Operator-operator tersebut meliputi: || (atau); && (dan) dan ! (bukan).
  • Sebagai perbandingan: Subkategori ini adalah salah satu yang paling sering digunakan dalam pemrograman. Sesuai namanya, subkategori ini digunakan untuk membandingkan suatu kondisi dan mengembalikan hasil untuk melanjutkan prosedur. Kelompok ini menggunakan... == (sama dengan); > (lebih besar dari); >= (lebih besar dari atau sama dengan); < (kurang dari); <= (kurang dari atau sama dengan) dan != (tidak sama dengan).
  • Senyawa: Operator-operator ini digunakan dalam struktur sketsa ketika kombinasi komponen lain diperlukan. Dengan kata lain, operator ini memiliki tujuan ganda. Oleh karena itu, operator ini dapat digunakan &= (dan komposit sedikit demi sedikit); - (mengurangi); /= (pembagian dengan metode komposit); ++ (meningkatkan); %= (modul komposit); *= (perkalian majemuk); |= (atau komposit bit demi bit); -=(pengurangan majemuk) dan += (jumlah komposit).
  • Sedikit demi sedikit: Operator bitwise bekerja dengan bilangan biner, membangun hubungan sesuai dengan aturan tertentu. Operator yang digunakan adalah: >> (pergi ke kanan); << (pergi ke kiri); ~ (bukan sedikit demi sedikit); | (atau sedikit demi sedikit); ^ (xor bitwise) dan & (dan sedikit demi sedikit).
  • Akses ke penunjuk: * y & Berikut adalah operator yang dapat Anda gunakan dalam grup ini.

Nilai

Nilai

Di bagian ini Ini termasuk konstanta, kualifikasi, cakupan, dan tipe data. yang digunakan dalam pemrograman papan Arduino.

Variabel-variabel tersebut dapat dibagi menjadi:

  • Konstanta: Ini digunakan untuk mempermudah pembacaan bahasa pada papan sirkuit. Anda dapat menemukan nilai yang dapat diambil oleh sebuah pin dan mode konfigurasi input atau outputnya. Yang paling umum digunakan adalah: palsu; konstanta titik mengambang; TINGGI; RENDAH; INPUT; INPUT_PULLUP; konstanta bilangan bulat; LED_BUILTIN; KELUARAN y benar.
  • Kelas data: Saat Anda perlu menentukan tipe data yang sedang Anda kerjakan dalam bahasa pemrograman, Anda harus menggunakan grup ini. Oleh karena itu, hal-hal berikut dapat dikelompokkan dalam kategori ini: susunan; boolean; byte; tangki; dua kali lipat; mengapung; int; panjang; pendek; string (sebagai larik karakter); string (Obyek); karakter yang tidak ditandatangani; tidak ditandatangani; panjang tanpa tanda tangan; membatalkan y kata.
  • Kegunaan: Kategori variabel ini digunakan untuk membuat program mengembalikan sejumlah byte tertentu dari sebuah array. Oleh karena itu, variabel ini dapat dimasukkan ke dalam IDE. PROGRAM y ukuran dari.
  • Percakapan: Variabel-variabel dalam kelompok ini mengubah suatu nilai menjadi tipe data tertentu. byte; tangki; mengapung; int; panjang y kata.
  • Kualifikasi ruang lingkup: Variabel-variabel ini digunakan untuk memodifikasi perilaku variabel itu sendiri. Ini menunjukkan apakah variabel tersebut hanya dapat dibaca atau merupakan variabel global, di antara fungsi-fungsi lainnya. Yang paling umum adalah: const; statis; cakupan variabel y volatil.
Arduino Zero: Apa itu, untuk apa digunakan, dan proyek pengembangan apa saja yang dapat menggunakan perangkat ini?

Funciones

Funciones

Dalam bahasa yang digunakan dalam kode ArduinoBagian fungsi dimaksudkan untuk memberi tahu program jenis tindakan apa yang harus dilakukan oleh suatu variabel.

Mereka dapat dibagi:

  • Masuk dan keluar: Komponen-komponen ini digunakan ketika diperlukan untuk mengarahkan arus atau bentuk gelombang yang diterima oleh pelat. tidak ada nada; pulsa; pulsaInLong; pergeseran ke dalam; shiftOut y melenggang.
  • Waktu: Dalam kode, komponen-komponen ini dapat digunakan untuk menunjukkan tindakan yang terkait dengan waktu, misalnya, jumlah milidetik yang harus ditunggu uang sebelum memberikan tindakan. Ini digunakan untuk komponen-komponen ini. menunda; tundaMikrodetik; micros y milis.
  • Digital: Ini digunakan untuk mengkonfigurasi input dan output dari pin digital pada papan. Oleh karena itu, dimungkinkan untuk menemukan fungsi-fungsi tersebut. Baca digital; digitalTulis y mode pin.
  • Sejalan: Seperti fungsi-fungsi sebelumnya, tindakan ini dikhususkan untuk mengkonfigurasi pin analog pada papan Arduino. Karena itu, Anda mungkin menemukan analogRead; analogTulis y Referensi analog (PWM). Tetapi ketika Anda menggunakan model ARDUINO KARENA atau Arduino ZERO Anda perlu memasukkan fungsi-fungsi tersebut. ResolusiBacaAnalog y analogWriteResolution bekerja.
  • Matematika: Fungsi-fungsi ini memungkinkan Anda untuk melakukan perhitungan matematika di dalam kode program. Yang paling umum digunakan adalah: abs; memaksa; peta; max; menit; pow y persegi.
  • interupsi: Fungsi-fungsi ini digunakan untuk mengaktifkan atau menonaktifkan proses tertentu. Kelompok ini meliputi: menyela y tanpa gangguanNamun, jika diperlukan interupsi eksternal, interupsi yang digunakan adalah: attachInterrupt y putus Interupsi.
  • Bit dan byte: Alat pemrograman ini digunakan untuk menunjukkan bahwa bit atau byte harus diekstrak dari suatu variabel. Oleh karena itu, fungsi yang biasanya digunakan adalah... bit; bitClear; bitRead; bitSet; bitWrite; Byte tinggi y lowByte.
  • Komunikasi: Grup ini adalah salah satu yang paling banyak digunakan dalam pemrograman IDE, karena memungkinkan papan Arduino untuk berkomunikasi dengan komputer atau perangkat keras lainnya. Fungsi-fungsi yang dapat Anda temukan adalah: Serial y Aliran.
  • Angka acak: Fungsi-fungsi ini memungkinkan Anda untuk menghasilkan angka-angka untuk membuat urutan yang akan selalu sama. Fungsi-fungsi yang termasuk dalam kelompok ini adalah: benih acak y acakNamun ketika Anda bekerja dengan model AKIBAT y NOL Jika Anda perlu menghubungkan mouse dan keyboard pada sistem 32u4, fungsi yang akan Anda gunakan adalah: Keyboard y Mouse.

Pelajari langkah demi langkah cara memprogram Sketch sederhana untuk proyek Arduino Anda.

Di bagian ini Kita akan mempraktikkan semua yang telah ditunjukkan pada paragraf sebelumnya.Oleh karena itu, Anda harus memperhatikan dan, jika karena alasan apa pun Anda melakukan kesalahan, kami sarankan untuk mengulang langkah-langkahnya agar kesalahan tersebut tidak terulang.

Proses yang perlu Anda ikuti saat memprogram proyek Arduino sederhana adalah sebagai berikut:

Komentar

Komentar

Los komentar Ini semua adalah anotasi yang dibuat dalam kode untuk menjelaskan cara kerja program, untuk mengidentifikasi penulis, atau untuk menjelaskan mengapa satu fungsi digunakan alih-alih fungsi lain. Ada dua jenis komentar, yaitu komentar multi-baris. (yang ditemukan di antara simbol-simbol tersebut) /* y */) dan baris itu saja (yang diwakili oleh penggunaan //Anda harus ingat bahwa Komentar bukan bagian dari program ini. dan oleh karena itu diabaikan oleh Arduino.

Salah satu contohnya adalah:

/*

Internet Paso a Paso

Contoh untuk Arduino adalah menyalakan LED selama satu detik, lalu mematikannya, sehingga menciptakan sebuah siklus. Pin 13 digunakan karena merupakan pin umum untuk hampir semua papan yang memiliki LED. Resistor, yang sudah terpasang di Arduino, juga diperlukan.

Variabel

Variabel-variabel tersebut terdiri dari tipe, nama, dan nilai. Ini digunakan agar setiap kali nama kode ditulis, nilai variabel dapat diambil.

Sebagai contoh, jika dalam program yang sedang dibuat untuk menghidupkan dan mematikan LED yang terhubung ke pin 13 pada papan, Anda harus menulis:

int pin led = 13;

Ini berarti nama variabel telah dibuat. LED Pin Untuk mengubah nilainya (jika diinginkan di masa mendatang), tipenya adalah int dan nilainya adalah 13.

Funciones

Jangan lupakan itu Fungsi adalah tindakan yang diperkenalkan. sehingga satu variabel Melakukan prosedur tertentu.

Beginilah cara Anda harus masuk ke perangkat lunak yang Anda program:

void setup() { pinMode(ledPin, OUTPUT); // untuk menunjukkan output pada pin digital }

Line mempersiapkan() Ini menunjukkan data tipe fungsi, yaitu tipe nilai kembalian yang akan dimiliki kode tersebut. membatalkan y (), sedangkan isi dari fungsi tersebut adalah { pinMode(ledPin, OUTPUT); // untuk menunjukkan output pada pin digital }Di dalam tubuh itu ditemukan mode pin Fungsi ini menunjukkan bahwa parameter LED Pin y KELUARAN Mereka harus melewati pin digital sebagai output (inilah mengapa hal ini diklarifikasi dalam komentar). // untuk menunjukkan output pada pin digital).

pinMode(), digitalWrite() dan delay()

Fungsi-fungsi ini memberikan instruksi spesifik kepada perintah tersebut, jadi Anda perlu mengetahui masing-masing fungsi:

  • pinMode(): Ini digunakan untuk menentukan apakah pin pada papan Arduino akan berfungsi sebagai input atau output untuk rangkaian. Jika sebagai input, konektor akan mendeteksi sensor, sedangkan jika sebagai pin output, maka akan menjadi aktuator (dalam contoh yang sedang kita kembangkan, itu akan menjadi LED).
  • digitalWrite(): Fungsi ini memungkinkan Anda untuk mengatur nilai sebuah pin. Ini berhubungan langsung dengan TINGGI y RENDAH, Indikator-indikator ini akan mengkonfigurasi jenis tegangan. Misalnya, Anda akan mengatur fungsi pinMode ke 5V dengan memasukkan... digitalWrite(ledPin, TINGGI);Jika perlu beroperasi pada tegangan 0 volt, Anda harus menulis Tulis digital(ledPin, RENDAH);.
  • menunda(): Fungsi ini bertanggung jawab untuk menunda proses sebelum melanjutkan ke baris kode berikutnya. Nilainya dinyatakan dalam milidetik, jadi nilai 1000 mewakili 1 detik. Kegunaannya adalah... penundaan (1000);.
Bagaimana cara menggunakan potensiometer pada Arduino untuk mengukur tegangan pada papan? Panduan langkah demi langkah.

Konfigurasi () dan Perulangan ()

Konfigurasi () dan Perulangan ()

Kita sudah membahas hal itu. mempersiapkan() Fungsi ini bertanggung jawab untuk mengkonfigurasi opsi dalam sebuah kode, tetapi alat ini bukanlah satu-satunya yang harus sering digunakan dalam pemrograman sebuah papan. Arduino. Juga loop ()Fitur ini memungkinkan Anda untuk memantau papan secara terus menerus. Dengan fitur ini, Anda dapat memeriksa apakah Anda berada di jalur yang benar dan apakah fungsi tambahan bekerja sesuai kebutuhan.

Berikut contoh penggunaan fungsi setup() dan loop():

int buttonPin = 3; // Konfigurasi ini menginisialisasi serial dan pin void setup() { begin(9600); pinMode(buttonPin, INPUT); } // Loop ini akan digunakan untuk memeriksa tombol dan mengirim sinyal serial setiap kali ditekan // Penundaan akan berlangsung selama 1 detik void loop() { if (digitalRead(buttonPin) == HIGH) { write('H'); } else { write('L'); } delay(1000); }

Contoh sketsa Arduino untuk membantu Anda belajar memprogram sendiri.

Apa yang akan Anda lihat selanjutnya Ini akan membantu Anda berlatih sendiri. berbeda Proyek.

Perhatikan detailnya dan ulangi terus menerus agar Anda memahami seluruh prosesnya:

Sketsa berkedip

Sketsa berkedip

Proyek ini akan membantu Anda membuat LED yang terintegrasi pada papan Arduino berkedip.yang memiliki sebagian besar model motherboard. Pada versi ini Sebuah, Yun Dan Zero, pin yang digunakan adalah nomor 13, sedangkan pada MKR1000 (misalnya) itu adalah pin digital 6.

Kode yang akan Anda gunakan adalah:

void setup() { pinMode(ledPin, OUTPUT); } { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }

Robot yang menghindari rintangan

Robot yang menghindari rintangan

Dalam proyek ini kami akan menunjukkan kepada Anda Alur proses yang harus Anda pertimbangkan saat memprogram., tepatnya, sebuah perangkat yang menghindari rintangan. Diagram yang kami tunjukkan pada gambar berikut ini. Ini akan membantu Anda lebih memahami prosesnya.

Sedangkan kode proyeknya akan terlihat seperti ini:

#termasuk #termasuk #termasuk #define TRIG_PIN A4 #define ECHO_PIN A5 #define MAX_DISTANCE 200 #define MAX_SPEED 190 #define MAX_SPEED_OFFSET 20 NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE); AF_DCMotor motor1(1, MOTOR12_1KHZ); AF_DCMotor motor2(3, MOTOR12_1KHZ); Servo myservo; boolean goesForward=false; int distance = 100; int speedSet = 0; void setup() { attach(9); write(115); delay(2000); distance = readPing(); delay(100); distance = readPing(); delay(100); distance = readPing(); delay(100); distance = readPing(); delay(100); } void loop() { int distanceR = 0; int distanceL = 0; delay(40); if(distance<=15) { moveStop(); delay(100); moveBackward(); delay(300); moveStop(); delay(200); distanceR = lookRight(); delay(200); distanceL = lookLeft(); delay(200); if(distanceR>=distanceL) { turnRight(); moveStop(); }else { turnLeft(); moveStop(); } }else { moveForward(); } distance = readPing(); } int lookRight() { write(50); delay(500); int distance = readPing(); delay(100); write(115); return distance; } int lookLeft() { write(170); delay(500); int distance = readPing(); delay(100); write(115); return distance; delay(100); } int readPing() { delay(70); int cm = sonar.ping_cm(); if(cm==0) { cm = 250; } return cm; } oid moveStop() { run(RELEASE); run(RELEASE); } void moveForward() { if(!goesForward) { goesForward=true; run(FORWARD); run(FORWARD); for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) { setSpeed(speedSet); setSpeed(speedSet+MAX_SPEED_OFFSET); delay(5); } } } void moveBackward() { goesForward=false; run(BACKWARD); run(BACKWARD); for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) { setSpeed(speedSet); setSpeed(speedSet+MAX_SPEED_OFFSET); delay(5); } } void turnRight() { run(FORWARD); run(BACKWARD); delay(300); run(FORWARD); run(FORWARD); } void turnLeft() { run(BACKWARD); run(FORWARD); delay(300); run(FORWARD); run(FORWARD); }

Sistem kontrol akses menggunakan pembacaan kartu RFID.

Sistem kontrol akses menggunakan pembacaan kartu RFID.

Pertama, penting untuk mendefinisikan apa itu kartu RFID. Ini adalah perangkat yang beroperasi menggunakan frekuensi radio dan digunakan untuk mengirim informasi yang berfungsi untuk mengidentifikasi atau mengirimkan data spesifik tentang suatu objek. Oleh karena itu, perangkat ini dapat digunakan secara praktis. papan arduino untuk membuat aplikasi pembaca yang memungkinkan pengendalian akses orang lain.

Setelah mempraktikkan dua proyek sebelumnyaAnda akan dapat menjadwalkan ini Sketsa sedikit lebih kompleks. Karena itu Pertama-tama, kami akan menunjukkan kepada Anda diagram alur operasinya. sehingga Anda dapat melaksanakan tugas Anda tanpa kesalahan. Yang perlu Anda lakukan sekarang adalah menulis kode-kode ini.Ini bukan data pasti, tetapi akan membantu Anda membandingkan apa yang telah Anda masukkan. Lingkungan Arduino IDE.

Untuk melakukan ini, Anda perlu menulis:

#termasuk #termasuk #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() { begin(9600); while (!Serial); begin(); PCD_Init(); delay(4); PCD_DumpVersionToSerial(); println(F("Pindai PICC untuk melihat UID, SAK, tipe, dan blok data...")); } void loop() { if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } if ( ! mfrc522.PICC_ReadCardSerial()) { return; } PICC_DumpToSerial(&(mfrc522.uid)); }

Apa yang harus Anda lakukan sekarang adalah ganti kata sandi dari suatu sektor yang menggunakan Kunci-A: A0 A1 A2 A3 A4 y Kunci-B: B0 B1 B2 B3 B4.

Anda perlu menulis:

#termasuk #termasuk #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); MFRC522::MIFARE_Key keyA = {keyByte: {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}; MFRC522::MIFARE_Key keyB = {keyByte: {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}; // Kunci baru untuk enkripsi MFRC522::MIFARE_Key newKeyA = {keyByte: {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5}}; MFRC522::MIFARE_Key newKeyB = {keyByte: {0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5}}; // Data sektor tempat pengguna yang diterima berada byte sector = 15; void showByteArray(byte* buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { print(buffer[i] < 0x10 ? " 0" : " "); print(buffer[i], HEX); } } void setup() { begin(9600); while (!Serial); begin(); PCD_Init(); println(F("Dekatkan kartu ke pembaca.")); println(F("Kunci untuk kartu ini harus:")); print("Kunci-A: "); showByteArray(keyA.keyByte, MFRC522::MF_KEY_SIZE); println(); print("Key-B: "); showByteArray(keyB.keyByte, MFRC522::MF_KEY_SIZE); println(); println(F("SANGAT PENTING: selama proses pembaruan kunci ")); println(F("jangan keluarkan kartu dari pembaca sampai selesai.")); } void loop() { // Jika tidak ada kartu yang akan digunakan, program tidak akan berlanjut if (!mfrc522.PICC_IsNewCardPresent()) { return; } if (!mfrc522.PICC_ReadCardSerial()) { return; }

Setelah itu, Anda perlu memprogram informasi agar muncul di monitor serial:

print(F("UID Kartu:")); displayByteArray(mfrc522.uid.uidByte, mfrc522.uid.size); println(); print(F("Tipe Kartu: ")); MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); println(mfrc522.PICC_GetTypeName(piccType)); boolean result = changeKeys(&keyA, &keyB, &newKeyA, &newKeyB, sector); if (result) { print(F("Kunci Sektor ")); println(sector); print(F("Kunci A: ")); showByteArray(newKeyA.keyByte, MFRC522::MF_KEY_SIZE); println(); print(F("Kunci B: ")); showByteArray(newKeyB.keyByte, MFRC522::MF_KEY_SIZE); println(); } else { print(F("Kunci sektor ")); println(sector); print(F("Kunci-A: ")); showByteArray(keyA.keyByte, MFRC522::MF_KEY_SIZE); println(); print(F("Kunci-B: ")); showByteArray(keyB.keyByte, MFRC522::MF_KEY_SIZE); println(); } // Otentikasi menggunakan kunci Key-A status = (MFRC522::StatusCode)mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, blockTrailer, oldKeyA, &(mfrc522.uid)); // Jika otentikasi gagal, jangan lanjutkan jika (status != MFRC522::STATUS_OK) { print(F("Otentikasi gagal Kunci-A: ")); println(mfrc522.GetStatusCodeName(status)); return false; } // Tampilkan sektor lengkap pengguna println(F("Informasi di sektor:")); PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), oldKeyA, sector); println(); // Membaca data blok print(F("Membaca data blok ")); Serial.print(blockTrailer); println(F(" ...")); status = (MFRC522::StatusCode) mfrc522.MIFARE_Read(blockTrailer, buffer, &size); if (status != MFRC522::STATUS_OK) { print(F("Gagal membaca blok: ")); println(mfrc522.GetStatusCodeName(status)); return false; } print(F("Informasi dalam blok ")); Serial.print(trailerBlock); Serial.println(F("":")); showByteArray(buffer, 16); Serial.println(); println(); // Otentikasi menggunakan Kunci-B status = (MFRC522::StatusCode)mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B, trailerBlock, oldKeyB, &(mfrc522.uid)); // Jika otentikasi gagal, jangan lanjutkan jika (status != MFRC522::STATUS_OK) { print(F("Otentikasi gagal Kunci-B: ")); println(mfrc522.GetStatusCodeName(status)); return false; } if (newKeyA != nullptr || newKeyB != nullptr) { // Untuk mengulangi semua byte dari kunci yang dipilih. for (byte i = 0; i < MFRC522::MF_KEY_SIZE; i++) { if (newKeyA != nullptr) { buffer[i] = newKeyA->keyByte[i]; } if (newKeyB != nullptr) { buffer[i + 10] = newKeyB->keyByte[i]; } } } return true; }
Buku elektronik tentang IPAP
Ebooks IPAP

🔥BERGABUNGLAH🔥 DENGAN KOMUNITAS IP@P YANG BARU! DAFTAR DI SINI!

Tema

Penulis: Félix Albornoz

Saya memiliki pengalaman lebih dari 20 tahun bekerja di sektor teknologi, membantu perusahaan dan pengguna untuk mengembangkan dan berlatih di bidang ini. Saya selalu belajar hal-hal baru.

Terkait