TP M3 2

 




Tugas Pendahuluan 2 Modul 3
( Percobaan 2 Kondisi 2 )

1. Prosedur 

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 

Hardware :
1.Arduino Uno



2.Dipswitch


3.Seven Segment 2 Digit




4.Resistor

Diagram Blok :



3. Rangkaian Simulasi dan Prinsip Kerja

Rangkaian Simulasi :





Prinsip Kerja :

Dalam pengujian dengan dua kondisi yang dilakukan, dua Arduino Uno digunakan, di mana satu difungsikan sebagai perangkat utama dan yang lainnya sebagai perangkat tambahan. Arduino utama terkoneksi dengan input melalui dipswitch, sedangkan Arduino tambahan terhubung dengan output menggunakan 7-Segment 2 digit. Peran utama dari Arduino Master adalah untuk mengirimkan instruksi dari sumber inputnya ke Arduino tambahan, yang kemudian akan menjalankan instruksi tersebut sebagai hasil keluaran. Komunikasi antara keduanya diatur melalui sistem SPI, di mana koneksi antara pin 10 hingga 13 pada Arduino utama terhubung dengan pin 10 hingga 13 pada Arduino tambahan.

Ketika dua saklar diaktifkan pada dipswitch, sistem menghasilkan output yang responsif dengan menampilkan angka pada seven segment yang berubah secara bergantian antara digit pertama dan kedua dari 0 hingga 9. Proses ini menunjukkan kemampuan adaptasi output terhadap variasi input yang terjadi selama pengujian, mengindikasikan kesuksesan interaksi yang terjadi antara Arduino utama dan tambahan dalam merespons perintah yang diberikan dari sumber input. Dengan demikian, dapat disimpulkan bahwa sistem mampu merespons dengan baik terhadap perubahan kondisi input dan menghasilkan output yang sesuai dengan prinsip pengaturan yang telah ditetapkan..

4. Flowchart dan Listing Program

Flowchart :

Arduino Master
Arduino Slave


Listing Program :

Master

#include <SPI.h> // Mengimpor library SPI untuk komunikasi serial

// Mendeklarasikan pin-pin untuk dip switch
int dip[] = {2, 3, 4, 5, 6, 7, 8, 9};
int dipvalue[] = {}; // Array untuk menyimpan nilai pembacaan dari dip switch
int dipCount = 0; // Variabel untuk menghitung jumlah dip switch yang aktif

void setup() {
  Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
  // Mengatur semua pin dip switch sebagai input dengan pull-up resistor
  for (int i = 0; i < 8; i++) {
    pinMode(dip[i], INPUT_PULLUP);
  }
  // Memulai komunikasi SPI
  SPI.begin();
  // Mengatur pembagi clock SPI untuk mengontrol kecepatan data transfer
  SPI.setClockDivider(SPI_CLOCK_DIV8);
  // Mengatur Slave Select (SS) pin ke HIGH. Ini menandakan bahwa tidak ada komunikasi SPI yang aktif
  digitalWrite(SS, HIGH);
}

void loop() {
  byte Mastersend = 0; // Variabel untuk menyimpan data yang akan dikirim ke slave
  // Membaca nilai dari setiap dip switch dan menghitung berapa yang aktif (dalam posisi LOW)
  for (int i = 0; i < 8; i++) {
    dipvalue[i] = digitalRead(dip[i]);
    if (dipvalue[i] == LOW) {
      dipCount++; // Menambahkan jumlah dip switch yang aktif
    }
  }

  // Mengatur nilai Mastersend berdasarkan jumlah dip switch yang aktif
  if (dipCount == 1) {
    Mastersend = 1; // Jika hanya satu dip switch yang aktif, kirim 1
  } else if (dipCount == 4) {
    Mastersend = 4; // Jika empat dip switch yang aktif, kirim 4
  }

  dipCount = 0; // Mereset jumlah dip switch yang aktif untuk iterasi berikutnya

  // Mengirim nilai Mastersend ke slave melalui SPI
  digitalWrite(SS, LOW); // Mengaktifkan slave dengan mengatur SS ke LOW
  SPI.transfer(Mastersend); // Mengirim data ke slave
  delay(100); // Memberikan delay untuk memastikan slave memiliki waktu yang cukup untuk memproses data yang diterima
}

 Slave

#include <SPI.h>

#define a 9
#define b 8
#define c 7
#define d 6
#define e 5
#define f 4
#define g 3
#define dp 2
#define D1 A0
#define D2 A1

const int segmentPins[] = {a, b, c, d, e, f, g}; // Koneksi digit 1 ke pin 1, digit 2 ke pin 0

volatile boolean received = false;
volatile byte Slavereceived;

void setup() {
  pinMode(D1, OUTPUT);
  pinMode(D2, OUTPUT);
  Serial.begin(9600);
  for (int i = 0; i < 7; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
  SPCR |= _BV(SPE);
  SPI.attachInterrupt();
}

ISR(SPI_STC_vect) {
  Slavereceived = SPDR;
  received = true;
}

void displayCharacter(int digit, int digitPosition) {
  byte patterns[10][7] = {
    {0, 0, 0, 0, 0, 0, 1}, // 0
    {1, 0, 0, 1, 1, 1, 1}, // 1
    {0, 0, 1, 0, 0, 1, 0}, // 2
    {0, 0, 0, 0, 1, 1, 0}, // 3
    {1, 0, 0, 1, 1, 0, 0}, // 4 
    {0, 1, 0, 0, 1, 0, 0}, // 5 
    {0, 1, 0, 0, 0, 0, 0}, // 6
    {0, 0, 0, 1, 1, 1, 1}, // 7
    {0, 0, 0, 0, 0, 0, 0}, // 8
    {0, 0, 0, 0, 1, 0, 0}  // 9
  };

  // Write the pattern to the segment pins
  for (int i = 0; i < 7; i++) {
    digitalWrite(segmentPins[i], patterns[digit][i]);
  }

  // Aktifkan digit yang sesuai
  if (digitPosition == D1) {
    digitalWrite(D1, HIGH);
    digitalWrite(D2, LOW);
  } else if (digitPosition == D2) {
    digitalWrite(D1, LOW);
    digitalWrite(D2, HIGH);
  }

  delay(5); // Delay kecil untuk memastikan penampilan stabil
}

void loop() {
  if (received) {
    if (Slavereceived == 1) {
      displayCharacter(8, D1); // Menampilkan angka 1 hanya pada digit 1
      displayCharacter(0, D2); // Matikan digit 2
    } else if (Slavereceived == 4) {
      displayCharacter(4, D1); // Menampilkan angka 4 pada kedua digit
      displayCharacter(4, D2);
    }
    delay(100);
    received = false;
  }
}


5. Kondisi 

Percobaan 2 Kondisi 6
(Setiap 2 switch yang aktif akan melakukan counting 0 - 9 pada digit 1 dan 2 secara berseling)

6. Video Simulasi 



7. Download File 

HTML                                  klik disini
File Rangkaian                     klik disini
Video Percobaan                  klik disini
Listing Program slave          klik disini
Listing Program master       klik disini
Datasheet Arduino               klik disini
Datasheet Dipswitch            klik disini
Datasheet 7 Segment           klik disini

Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

MODUL 3 KOMUNIKASI

DAFTAR ISI      1. Pendahuluan      2. Tujuan      3. Alat dan Bahan      4. Dasar Teori      5. Percobaan Percobaan ... T...