Senin, 29 April 2024


TP 1: Percobaan 1 Kondisi 6 



MODUL 3
PERCOBAAN 1 KONDISI 6

1. Prosedur
 [Kembali]

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

2. Hardware dan diagram blok [Kembali]
      a. hardware



1. Arduino Uno


Spesifikasi: 


2. Dipswitch
Spesifikasi: 


3. LED

            b. Digram Blok





3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

Gambar Rangkaian Sebelum Disimulasikan


Gambar Rangkaian Setelah Disimulasikan


PRINSIP KERJA
Master:
    Pada rangkaian  di atas merupakan perocbaan Komunikasi UART. Arduino yang diatas  bertindak sebagai master dalam sebuah sistem yang menggunakan beberapa tombol sebagai input. Setiap tombol dihubungkan ke pin digital pada Arduino dan masing-masing tombol memiliki aksi yang berbeda saat ditekan. yang mana pada pin DS1 sampai dengan DS4 merukanan tombol atau switch PULL DOWN dan DS5 sampai DS8 merupakan switch  PULL UP Saat program berjalan, Arduino akan terus memeriksa status setiap tombol dengan menggunakan fungsi digitalRead(). Jika sebuah tombol ditekan, Arduino akan mengirimkan karakter yang sesuai melalui koneksi serial (UART) dengan menggunakan fungsi Serial.write(). Karakter yang dikirimkan akan sesuai dengan tombol yang ditekan, dan akan dibaca oleh perangkat  arduino lain yang terhubung dengan Arduino melalui koneksi serial. Dalam simulasi pada Proteus ini ,jika  menekan 1 switch pull-down dan 4 switch pull up akan mengirimkan data ke slave ardunio dan nantinya mengaktifkan running led, dan jika 4 switch pull down dan 1 switch pull UP akan mengiriimkan kondisi ini ke slave arduino dan nantinya akan mengaktifkan blinking led

Slave:
    Pada arduino yang kedua betinda sebagai Slave dimana  nantinya akan menerima inputan dari Arduino master dan mengeluarkan output berupa LED.Prinsip kerja rangkaian  di atas adalah untuk mengontrol LED-LED yang terhubung ke pin Arduino berdasarkan status tombol-tombol yang terhubung ke pin digital lainnya. Pada setup(), pin-pin yang terhubung ke tombol-tombol diatur sebagai input dengan resistansi pull-up atau pull-down sesuai dengan kondisi. Pada loop(), program akan terus memeriksa status tombol-tombol tersebut. Jika kondisi tertentu terpenuhi, seperti empat tombol dalam kondisi pull-down atau tidak ada tombol dalam kondisi pull-up yang ditekan, maka program akan menjalankan aksi tertentu. Misalnya, untuk kondisi pull-down empat tombol, program akan menyalakan LED secara berurutan (running LED), sementara untuk kondisi ketika tidak ada tombol pull-down atau pull-up yang ditekan, program akan membuat LED-LED tertentu berkedip (blinking LED). Jika tidak ada kondisi yang terpenuhi, maka semua LED akan dimatikan. Dengan demikian, prinsip kerja rangkaian  tersebut adalah memantau status tombol-tombol dan mengatur tindakan yang sesuai terhadap LED-LED yang terhubung.

4. FlowChart [Kembali]

a. Listing Program 

Master

//Master Arduino
#include<SPI.h> //Library for SPI
int dip[] = {2,3,4,5,6,7,8,9};
int dipvalue[] = {};
void setup (){
Serial.begin(9600); //Starts Serial Communication at Baud Rate 115200
for(int i = 0; i < 8; i++){
pinMode(dip[i], INPUT_PULLUP);
}
SPI.begin(); //Begins the SPI commnuication
SPI.setClockDivider(SPI_CLOCK_DIV8); //Sets clock for SPI communication at 8 (16/8=2Mhz)
digitalWrite(SS,HIGH); // Setting SlaveSelect as HIGH (So master doesnt connnect with slave)
}

void loop(void) {
  byte Mastersend;
  int x = 1;
  int activeSwitches = 0; // variabel untuk menghitung jumlah saklar yang aktif

  // Membaca status saklar dan menghitung berapa yang aktif
  for (int i = 0; i < 8; i++) {
    dipvalue[i] = digitalRead(dip[i]);
    if (dipvalue[i] == LOW) {
      x = dip[i];
      activeSwitches++;
    }
  }

  if (activeSwitches == 2) {
      digitalWrite(SS, LOW);
      Mastersend = 2;
      Serial.println(Mastersend);
      SPI.transfer(Mastersend);
      delay(100);
    }
}


Slave
#include <SPI.h>

const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
volatile boolean received = false;
volatile byte Slavereceived;
int index;
int dg1 = A0;
int dg2 = A1;

void displayCharacter(int ch) {
  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
  };

  if ((ch >= 0 && ch <= 9)) {
    // Get the digit index (0-9) from the character
    int index = ch;
    // Write the pattern to the segment pins
    for (int i = 0; i < 7; i++) {
      digitalWrite(segmentPins[i], patterns[index][i]);
    }
  }
}

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < 8; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
  pinMode(dg1, OUTPUT);
  pinMode(dg2, OUTPUT);
  SPCR |= _BV(SPE); // Turn on SPI in Slave Mode
  SPI.attachInterrupt(); // Interrupt ON is set for SPI communication
}

ISR (SPI_STC_vect) { // Interrupt routine function
  Slavereceived = SPDR; // Value received from master is stored in variable Slavereceived
  received = true; // Sets received as True
}

void loop() {
  if (received) { // Logic to SET LED ON OR OFF depending upon the value received from master
    Serial.println(Slavereceived);
    if (Slavereceived == 2) {
      for(int i=0;i<=9;i++){
        if(i % 2 == 0 ){
          digitalWrite(dg1,HIGH);
          digitalWrite(dg2,LOW);
          displayCharacter(i);
          delay (100);
        }
        else{
          digitalWrite(dg1, LOW);
          digitalWrite(dg2, HIGH);
          displayCharacter(i);
          delay (100);
        }
      }
    }
    received = false; // Reset received flag
  }
}


b. Flowchart

Arduino Master




Arduino Slave



                                      
5. Kondisi [Kembali]

Kondisi  →Percobaan 2 Kondisi 7
4 switch dalam pull-down & 4 switch dalam pull-up, 1 switch pull-down dan 4 switch pull up mengaktifkan running led,4 switch pull down dan 1 switch pull up mengaktifkan blinking led
6. Video Simulasi [Kembali]



   
7. Download File [Kembali]
Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Program Arduino Master Klik disini
Download Program Arduino Slave Klik disini
Download Video Simulasi Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Dipswicth klik disini
Download Datasheet Resistor klik disini
Download Datasheet LED klik disini













































Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

Modul 4 [menuju akhir] [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. Percobaan Percob...