Tugas Pendahuluan 1 Modul 3

 

Tugas Pendahuluan 1  Modul 3





Percobaan 2 Kondisi 6
Setiap 2 switch yang aktif akan melakukan counting 0 - 9 pada digit 1 dan 2 secara berseling  
    
1. Prosedur [Kembali]
  • Rangkailah semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai, masukkan program ke arduino 
  • Jalankan program pada simulasi dan lakukan sesuai kondisi

2. Hardware dan diagram blok

a. Hardware
                                            
1. Arduino Uno

2. Seven segmen MPX-2 CA






3. Dipswitch









4. VCC



5. Ground




b. Diagram blok




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

a) Gambar rangkaian sebelum dijalankan




b) Gambar rangkaian sesudah dijalankan 





Prinsip Kerja


    Pada rangkaian diatas merupakan rangkaian percobaan 2 kondisi 6, pada percobaan ini kondisi rangkaian yaitu Setiap 2 switch yang aktif akan melakukan counting 0 - 9 pada digit 1 dan 2 secara berseling.Rangkaian terdiri dari beberapa komponen seperti arduino sebanyak 2 buah, seven segment, dan dipswitch.

    Pada rangkaian diatas terdapat 2 arduino yang menggunakan komuikasi jenis SPI, dimana salah satu arduino uno bertindak sebagai master, dan arduino lainnya bertindak sebagai slave. Pada arduino master akan dihubungkan dengan input ( dipswitch ) yang akan dipasangkan pada kaki MISO, MOSI, SS, dan SCK, yang nantinya switch akan bertindak sebagia pemberi input pada arduino master.
    
    Sedangkan pada arduino slave akan dihubungkan dengan seven segment yang nantinya, seven segment akan menampilkan output dari input yang diberikan.Arduino slave menggunakan pin digital untuk mengendalikan segmen segmen pada display dan menggunkan 2 pin analog untuk mengendalikan kedua digit pada kedua display.Dimana pada display , akan ditmpilkan dua digit secara bergantian yang dapat diatur dengan digital write

    


4. Flowchart dan Listing Program [Kembali]

a. Flowchart 
MASTER ARDUINO
    


SLAVE ARDUINO





b. Listing Program

MASTER ARDUINO


//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 ARDUINO
#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
  }
}




5. Kondisi [Kembali]

Pada percobaan 2 kondisi 6 kondisi rangkaian yaitu Setiap 2 switch yang aktif akan melakukan counting 0 - 9 pada digit 1 dan 2 secara berseling


6. Video Simulasi [Kembali]







7. Download File [Kembali]

HTML Klik disini Klik disini
Rangkaian Simulasi Klik disini 
Video Simulasi Klik disini
Listing Program Master Klik disini
Listing Program Slave Klik disini
Datasheet Arduino Uno klik disini

























Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

                                     BAHAN PRESENTASI UNTUK MATAKULIAH                                                 ELEKTRONIKA 2022 Nama...

Postingan Populer