Tentang proyek ini
Arduinolibrary untuk port IO 8-bit
Kita semua tahu bahwa, arduino memberikan output digital menggunakan “digitalWrite() ”berfungsi dan mendapatkan input digital melalui “digitalRead() " fungsi. Namun dengan menggunakan kedua fungsi tersebut dapat memberikan output atau mendapatkan input dari salah satu pin - artinya pada suatu saat dapat memberikan output atau menerima input dari satu pin saja. Jika ada yang ingin menghubungkan perangkat IO 8-bit seperti tampilan 7-segmen, sakelar DIP atau DAC (Digital to Analog converter) dengan arduino, ia tidak dapat memberikan output digital 8-bit langsung ke perangkat tetapi sebaliknya harus memberikan output ke 8 pin yang berbeda .Pola byte data (8-bit) dikirim ke pin yang berbeda dalam bentuk 1 dan 0. Misalnya jika byte data 37h (0011 0111) kita harus mengirim pola 0 n 1 ini ke 8 pin berbeda menggunakan fungsi digitalWrite() .
Maka untuk mengatasi keadaan tersebut disini saya hadirkan library 8-bit IO Port (input-output port) untuk arduino. Dengan menggunakan perpustakaan ini, seseorang dapat mengirim data 8 bit langsung ke pin board arduino yang dikonfigurasi sebagai port 8-bit gabungan atau bisa mendapatkan input 8-bit dari pin yang dikonfigurasi ini. Library ini menyatukan 8 pin arduino untuk bekerja sebagai port IO 8-bit. Hanya satu harus memilih 8 pin arduino untuk digabungkan sebagai port 8-bit dan harus mengkonfigurasi arah datanya sebagai input atau output. Arah data diatur oleh karakter 'O' untuk output atau 'I' untuk input.
Perpustakaan hanya memiliki 5 fungsi. Ada dua konstruktor yang akan membuat objek port, satu fungsi untuk mengirim output digital 8-bit ke pin port, satu fungsi untuk mendapatkan input digital 8-bit dari pin port dan satu fungsi tambahan untuk mengubah/mengatur arah IO port. Berikut 5 fungsi dijelaskan secara singkat dan setelah beberapa contoh diberikan dengan penjelasan.
1. IO_Port_8bit(int pin1, intpin2, int pin3, int pin4, int pin5, int pin6, int pin7, int pin8, char dir)
Ini adalah konstruktor. Ini akan membuat objek dari kelas ini dan dengan demikian akan membuat satu atau banyak port 8-bit dengan menggabungkan pin arduino yang berbeda. Seseorang harus menentukan 8 pin arduino yang berbeda untuk digabungkan sebagai port bersama dengan arah data sebagai input atau output - berarti portwork sebagai input atau output. Dir argumen terakhir dalam konstruktor ini mendefinisikanport berfungsi sebagai input atau output. Jika dir='O' berarti port berfungsi sebagai output dan ifdir='I', port berfungsi sebagai input. Port yang sama tidak dapat berfungsi sebagai input dan output baik secara bersamaan atau bahkan alternatif. Juga menunjukkan kesalahan jika arah data tidak dipilih
2. IO_Port_8bit(int pin1, intpin2, int pin3, int pin4, int pin5, int pin6, int pin7, int pin8)
Ini adalah konstruktor lain. Itu juga akan membuat objek dari kelas ini dan dengan demikian akan membuat satu atau banyak port 8-bit dengan menggabungkan pin arduino yang berbeda. Seseorang harus menentukan 8 pin arduino yang berbeda untuk digabungkan sebagai port. Tetapi tidak menentukan arah data sebagai input atau output. Setelah membuat objek port menggunakan konstruktor ini, seseorang harus mengatur arah port menggunakan set_IO_direction fungsi. Jadi konstruktor ini memungkinkan programmer untuk mengubah arah data port waktu inrun menggunakan konstruktor ini, port yang sama dapat bekerja sebagai input atau output sebagai alternatif (tetapi tidak secara bersamaan)
3. set_IO_direction(char dir)
Fungsi ini menentukan arah input/output port. Ini memiliki satu argumen karakter yang dapat berupa 'I' untuk port sebagai input atau 'O' untuk port sebagai output. Jika datadirection tidak dipilih, ini akan menampilkan kesalahan pada monitor serial arduino
4. send_8bit_data(int byt)
Fungsi ini mengirimkan data 8 bit ke pin yang ditentukan. Berikan saja data int (harus <255) sebagai argumen yang langsung diberikan ke 8 pin berbeda. Jika data>255 maka akan muncul error pada serial monitor arduino.
5. get_8bit_data(void)
Fungsi ini mendapatkan data 8 bit dari pin yang ditentukan. Ini mengembalikan data int 8-bit dengan membaca status 8 pin berbeda
Contoh1:berkedip 8 led secara bergantian pada kecepatan 1 Hz
#include
IO_Port_8bitmyport(2, 3, 4, 5, 6, 7, 8, 9, 'O'); //buat port keluaran
void setup() // tidak diperlukan dalam setup
}
void loop()
myport.send_8bit_data(85);// send data toblink semua LED aneh
delay(500);
myport.send_8bit_data(170); kirim data untuk mengedipkan semua LED secara merata
delay(500);
}
Contoh2:menampilkan pola penghitungan biner pada LED dari 0 hingga F
#include
IO_Port_8bitmy8bitport(2, 3, 4, 5, 6, 7, 8, 9);//membuat objek port
batalkan pengaturan()
my8bitport.set_IO_direction('O');// setel portdirection
}
void loop()
int saya;
for(i=0;i<16;i++) //kirim data 0 sampai 15 untuk ditampilkan
{ // pola biner
myport.send_8bit_data(i);
delay(200);
}
}
Contoh3:tunjukkan level tegangan input analog pada tampilan grafik batang LED 8-bit
#include
IO_Port_8bitmyport(2, 3, 4, 5, 6, 7, 8, 9, 'O'); //membuat objek port keluaran
batalkan pengaturan()
myport.send_8bit_data(255); //mengedipkan semua LED grafik batang sekali
delay(500);
myport.send_8bit_data(0);
}
void loop()
int tingkat;
level =analogRead(A0); //membaca tegangan input analog
level =peta(level, 0, 1023, 0, 80);// batasi tegangan dari 0 hingga 80
//menambah atau mengurangi level grafik batang sesuai input
if((level<80) &&(level>70))myport.send_8bit_data(255);
elseif((level<=70) &&(level>60)) myport.send_8bit_data(127);
elseif((level<=60) &&(level>50)) myport.send_8bit_data(63);
elseif((level<=50) &&(level>40)) myport.send_8bit_data(31);
elseif((level<=40) &&(level>30)) myport.send_8bit_data(15);
elseif((level<=30) &&(level>20)) myport.send_8bit_data(7);
elseif((level<=20) &&(level>10))myport.send_8bit_data(3);
elseif((level<=10) &&(level>0)) myport.send_8bit_data(1);
elseif(level==0) myport.send_8bit_data(0);
}
Contoh4:dapatkan input digital 8-bit dari sakelar DIP dan nilai tampilan pada monitor serial
#include
IO_Port_8bitmyport(2, 3, 4, 5, 6, 7, 8, 9); //buat objek port
batalkan pengaturan()
Serial.begin(9600); // inisialisasi komunikasi serial.
myport.set_IO_direction('Saya'); // setel arah port
Serial.println("8-bit input porttest");
}
void loop()
int input_byt;
input_byt =myport.get_8bit_data(); // membaca status sakelar DIP
Serial.print("masukan yang diterima ="); // dan
Serial.println(input_byt); // tampilkan nilainya
penundaan(1000);
}
Kode
- Perpustakaan Arduino untuk Port IO 8-bit
Perpustakaan Arduino untuk Port IO 8-bitC/C++
library membuat port IO 8-bit dari pin arduino dan mengirim/mendapatkan output/input digital 8bitTanpa pratinjau (hanya unduh).
Skema
Port IO mengirim atau mendapatkan data 8bit langsung dari pin yang berbeda