Rabu, 01 Mei 2024

LAPORAN AKHIR 2 MODUL 3




Laporan Akhir 2 Modul 3
(Percobaan 2)

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

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Arduino Uno


2. Seven Segment 

   
3. Dipswitch


Diagram Blok:


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :

Prinsip Kerja :
 
Rangkaian ini terdiri dari dua Arduino yaitu master dan slave yang berkomunikasi satu sama lain melalui SPI. Master Arduino bertindak sebagai pemancar data yang terhubung ke saklar celup, sedangkan budak bertindak sebagai penerima data dan mengontrol tujuh segmen. Komunikasi antara keduanya memungkinkan data digital dikirim dari, misalnya, pin 7 master. Ketika pin 7 aktif, master mengirimkan data "7" ke slave, yang kemudian menunjukkan angka "7" di segmen tujuh. . . Jika tidak ada sakelar celup yang aktif, angka yang ditampilkan adalah 1 atau disesuaikan dengan kontak yang aktif. Dengan demikian, rangkaian ini memungkinkan kendali jarak jauh tujuh segmen pada slave, dimana master mengirimkan instruksi digital melalui SPI dan slave menerjemahkan instruksi tersebut untuk menampilkan nomor tujuh segmen sesuai kondisi yang ditentukan..

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 

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 Dipswitch klik disini
Datasheet 7 Segment klik disini

Tidak ada komentar:

Posting Komentar

MODUL 4 MIKRO TB

PERANCANGAN SISTEM KONTROL TANAMAN BAWANG BERBASIS MIKROKONTROLLER [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1.Pendahuluan 2. Tujuan ...