Prak uP&uC : M2 TP2




Tugas Pendahuluan 2 Modul 2
(Percobaan 2 Kondisi 4)

1. Prosedur
[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Arduino



2. Dip Switch







3. LED




4. Resistor






5.  LCD




6. Ground







7.  Potensiometer






8. IC I2C





9. Power supply










Diagram Blok:








3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :




Prinsip Kerja :

Pada percobaan 2 ini membahas bagaimana interrupt arduino dengan menggunakan komponen LCD, LED dan sebuah motor DC. Namun disini tidak menggunakan motor DC digantikan dengan dipswitch. Dengan bunyi kondisi "LCD menampilkan counting dari 0 sampai 50, setiap counting kelipatan bilangan prima LED running dari LED pertama hingga keenam selama 4 detik, ketika diberi interrupt maka counting diulang dari 0 dan LED hidup semuanya selama 3 detik".

LCD sendiri menggunakan LCD I2C yaitu cukup dengan menghubungkan pin SDA dan SCL ke I2C agar dapat menghemat penggunaan pin arduino, serta interrupt yang berupa switch disetting pull down pada pin 2, serta 6 led sebagai output atau tampilan untuk menyesuaikan kondisi. 

Saat rangkaian dijalankan, counting akan langsung bermulai dari 0 dan terus bertambah satu per satu nya dengan batasan maksimal counting nya adalah 50. Disaat bilangan prima tercapai seperti angka 2,3,5 dan lainnya maka dapat dilihat LED running atau LED hidup satu per satu dari LED pertama hingga LED keenam selama kurang lebih beberapa detik. Namun jika angka bukan prima seperti 4, tidak ada respon apa-apa pada LED dan counting tetap dilanjutkan. Ketika pada saat counting berjalan, interrupt diberikan dengan memberikan logika pull down (dari kondisi switch on menjadi off) pada rangkaian counting terhenti dan semua LED akan menyala selama beberapa detik, setelah 3 detik semua LED mati dan counting diulang dari awal. Pada program bisa dilihat penggunaan interrupt pada fungsi attachInterrupt() yang didalam kurung nya berisi pin yang dimaksudkan sebagai interrupt, perintah atau fungsi void yang diinginkan dari interrupt dan tipe dari input interrupt apakah falling atau raising.

4. Flowchart dan Listing Program [Kembali]

Flowchart :




Listing Program :

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define LED_COUNT 6
const int LED_PINS[LED_COUNT] = {13, 12, 11, 10, 9, 8};
const int SWITCH_PIN = 2;

LiquidCrystal_I2C lcd(0x27, 16, 2);  

volatile bool switchActivated = false;
volatile int counter = 0; 

void setup() {
  Serial.begin(9600);

  for (int i = 0; i < LED_COUNT; ++i) {
    pinMode(LED_PINS[i], OUTPUT);
  }
  pinMode(SWITCH_PIN, INPUT_PULLUP); 

  lcd.init();
  lcd.backlight();
  lcd.begin(16, 2);

  attachInterrupt(digitalPinToInterrupt(SWITCH_PIN), resetCounter, FALLING); 
}

void loop() {
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Counter: ");
  lcd.print(counter);

  if (switchActivated) {
    counter = 0; 
    switchActivated = false;
    for (int i = 0; i < LED_COUNT; ++i) {
      digitalWrite(LED_PINS[i], HIGH);
    }
    delay(3000); 
    for (int i = 0; i < LED_COUNT; ++i) {
      digitalWrite(LED_PINS[i], LOW);
    }
  }

  if (counter <= 50) {
    Serial.println(counter);
    delay(1000);
  } else {
    counter = 0;
    Serial.println(counter);
    delay(1000);
  }

  if (checkPrime(counter)) {
    activateLEDs();
  }

  counter++;

  if (counter > 50) {
    counter = 0;
    delay(3000); 
  }
}

bool checkPrime(int n) {
  if (n <= 1) return false;
  if (n <= 3) return true;
  if (n % 2 == 0 || n % 3 == 0) return false;
  for (int i = 5; i * i <= n; i += 6) {
    if (n % i == 0 || n % (i + 2) == 0) return false;
  }
  return true;
}

void activateLEDs() {
  for (int i = 0; i < LED_COUNT; ++i) {
    digitalWrite(LED_PINS[i], HIGH);
    delay(400);
    digitalWrite(LED_PINS[i], LOW);
  }
}

void resetCounter() {
  switchActivated = true;
}


5. Kondisi [Kembali]

Percobaan 2 Kondisi 4
"Motor ke kanan,LCD menampilkan counting dari 0 sampai 50, setiap counting kelipatan bilangan prima LED running dari led pertama hingga keenam selama 4 detik,ketika diberi interrupt maka counting diulang dari 0 dan led hidup semuanya selama 3 detik"


6. Video Simulasi [Kembali]








7. Download File [Kembali]

File Rangkaian klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet Button klik disini


Tidak ada komentar:

Posting Komentar

Among Us - Crewmates

  BAHAN PRESENTASI MATA KULIAH SISTEM DIGITAL 2023 OLEH : Raras Yulia Rosandi 2110951012 DOSEN PENGAMPU : Dr. Ir. Darwison, ST, MT JURUSAN T...