Jumat, 03 Mei 2024

Laporan Akhir 1 (Percobaan 6)






1. Prosedur
[Kembali]
    1. Rangkai semua komponen sesuai percobaan.

    2. Buat program di aplikasi arduino IDE.

    3. Setelah selesai masukkan program ke arduino.

    4. Jalankan program pada rangkaian dan cobakan sesuai dengan modul.

    5. Selesai.


2. Hardware dan diagram blok [Kembali]

Hardware

1. Arduino Uno


2. Dip Switch

3. Max7219

4. Dot Matrix

Diagram Blok

3. Rangkaian simulasi dan prinsip kerja [Kembali]

    Rangkaian Simulasi

    Prinsip Kerja
    
 Percobaan 6 modul 3 memiliki dua Arduino Uno, Dipswitch 18 pin, IC Max 7219, dan dot matriks 8x8.
Arduino yang terhubung dengan DIPswitch dinyatakan sebagai master (pengontrol) dalam program, dan Arduino yang terhubung dengan Max 7219 dan dot matriks dinyatakan sebagai slave (dikendalikan) dalam program. Prinsip kerjanya adalah selama operasi rangkaian, Dipswitch yang diprogram sebagai master mengontrol keluaran matriks yang diprogram sebagai budak.Jika pin pertama sakelar dipswitch diaktifkan, baris pertama matriks titik akan aktif; jika pin pertama sakelar Dipswitch dinonaktifkan, baris pertama Dot Matrix aktif. Pin lainnya sesuai dengan baris yang sejalur dengan dilewati


4. Flowchart dan listing program [Kembali]

Flowchart


Listing Program

Master:
//Master
#include <SPI.h>

const int SS_PIN = 10; // Slave Select pin
const int DIP_Pins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // Pin DIP switch terhubung ke Arduino
byte patterns[8] = {0}; // Pola LED untuk ditampilkan

void setup() {
SPI.begin();
pinMode(SS_PIN, OUTPUT);
digitalWrite(SS_PIN, HIGH); // Tidak memilih slave saat ini
for (int i = 0; i < 8; i++) {
pinMode(DIP_Pins[i], INPUT_PULLUP); // Mengatur pin DIP switch sebagai input dengan pull-up resistor
}
}

void loop() {
// Membaca status DIP switch dan mengupdate pola LED
for (int i = 0; i < 8; i++) {
if (digitalRead(DIP_Pins[i]) == LOW) {
patterns[i] = B11111111; // Mengatur semua LED menyala jika sakelar diaktifkan
} else {
patterns[i] = 0; // Mengatur semua LED mati jika sakelar tidak diaktifkan
}
}

// Mengirim data pola LED ke slave
digitalWrite(SS_PIN, LOW); // Memilih slave
for (int i = 0; i < 8; i++) {
SPI.transfer(patterns[i]);
}
digitalWrite(SS_PIN, HIGH); // Melepas slave
delay(100); // Delay untuk tampilan LED stabil
}

Slave:
//Slave
#include <SPI.h>
#include <LedControl.h>

const int SS_PIN = 10; // Slave Select pin
LedControl lc = LedControl(2, 3, 4, 1); // Pin DIN, CLK, LOAD (CS), dan jumlah Dot Matrix yang dihubungkan ke Arduino

void setup() {
  SPI.begin();
  pinMode(SS_PIN, INPUT); // SS_PIN sebagai input agar Arduino berperan sebagai slave
  lc.shutdown(0, false); // Mengaktifkan display
  lc.setIntensity(0, 8); // Mengatur kecerahan LED (nilai antara 0 dan 15)
  lc.clearDisplay(0); // Membersihkan tampilan dot matrix
}

void loop() {
  if (digitalRead(SS_PIN) == LOW) { // Jika dipilih oleh master
    byte patterns[8];
    // Menerima data pola LED dari master
    for (int i = 0; i < 8; i++) {
      patterns[i] = SPI.transfer(0);
    }
    // Menampilkan pola LED pada dot matrix
    for (int row = 0; row < 8; row++) {
      lc.setRow(0, row, patterns[row]);
    }
  }
}

5. Kondisi [Kembali]

Modul 3 Percobaan 6 Komunikasi SPI

6. Video demo [Kembali]


7. Link Download [Kembali]

Download HTML klik disini
Download Simulasi Rangkaian klik disini
Download Video Demo klik disini
Download Listing Program klik disini
Download Library Arduino Uno klik disini
Donwload Datasheet Arduino Uno klik disini
Donwload Datasheet Max7219  klik disini
Donwload Datasheet Dot Matrix  klik disini
Download Datasheet Dipswitch klik disini.












Laporan Akhir 2 (Percobaan 5)






1. Prosedur
[Kembali]
    1. Rangkai semua komponen sesuai percobaan.

    2. Buat program di aplikasi arduino IDE.

    3. Setelah selesai masukkan program ke arduino.

    4. Jalankan program pada rangkaian dan cobakan sesuai dengan modul.

    5. Selesai.


2. Hardware dan diagram blok [Kembali]

Hardware

1. Arduino Uno


2. Virtual Terminal

3. Button

4. LED

Diagram Blok

3. Rangkaian simulasi dan prinsip kerja [Kembali]

    Rangkaian Simulasi

    Prinsip Kerja

 Percobaan 5 pada modul 3 memiliki dua buah Arduino Uno, dua buah Push Button yaitu berwarna kuning dan hijau, serta satu buah LED berwarna merah. Arduino yang terhubung dengan tombol dinyatakan sebagai master (pengontrol) dalam program, dan Arduino yang terhubung dengan LED dinyatakan sebagai slave (objek kontrol) dalam program. Prinsip kerjanya adalah selama pengoperasian rangkaian, tombol yang diprogram sebagai master  mengontrol output  LED yang diprogram sebagai budak. Menekan tombol hijau tiga kali akan mengaktifkan tombol kuning dan outputnya adalah LED hidup. Tekan tombol kuning sekali untuk menyalakan LED, tekan tombol kuning dua kali untuk menyalakan LED. Tekan tombol kuning  tiga kali untuk mematikan LED. Jika Anda menekan tombol hijau tiga kali lagi, tombol kuning akan dinonaktifkan.

    
4. Flowchart dan listing program [Kembali]

Flowchart


Listing Program

Master:
//Master
#include <Wire.h>
#define SLAVE_ADDRESS 9 // Slave Arduino address
#define BUTTON1 2 // Pin for the push button
#define BUTTON2 3
int buttonState1 = 0;
int buttonState2 = 0;
int buttonPrevState1 = 0;
int buttonPrevState2 = 0;
unsigned int counter = 0;
unsigned int count = 0;
void setup() {
 Wire.begin(); // Initialize I2C communication
 pinMode(BUTTON1, INPUT_PULLUP); // Set button pin as input with internal pull-up resistor
 pinMode(BUTTON2, INPUT_PULLUP);
 Serial.begin(9600); // Initialize serial communication for debugging
}
void loop() {
 buttonState1 = digitalRead(BUTTON1);
 buttonState2 = digitalRead(BUTTON2);

 if (buttonState2 != buttonPrevState2){
 if(buttonState2 == LOW){
 count++;
 }
 delay(50);
 }
 buttonPrevState2 = buttonState2;
 if(count > 3){
 count = 0;
 }
if(count % 2 == 0){
 if (buttonState1 != buttonPrevState1) {
 if (buttonState1 == LOW) {
 // Button is pressed
 counter++;
 Wire.beginTransmission(SLAVE_ADDRESS);
 Wire.write(counter); // Send command to the slave
 Wire.endTransmission();
 }
 delay(50); // Debouncing delay
 }

 buttonPrevState1 = buttonState1;
 if(counter > 3){
 counter = 0;
 }
}else if(count % 3 == 0){
 Wire.endTransmission();
}
Serial.print(count); Serial.println(counter);
}

Slave:
//Slave
#include <Wire.h>
#define LED_COUNT 8
#define LED_PIN_START 2 // Start pin for the LEDs
void setup() {
 Serial.begin(9600);
 Wire.begin(9); // Initialize I2C communication as Slave with address 9
 Wire.onReceive(receiveEvent); // Register event for receiving data
 for (int i = LED_PIN_START; i < LED_PIN_START + LED_COUNT; i++) {
 pinMode(i, OUTPUT); // Set LED pins as output
 }
}
void loop() {
 // Nothing to do here, all actions are performed in the receiveEvent function
}
void receiveEvent(int numBytes) {
 unsigned int command = Wire.read(); // Read incoming command from master
 Serial.println(command);
 delay(500);
 if (command == 1) {
 // Turn all LEDs ON
 for (int i = LED_PIN_START; i < LED_PIN_START + LED_COUNT; i++) {
 digitalWrite(i, HIGH);
 }
 } else if (command == 2) {
 // Turn all LEDs OFF
 for (int i = LED_PIN_START; i < LED_PIN_START + LED_COUNT; i++) {
 digitalWrite(i, LOW);
 }
 } else if (command == 3) {
 // Blink all LEDs
 for (int j = 0; j < 5; j++) { // Repeat the blinking 5 times
 for (int i = LED_PIN_START; i < LED_PIN_START + LED_COUNT; i++) {
 digitalWrite(i, HIGH);
 delay(1000);
 }
 delay(500); // Delay for ON state
 for (int i = LED_PIN_START; i < LED_PIN_START + LED_COUNT; i++) {
 digitalWrite(i, LOW);
 delay(1000);
 }
 delay(500); // Delay for OFF state
 }
 }
}

5. Kondisi [Kembali]

Modul 3 Percobaan 5 Komunikasi I2C

6. Video demo [Kembali]


7. Link Download [Kembali]

Download HTML klik disini
Download Simulasi Rangkaian klik disini
Download Video Demo klik disini
Download Listing Program klik disini
Download Library Arduino Uno klik disini
Donwload Datasheet Arduino Uno klik disini
Donwload Datasheet Push Button klik disini
Donwload Datasheet LED klik disini.












Entri yang Diunggulkan

  [ MENUJU AKHIR ] [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. Perc...