Sabtu, 27 April 2024

TUGAS PENDAHULUAN 1 MODUL 3




Tugas Pendahuluan 1 Modul 3
(Percobaan 2 Kondisi 1)

1. Prosedur
[Kembali]

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 [Kembali]

Hardware :
1.Arduino Uno



2.Dipswitch


3.Seven Segment 2 Digit




4.Resistor



Diagram Blok :



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :

Prinsip Kerja :
 
Pada percobaan 2 kondisi 1 digunakan dua Unit Arduino, satu Arduino bertindak sebagai master dan satu lagi sebagai slave. Master arduino dihubungkan dengan bagian input yaitu dip switch. Pada saat yang sama, budak Arduino dihubungkan ke bagian keluaran dengan 7-segmen 2 digit. Arduino Master bertindak sebagai Arduino yang memberikan perintah dari inputnya ke Arduino Slave. sedangkan slave Arduino berperan sebagai penerima / yang mengeksekusi perintah dalam bentuk output. Pada rangkaian ini, Arduino berkomunikasi satu sama lain menggunakan sistem SPI, dimana pin 10-13 master Arduino dihubungkan ke pin 10-13 dari slave Arduino.Saat kedua dip switch aktif maka output yang dihasilkan adalah 1 dari 7 Nomor 2 digit dalam segmen bernomor (hanya 1 nomor yang aktif). Sedangkan jika saklar celup memiliki 3 saklar yang aktif maka ketujuh segmen tersebut akan menunjukkan angka yang berbeda pada digit kedua..

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 Kondisi 1
Setiap 2 Switch aktif muncul angka berbeda pada digit ke 1, Setiap 3 Switch aktif  muncul angka berbeda pada digit ke 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 ...