• Tidak ada hasil yang ditemukan

Memasang dan Menggunakan Class Telegraph

Bab 2 Proyek-proyek Arduino

4.6 Memasang dan Menggunakan Class Telegraph

- } 15 Serial.println(); - }

send_message () output karakter pesan oleh karakter dalam satu lingkaran. di baris 3, kita menghidupkan karakter saat ini menjadi huruf besar, huruf kecil karena karakter yang tidak didefinisikan dalam kode Morse (itulah alasan mengapa Anda tidak dapat menerapkan chat client menggunakan kode Morse). Kemudian kita cek apakah karakter saat ini adalah surat menggunakan C isalpha () function.

Jika itu, kita menggunakannya untuk menentukan representasi kode Morse -nya yang disimpan di SURAT array. Untuk melakukan itu, kita menggunakan trik lama : dalam tabel ASCII semua huruf (dan angka) muncul dalam urutan yang benar, yaitu, A = 65, B = 66, dan seterusnya. Untuk mengubah karakter saat ini menjadi indeks untuk SURAT array, kita harus mengurangi 65 (atau ' A ') dari kode ASCII. ketika kita telah menentukan kode Morse yang benar, kita lulus ke output_symbol () dan menunda program untuk panjang dah sesudahnya.

Algoritma ini bekerja persis sama untuk keluaran digit, kita hanya harus indeks array DIGIT bukan SURAT array, dan kita memiliki untuk mengurangi nilai ASCII dari karakter 0. Sejalan 10, kita cek apakah kita menerima karakter kosong. Jika ya, kita mencetak karakter kosong ke port serial dan menunggu selama tujuh dits. Semua karakter lain diabaikan : kita hanya huruf proses, angka, dan kosong. Pada akhir metode, kita mengirim karakter baris baru ke port serial untuk menandai akhir pesan.

60 Kelas Telegraph kita selesai, dan sekarang kita harus membuat beberapa contoh sketsa yang benar-benar menggunakannya. Hal ini penting karena dua alasan : kita dapat menguji kode library kita, dan bagi pengguna kelas kita itu dokumentasi yang baik untuk bagaimana menggunakannya. Arduino IDE mencari library di dua tempat : di library global folder relatif terhadap direktori instalasi dan sketsa lokal pengguna direktori. Selama pengembangan yang terbaik untuk menggunakan sketsa lokal direktori. Anda dapat menemukan lokasi di preferensi IDE. Buat direktori baru bernama library didirektori sketsa. Untuk membuat kita Tel kelas EGR aph tersedia, membuat subfolder Telegraph di folder library. Kemudian salin telegraph.h dan telegraph.cpp ke folder itu (jangan copy Telegraph pde.). Restart IDE. Mari kita mulai dengan ibu dari semua program :”Halo, dunia”Buat baru sketsa bernama HelloWorld, dan masukkan kode berikut ::

#include”telegraph.h"

const unsigned int OUTPUT_PIN = 13;

const unsigned int DIT_LENGTH = 200;

Telegraph telegraph(OUTPUT_PIN, DIT_LENGTH);

void setup() {}

void loop() {

telegraph.send_message("Hello, world!"); delay(5000);

}

Sketsa ini memancarkan string”Hello, world!”Sebagai kode Morse setiap lima detik. Untuk mencapai hal ini, kita menyertakan definisi Tel EGR kelas aph kita, dan kita mendefinisikan konstanta untuk pin LED kita terhubung ke dan untuk panjang dits kita. Kemudian kita membuat Tel EGR objek aph global dan Setup kosong () function. Dalam loop (), maka kita memanggil send_message () pada kita Telegraph misalnya setiap lima detik.

Ketika anda mengkompilasi sketsa ini, Arduino IDE secara otomatis mengkompilasi library telegraf, juga. Jadi jika Anda membuat kesalahan sintaksis

61 dalam library, Anda akan diberitahu sekarang. Jika Anda harus memperbaiki beberapa kesalahan, pastikan Anda mengubah file kode sumber asli Anda. Setelah Anda tetap kesalahan, salin file ke library folder lagi, dan jangan lupa untuk me-restart IDE.

Menghidupkan string statis ke dalam kode Morse bagus, tapi tidak akan menjadi besar jika program kita bisa bekerja untuk string sewenang-wenang? Jadi, mari kita tambahkan lebih Contoh canggih. Kali ini, kita akan menulis kode yang bertuliskan pesan dari port serial dan feed mereka ke Telegraph misalnya. Buat sketsa baru bernama MorseCodeGenerator, dan masukkan kode berikut:

#include”telegraph.h"

const unsigned int OUTPUT_PIN = 13;

const unsigned int DIT_LENGTH = 200;

const unsigned int MAX_MESSAGE_LEN = 128;

const unsigned int BAUD_RATE = 9600;

const int LINE_FEED = 13;

char message_text[MAX_MESSAGE_LEN];

int index = 0;

Telegraph telegraph(OUTPUT_PIN, DIT_LENGTH);

void setup(){

Serial.begin(BAUD_RATE); }

void loop() {

if (Serial.available() > 0){

int current_char = Serial.read();

if (current_char == LINE_FEED || index == MAX_MESSAGE_LEN - 1){ message_text[index] = 0; index = 0; telegraph.send_message(message_text); } else { message_text[index++] = current_char; }

62

} }

Sekali lagi, kita menyertakan file header dari Telegraph kelas, dan seperti yang kita biasa mendefinisikan beberapa konstanta: OUTPUT_PIN

mendefinisikan pin LED kita terhubung untuk, dan DIT_LENGTH berisi panjang dari dit diukur dalam milidetik. LINE_FEED diatur ke kode ASCII dari karakter linefeed. Kita membutuhkannya untuk menentukan akhir pesan yang akan dipancarkan sebagai kode Morse. akhirnya, kita set MAX_MESSAGE_LEN dengan panjang maksimum pesan yang kita dapat mengirim.

Selanjutnya kita mendefinisikan tiga variabel global : message_text adalah buffer karakter yang akan diisi dengan data yang kita terima pada port serial. indeks terus melacak posisi kita saat ini dalam buffer, dan telegraf adalah Telegraph objek yang akan kita gunakan untuk mengubah pesan

menjadi”blinkenlights.”3 setup () menginisialisasi port serial, dan dalam lingkaran () kita memeriksa apakah baru Data telah tiba, memanggil Serial.available ().

Kita membaca byte berikutnya jika baru data tersedia, dan kita memeriksa apakah karakter linefeed atau apakah itu byte terakhir yang cocok dengan

penyangga karakter kita. dalam kedua kasus, kita mengatur byte terakhir dari message_text ke 0, karena string dalam C / C + + adalah null- dihentikan.

Kita juga mengatur ulang indeks sehingga kita dapat membaca berikutnya pesan, dan akhirnya kita mengirim pesan menggunakan telegraf kita. dalam semua kasus lain, kita menambahkan byte terbaru untuk pesan teks saat ini dan

melanjutkan. Anda harus mengkompilasi dan meng-upload program sekarang. Buka monitor serial, dan pilih”Carriage return”dari akhir baris drop-down menu di bagian bawah jendela. Dengan set pilihan, monitor seri secara otomatis akan menambahkan karakter baris baru untuk setiap baris mengirimkan ke Arduino. Masukkan pesan seperti nama Anda, klik Mengirim tombol, dan melihat bagaimana Arduino mengubahnya menjadi cahaya. Karena kita telah dikemas seluruh Morse kode logika di Telegraph kelas, program utama kita adalah pendek dan ringkas. Membuat perangkat lunak untuk perangkat embedded tidak berarti

63 kita tidak bisa mendapatkan keuntungan dari keuntungan pemrograman

berorientasi objek.

Namun, kita memiliki beberapa hal-hal kecil yang harus dilakukan untuk mengubah proyek kita menjadi sebuah firstclass library. Baca lebih lanjut tentang hal ini pada bagian berikutnya.

Dokumen terkait