Minggu, 28 April 2024

LA 2 M3

 



Percobaan 3

 Komunikasi I2C Menggunakan Arduino


1. Foto Hardware dan Diagram Blok [Kembali]

       
  1. Arduino Uno



        2. Keypad




      3. LCD

     

Diagram Blok:




2. Prosedur Percobaan  [Kembali]

Rangkai semua komponen 
+ Buka Arduino IDE dan masukan listing Program
+ Upload program ke arduino
+ jalankan program pada simulasi dan cobakan dengan modul



Prinsip Kerja

       Pada praktikum Modul 3 percobaan 3 ini terdapat 2 arduino yaitu master dan slave. Master bertanggung jawab untuk mengirimkan pesan yang diinput dari keypad, sementara slave sebagai penerima dan menampilkan pesan tersebut pada LCD. Keduanya berkomunikasi melalui komunikasi I2C yang memungkinkan perangkat mikrokontroler saling berkomunikasi secara digital melalui pin SDA dan SCL.

    Arduino Master terhubung pada sebuah keypad untuk memasukkan karakter. Setiap kali tombol ditekan, karakternya dikirimkan melalui jalur I2C ke Slave.  Selanjutnya data diterima oleh Arduino Slave sesuai dengan karater atau tombol yang ditekan pada keypad. Jika panjang pesan sudah lebih dari 16 karakter, karakter pertama akan dipotong agar pesan tetap dalam batas 16 karakter. Setelah itu, pesan akan ditampilkan pada LCD jika karakter yang ditekan lebih dari 1 maka karakter baru akan muncul di beseblah kanan karakter sebelumnya.

     Dengan prinsip kerja ini, data dapat dikirim dari Arduino Master ke Arduino Slave melalui jalur I2C, dan Arduino Slave akan menampilkan pesan yang diterima pada layar LCD. 

4. Flowchart dan Listing Program [Kembali]

Master Arduino:


Slave Arduino: 

Listing Program:

Master
// Master #include <Keypad.h> // Library untuk keypad #include <Wire.h> // Library untuk I2C communication // Deklarasi jumlah baris dan kolom keypad beserta karakternya const byte ROWS = 4; const byte COLS = 3; char keys[ROWS][COLS] = { {'A', 'B', 'C'}, {'D', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; // Pin yang digunakan untuk menghubungkan keypad dengan Arduino char rowPins[ROWS] = {9, 8, 7, 6}; char colPins[COLS] = {5, 4, 3}; // Inisialisasi objek Keypad Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); void setup() { Wire.begin(); // Memulai komunikasi I2C } void loop() { // Mendapatkan karakter yang ditekan pada keypad char key = keypad.getKey(); if (key) { // Mengirim karakter melalui komunikasi I2C Wire.beginTransmission(4); // Mulai transmisi ke perangkat dengan alamat #4 Wire.write(key); Wire.endTransmission(); // Berhenti transmisi } }


Slave

// Slave Versi Biasa #include <LiquidCrystal.h> #include <Wire.h> // Inisialisasi objek lcd dengan pin yang sesuai LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Variabel untuk menyimpan posisi kolom dan baris saat ini int col = 0; // Kolom saat ini (dimulai dari 0) int row = 0; // Baris saat ini (dimulai dari 0) void setup() { // Mulai LCD dengan ukuran 16x2 lcd.begin(16, 2); // Mulai komunikasi dengan bus I2C dengan alamat #4 Wire.begin(4); // Daftarkan fungsi receiveEvent() sebagai event ketika data diterima dari master Wire.onReceive(receiveEvent); // Mulai komunikasi serial dengan kecepatan 9600 bps Serial.begin(9600); } void loop() { // Tunda eksekusi program selama 100 milidetik delay(100); } // Fungsi yang dieksekusi ketika data diterima dari master void receiveEvent(int howMany) { // Baca data yang diterima sebagai karakter char c = Wire.read(); // Tampilkan karakter yang diterima melalui komunikasi serial Serial.println(c); // Periksa apakah posisi kolom sudah melebihi batas LCD if (col >= 16) { col = 0; // Reset ke posisi kolom awal row++; // Pindah ke baris berikutnya // Periksa apakah sudah mencapai batas baris LCD if (row >= 2) { row = 0; // Kembali ke baris awal } // Set posisi kursor LCD ke posisi baru lcd.setCursor(col, row); } // Tampilkan karakter yang diterima ke LCD lcd.write(c); // Pindah ke kolom berikutnya col++; }


5. Kondisi [Kembali]

Ketika keypad di tekan maka akan menampilkan karakter pada LCD, karakter yang di tampilkan mengalami scroll ke kanan pada kolom pertama.


᭒ HTML↠ klik disini

Rangkaian ↠ klik disini

᭒ Video Percobaan↠ klik disini

᭒ Program Master↠ klik disini

᭒ Program Slave↠ klik disini

᭒ Datasheet Arduino↠ klik disini

᭒ Datasheet LCD↠ klik disini

᭒ Datasheet Keypad↠ klik disini


LA 1 M3

 



Percobaan 1

 Komunikasi UART Menggunakan Arduino


1. Foto Hardware dan Diagram Blok [Kembali]

       
  1. Arduino Uno



        2. Push Button




      3. LED



     

Diagram Blok:



2. Prosedur Percobaan  [Kembali]

Rangkai semua komponen 
+ Buka Arduino IDE dan masukan listing Program
+ Upload program ke arduino
+ jalankan program pada simulasi dan cobakan dengan modul




Prinsip Kerja

    Pada rangkaian praktikum percobaan 1, ini terdapat 2 arduino yaitu master dan slave.  Master bertindak sebagai pengirim data, sementara slave sebagai penerima data dan pengendali LED.  Keduanya berkomunikasi melalui UART (Universal Asynchronous Receiver Transmitter), antarmuka komunikasi serial yang memungkinkan dua perangkat untuk berkomunikasi satu sama lain.

    Arduino master akan mengirimkan data melalui pin Tx(Transmit) dan diterima oleh arduino slave melalui pin Rx(Receive) melalui jalur komunikasi serial dengan representasi digital dari keadaan switch.  Jika switch aktif, data yang dikirim adalah angka 1 (high), sebaliknya jika tidak aktif data yang dikirim adalah angka 0 (low). Pada proses penguploadan program untuk arduino dilakukan dengan memutuskan  kabel penghubung antara pin Tx dan Rx (pin 1 dan 0) terlebih dahulu, setelah terupload baru dihubungkan kembali. Selanjutnya di pihak slave, data yang diterima dari master melalui pin RX diubah menjadi nilai digital 1 atau 0.  Nilai inilah yang kemudian menentukan LED mana yang akan menyala. 

    Dengan demikian, rangkaian ini memungkinkan master untuk mengontrol LED pada slave dari jarak jauh.  Master mengirimkan instruksi digital melalui UART, dan slave menerjemahkan instruksi tersebut untuk menyalakan LED sesuai dengan pola yang telah ditentukan.

4. Flowchart dan Listing Program [Kembali]

Master Arduino:



Slave Arduino: 

Listing Program:

Master
//MASTER #define DS1 2 #define DS2 3 #define DS3 4 #define DS4 5 #define DS5 6 #define DS6 7 #define DS7 8 #define DS8 9 bool b1,b2,b3,b4,b5,b6,b7,b8; void setup() { Serial.begin(9600); pinMode(DS1, INPUT_PULLUP); pinMode(DS2, INPUT_PULLUP); pinMode(DS3, INPUT_PULLUP); pinMode(DS4, INPUT_PULLUP); pinMode(DS5, INPUT_PULLUP); pinMode(DS6, INPUT_PULLUP); pinMode(DS7, INPUT_PULLUP); pinMode(DS8, INPUT_PULLUP); } void loop() { int b8 = digitalRead(DS8); int b7 = digitalRead(DS7); int b6 = digitalRead(DS6); int b5 = digitalRead(DS5); int b4 = digitalRead(DS4); int b3 = digitalRead(DS3); int b2 = digitalRead(DS2); int b1 = digitalRead(DS1); // Hidupkan LED sesuai dengan tombol yang ditekan if (b8 == LOW) { Serial.write('8'); } else if (b7 == LOW) { Serial.write('7'); } else if (b6 == LOW) { Serial.write('6'); } else if (b5 == LOW) { Serial.write('5'); } else if (b4 == LOW) { Serial.write('4'); } else if (b3 == LOW) { Serial.write('3'); } else if (b2 == LOW) { Serial.write('2'); } else if (b1 == LOW) { Serial.write('1'); } delay(20); }


Slave

//SLAVE int led[] = {2, 3, 4, 5, 6, 7, 8, 9}; char message; void setup() { Serial.begin(9600); for (int i = 0; i < 8; i++) { pinMode(led[i], OUTPUT); } } void loop() { if (Serial.available()) { message = Serial.read(); if (message == '1') { digitalWrite(led[0], 1); } else if (message == '2') { digitalWrite(led[1], 1); } else if (message == '3') { digitalWrite(led[2], 1); } else if (message == '4') { digitalWrite(led[3], 1); } else if (message == '5') { digitalWrite(led[4], 1); } else if (message == '6') { digitalWrite(led[5], 1); } else if (message == '7') { digitalWrite(led[6], 1); } else if (message == '8') { digitalWrite(led[7], 1); } } delay(20); digitalWrite(led[0], 0); digitalWrite(led[1], 0); digitalWrite(led[2], 0); digitalWrite(led[3], 0); digitalWrite(led[4], 0); digitalWrite(led[5], 0); digitalWrite(led[6], 0); digitalWrite(led[7], 0); }




5. Kondisi [Kembali]

Ketika botton 1 ditekan maka led 1 akan mati sedangkan led lainnya hidup, begitu juga dengan led 2 dan seterusnya.

᭒ HTML↠ klik disini

Rangkaian ↠ klik disini

᭒ Video Percobaan↠ klik disini

᭒ Program Master↠ klik disini

᭒ Program Slave↠ klik disini

᭒ Datasheet Arduino↠ klik disini

᭒ Datasheet LED↠ klik disini

᭒ Datasheet Push Button ↠ klik disini

    

MODUL 4

Smart Parking Area [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. ...