#include <LiquidCrystal.h> //memanggil library untuklcd
#define FOSC 16000000 //menetapkannilai FOSC bernilai 16000000
LiquidCrystallcd(2, 3, 4, 5, 6, 7); // inisialisasi pin lcd
String dataSerial; //mendekelarasikandataSerialsebagai string
voidinitSerial(intbaudrate)
{
intubrr = FOSC/16/baudrate-1;
// Mengisi register UBRR0H dan UBRR0L untukmenentukanbaudrate UBRR0H |= ubrr>>8;
UBRR0L |= ubrr;
// Mengaktifkansaluran transmitter dan receiver
UCSR0B |= (1<<RXEN0)|(1<<TXEN0);
// Menggunakan format data 8 bit
UCSR0C |= (0<<UCSZ02)|(1<<UCSZ01)|(1<<UCSZ00);
// Menggunakan 1 stop bit
UCSR0C |= (0<<USBS0);
// No Parity
UCSR0C |= (0<<UPM01)|(0<<UPM00);
// Mengaktifkan RX interrupt
UCSR0B |= (1<<RXCIE0);
}
// Rutin yang akandijalankanjikaterjadiinterupsi
ISR(USART_RX_vect){
char data = UDR0;
if(data=='\n')
{
lcd.clear(); // tampilanlcd di hapus
lcd.setCursor(0,0); //Menampilkan text padabarispertama LCDlcd.print("Incoming Data"); //Menampilkan text “Incoming Data” padabarispertama di LCD
lcd.setCursor(0,1); //Menampilkan text padabariskedua LCD
lcd.print(dataSerial); //Menampilkan data ygdikirimmelalui serial
dataSerial = "";
}
Else
{
if(data!='\r') //jika data tidakada
{
dataSerial += data; //Jikatidakada data makatampilkan text “data”
}
}
}
void setup() //settinganawal program
{
initSerial(9600);
lcd.begin(16,2); // tampilanlcd (kolom , baris)
lcd.clear(); // tampilanlcd di hapus
sei();
}
void loop() //program looping
{
}
- Perbedaan antara INTERUPSI dengan POOLING adalah Suatu kondisi yang memicu atau memaksa sitem mikrokontroler untuk menghentikan program utama dan memaksa menjalankan interupsi, SEDANGKAN sitem POOLING adalah kondisi arduino menunggu pengiriman data dari komunikasi serial.