Laporan Awal 2 Modul 3






1. Prosedur
[Kembali]

1. Rangkai semua komponen
2. Buat program di aplikasi arduino IDE
3. Setelah selesai masukkan program ke arduino 
4. Jalankan program pada simulasi dan cobakan dengan modul
5. Selesai

2. Hardware dan Diagram Blok [Kembali]

Hardware :
Arduino Uno




 Seven Segment





Deep Switch  









Diagram Blok :



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :


                                    



Prinsip Kerja :

    Pada praktikum menggunakan dua Arduino Uno, dengan satu Arduino bertindak sebagai master dan Arduino lainnya bertindak sebagai penerima. Master Arduino terhubung ke bagian input, yaitu saklar DIP. Sedangkan slave Arduino dihubungkan dengan output 7 segmen 2 digit. Master Arduino bertindak sebagai Arduino yang meneruskan perintah ke slave Arduino melalui input. Di sisi lain, slave Arduino bertindak sebagai penerima dan menjalankan perintah dalam bentuk keluaran.

    Pada rangkaian ini kedua Arduino berkomunikasi satu sama lain menggunakan sistem SPI, dengan pin 10-13 dari master Arduino dihubungkan ke pin 10-13 dari Arduino slave. Jika 2 saklar pada saklar DIP aktif, keluarannya berupa angka pada digit ke 1 dalam tujuh segmen 2 digit . Jika saklar DIP mempunyai tiga saklar aktif, maka 7 segmen akan menampilkan angka 3 pada ke 2 digit (kedua digit 7 segmen aktif).


4. Flowchart dan Listing Program [Kembali]

Flowchart :

Master


 Slave


Listing Program :

Master

#include <SPI.h>

int dip[] = {2, 3, 4, 5, 6, 7, 8, 9};
int dipvalue[] = {};
int dipCount = 0;

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < 8; i++) {
    pinMode(dip[i], INPUT_PULLUP);
  }
  SPI.begin();
  SPI.setClockDivider(SPI_CLOCK_DIV8);
  digitalWrite(SS, HIGH);
}

void loop() {
  byte Mastersend = 0;
  for (int i = 0; i < 8; i++) {
    dipvalue[i] = digitalRead(dip[i]);
    if (dipvalue[i] == LOW) {
      dipCount++;
    }
  }

  if (dipCount % 2 == 0) {
    Mastersend = dipCount / 2; // Membagi jumlah dip switch yang aktif menjadi 2
  } else if (dipCount % 3 == 0) {
    Mastersend = dipCount / 3; // Membagi jumlah dip switch yang aktif menjadi 3
  }

  dipCount = 0;

  digitalWrite(SS, LOW);
  SPI.transfer(Mastersend);
  delay(100);
}


 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 A1
#define D2 A3

const int segmentPins[] = {a, b, c, d, e, f, g};

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

    // patterns untuk angka 2, 3, ..., 9
  };

  for (int i = 0; i < 7; i++) {
    digitalWrite(segmentPins[i], patterns[digit][i]);
  }

  if (digitPosition == D1) {
    digitalWrite(D1, HIGH);
    digitalWrite(D2, LOW);
  } else if (digitPosition == D2) {
    digitalWrite(D1, LOW);
    digitalWrite(D2, HIGH);
  }

  delay(50);
}

void loop() {
  if (received) {
    if (Slavereceived == 1) {
      displayCharacter(8, D1);
      displayCharacter(0, D2);
    } else if (Slavereceived == 2) { // Menampilkan angka 2 jika diterima dari master
      displayCharacter(2, D1);
      displayCharacter(0, D2);
    } else if (Slavereceived == 3) { // Menampilkan angka 3 jika diterima dari master
      displayCharacter(0, D1);
      displayCharacter(3, D2);
    } else if (Slavereceived == 4) {
      displayCharacter(4, D1);
      displayCharacter(4, D2);
    }
    delay(100);
    received = false;
  }
}

5. Kondisi [Kembali]

Percobaan 2 (Komunikasi SPI Menggunakan Arduino - sesuai rangkaian modul) er


6. Video Simulasi [Kembali]




7. Download File [Kembali]

HTML                                  klik disini
Video Percobaan                  klik disini
Listing Program                   klik disini
Datasheet Arduino               klik disini
Datasheet Dipswitch            klik disini
Datasheet 7 Segment           klik disini

Tidak ada komentar:

Posting Komentar