Site icon Elektrologi

Interupsi Eksternal pada Arduino Nano ATmega328

Pada Arduino terdapat beberapa mekanisme input di antaranya:

Di antara mekanisme input tersebut, yang mudah dipakai adalah digitalRead() dan analogRead(). Pada tulisan ini dibahas contoh sederhana untuk memakai input interupsi.

Deskripsi perangkat keras:

Catatan

Cara kerja perangkat lunak

Berikut ini contoh software yang menggunakan interupsi untuk input.

// ide dari http://www.rhelectronics.net/store/radiation-detector-geiger-counter-diy-kit-second-edition.html
unsigned long counts; //variable for GM Tube events
unsigned long previousMillis; //variable for time measurement

void impulse() { // dipanggil setiap ada sinyal FALLING di pin 2
    counts++;
}

#define LOG_PERIOD 1000  // cetak tiap detik

void setup() { //setup subprocedure
    counts = 0;
    Serial.begin(9600);
    pinMode(2, INPUT);  // tidak perlu sebenarnya, untuk jaga-jaga saja.
    digitalWrite(2, HIGH); // mengaktifkan internal pull up resistor
    attachInterrupt(digitalPinToInterrupt(2), impulse, FALLING); //define external interrupts
    Serial.println("Start counter");
}

void loop() { //main cycle
    unsigned long currentMillis = millis();
    if (currentMillis - previousMillis > LOG_PERIOD) {
        previousMillis = currentMillis;
        Serial.println(counts);
        counts = 0;
    }
}

Pada referensi fungsi attachInterrupt() terdapat contoh program yang menggunakan interupsi, namun di situ belum menggunakan port serial u untuk mengirim data, sehingga hasil penekanan tombol susah diamati.

Berikut ini foto percobaan dengan Arduino Nano dan sebuah switch push button.

Arduino Nano yang dihubungkan ke sebuah switch push button

 

Switch push button

Berikut ini contoh data yang dikirim melalui port serial, berisi jumlah penekanan tombol.

Output serial dari program

Referensi

Exit mobile version