NIM : 2110951004

.

Cover

Ini merupakan cover blog mata kuliah elektronika

Spesifikasi Unit Op-Amp

Klik gambar slide untuk melihat pembahasan materi spesifikasi unit op-amp

Aplikasi Comparator Inverting dengan Vref=0

Slide ini merupakan halaman pembahasan rangkaian pengaplikasian dan penjelasan dari materi comparator inverting dengan Vref=0

Aplikasi Triangle Generator

Slide ini merupakan halaman pembahasan pengaplikasian dan penjelasan dari materi triangle generator

Aplikasi Filter BPF

Slide ini merupakan halaman pembahasan pengaplikasian dan penjelasan dari materi filter BPF

Minggu, 12 Mei 2024

M3_LA 2_Prak UpUc




MODUL III
PERCOBAAN 1
1. Prosedur
[Kembali]
  1. Rangkai seluruh komponen alat dan bahan yang diperlukan sesuai dengan kondisi percobaan yang dipilih.
  2. Buat program arduino pada aplikasi Arduino IDE sesuai dengan kondisi percobaan. Pastikan aplikasi Arduino IDE sudah mendownload library yang dibutuhkan dan sudah memilih board arduino yang sesuai.
  3. Verifikasi atau upload program pada arduino. 
  4. Jalankan atau uji coba rangkaian yang telah dibuat sesuai dengan kondisi.
  5. Perhatikan rangkaian dan output apakah sesuai dengan kondisi.
  6. Rangkaian telah selesai dibuat.
2. Hardware dan Diagram Blok [Kembali]
    a) Hardware

    b) Diagram Blok

3. Rangkaian Simulasi dan Prinsip kerja [Kembali]
    a) Rangkaian Simulasi

    b) Prinsip Kerja
Program Arduino di atas menggunakan dua perangkat yang saling berkomunikasi melalui koneksi serial. Perangkat pertama memiliki 8 tombol (DS1-DS8) yang masing-masing terhubung ke pin digital Arduino dan menggunakan input pull-up. Ketika salah satu tombol ditekan, Arduino akan mengirimkan karakter yang sesuai ke perangkat kedua melalui koneksi serial.

Perangkat kedua memiliki 8 LED (led[0]-led[7]) yang terhubung ke pin digital Arduino. Arduino perangkat kedua akan terus membaca data dari koneksi serial. Ketika menerima karakter dari perangkat pertama, Arduino perangkat kedua akan menyalakan LED sesuai dengan karakter yang diterima. Setelah menyalakan LED, Arduino perangkat kedua akan mematikan semua LED sebelum kembali membaca data baru dari koneksi serial.

4. Flowchart dan Listing Program [Kembali]
    a) Flowchart
Perangkat 1
Perangkat 2

    b) Listing Program
Perangkat 1
#define DS1 2
#define DS2 3
#define DS3 4
#define DS4 5
#define DS5 6
#define DS6 7
#define DS7 8
#define DS8 9
bool b1,b2,b3,b4,b5,b6,b7,b8;

void setup()
{
  Serial.begin(9600);
  pinMode(DS1, INPUT_PULLUP);
  pinMode(DS2, INPUT_PULLUP);
  pinMode(DS3, INPUT_PULLUP);
  pinMode(DS4, INPUT_PULLUP);
  pinMode(DS5, INPUT_PULLUP);
  pinMode(DS6, INPUT_PULLUP);
  pinMode(DS7, INPUT_PULLUP);
  pinMode(DS8, INPUT_PULLUP);
}

void loop()
{
  b8 = digitalRead(DS8);
  b7 = digitalRead(DS7);
  b6 = digitalRead(DS6);
  b5 = digitalRead(DS5);
  b4 = digitalRead(DS4);
  b3 = digitalRead(DS3);
  b2 = digitalRead(DS2);
  b1 = digitalRead(DS1);
 
  // Hidupkan LED sesuai dengan tombol yang ditekan
  if (b8 == LOW)
  {
    Serial.write('8');
  }
  else if (b7 == LOW)
  {
    Serial.write('7');
  }
  else if (b6 == LOW)
  {
    Serial.write('6');
  }
  else if (b5 == LOW)
  {
    Serial.write('5');
  }
  else if (b4 == LOW)
  {
    Serial.write('4');
  }
  else if (b3 == LOW)
  {
    Serial.write('3');
  }
  else if (b2 == LOW)
  {
    Serial.write('2');
  }
  else if (b1 == LOW)
  {
    Serial.write('1');
  }
  delay(20);
}

Perangkat 2
int led[] = {2, 3, 4, 5, 6, 7, 8, 9};
char message;

void setup()
{
  Serial.begin(9600);
  for (int i = 0; i < 8; i++)
  {
    pinMode(led[i], OUTPUT);
  }
}

void loop()
{
  if (Serial.available())
  {
    message = Serial.read();
    if (message == '1')
    {
      digitalWrite(led[0], HIGH);
    }
    else if (message == '2')
    {
      digitalWrite(led[1], HIGH);
    }
    else if (message == '3')
    {
      digitalWrite(led[2], HIGH);
    }
    else if (message == '4')
    {
      digitalWrite(led[3], HIGH);
    }
    else if (message == '5')
    {
      digitalWrite(led[4], HIGH);
    }
    else if (message == '6')
    {
      digitalWrite(led[5], HIGH);
    }
    else if (message == '7')
    {
      digitalWrite(led[6], HIGH);
    }
    else if (message == '8')
    {
      digitalWrite(led[7], HIGH);
    }
  }
  delay(20);
  for (int i = 0; i < 8; i++)
  {
    digitalWrite(led[i], LOW);
  }
}

5. Video Demo [Kembali]

6. Kondisi [Kembali]
    Percobaan 1 Komunikasi UART Menggunakan Arduino

7. Download File [Kembali]
HTML Blog 
Share:

M3_LA 1_Prak UpUc




MODUL III
PERCOBAAN 5
1. Prosedur
[Kembali]
  1. Rangkai seluruh komponen alat dan bahan yang diperlukan sesuai dengan kondisi percobaan yang dipilih.
  2. Buat program arduino pada aplikasi Arduino IDE sesuai dengan kondisi percobaan. Pastikan aplikasi Arduino IDE sudah mendownload library yang dibutuhkan dan sudah memilih board arduino yang sesuai.
  3. Verifikasi atau upload program pada arduino. 
  4. Jalankan atau uji coba rangkaian yang telah dibuat sesuai dengan kondisi.
  5. Perhatikan rangkaian dan output apakah sesuai dengan kondisi.
  6. Rangkaian telah selesai dibuat.
2. Hardware dan Diagram Blok [Kembali]
    a) Hardware

    b) Diagram Blok

3. Rangkaian Simulasi dan Prinsip kerja [Kembali]
    a) Rangkaian Simulasi

    b) Prinsip Kerja
Inisialisasi:

  • Pada Arduino Master, library Wire digunakan untuk menginisialisasi komunikasi I2C dan serial untuk debugging.
  • Pada Arduino Slave, library Wire juga digunakan untuk menginisialisasi komunikasi I2C dan juga mengatur pin LED sebagai output.

Loop Utama Master:

  • Arduino Master terus memeriksa status tombol. Jika tombol kedua ditekan (BUTTON2), variabel count akan bertambah satu setiap kali tombol ditekan.
  • Jika count habis dibagi 2 (count % 2 == 0), Arduino Master akan memeriksa status tombol pertama (BUTTON1). Jika tombol pertama ditekan (BUTTON1), variabel counter akan bertambah satu dan nilai counter akan dikirim ke Arduino Slave melalui I2C.
  • Jika count habis dibagi 3 (count % 3 == 0), Arduino Master akan mengirim sinyal endTransmission ke Arduino Slave.

Loop Utama Slave:

        Arduino Slave tidak melakukan apa-apa dalam loop utamanya karena semua aksi dikendalikan oleh fungsi receiveEvent saat menerima data dari Arduino Master.

Fungsi receiveEvent:

  • Ketika Arduino Slave menerima data dari Arduino Master, fungsi receiveEvent akan dijalankan.
  • Data yang diterima akan diproses untuk mengendalikan LED sesuai dengan perintah yang diterima.
  • Jika perintah adalah 1, semua LED akan dinyalakan.
  • Jika perintah adalah 2, semua LED akan dimatikan.
  • Jika perintah adalah 3, semua LED akan berkedip sebanyak lima kali.

4. Flowchart dan Listing Program [Kembali]
    a) Flowchart

    b) Listing Program

Master
#include <Wire.h>

#define SLAVE_ADDRESS 9
#define BUTTON1 2
#define BUTTON2 3

int buttonState1 = 0;
int buttonState2 = 0;
int buttonPrevState1 = 0;
int buttonPrevState2 = 0;
unsigned int counter = 0;
unsigned int count = 0;

void setup() {
  Wire.begin();
  pinMode(BUTTON1, INPUT_PULLUP);
  pinMode(BUTTON2, INPUT_PULLUP);
  Serial.begin(9600);
}

void loop() {
  buttonState1 = digitalRead(BUTTON1);
  buttonState2 = digitalRead(BUTTON2);
 
  if (buttonState2 != buttonPrevState2) {
    if (buttonState2 == LOW) {
      count++;
    }
    delay(50);
  }
  buttonPrevState2 = buttonState2;
 
  if (count > 3) {
    count = 0;
  }
 
  if (count % 2 == 0) {
    if (buttonState1 != buttonPrevState1) {
      if (buttonState1 == LOW) {
        counter++;
        Wire.beginTransmission(SLAVE_ADDRESS);
        Wire.write(counter);
        Wire.endTransmission();
      }
      delay(50);
    }
    buttonPrevState1 = buttonState1;
    if (counter > 3) {
      counter = 0;
    }
  } else if (count % 3 == 0) {
    Wire.endTransmission();
  }
 
  Serial.print(count);
  Serial.println(counter);
}

Slave
#include <Wire.h>

#define LED_COUNT 8
#define LED_PIN_START 2

void setup() {
  Serial.begin(9600);
  Wire.begin(9);
  Wire.onReceive(receiveEvent);
 
  for (int i = LED_PIN_START; i < LED_PIN_START + LED_COUNT; i++) {
    pinMode(i, OUTPUT);
  }
}

void loop() {
  // Tidak ada yang perlu dilakukan di sini, semua tindakan dilakukan di fungsi receiveEvent
}

void receiveEvent(int numBytes) {
  unsigned int command = Wire.read();
  Serial.println(command);
  delay(500);
 
  if (command == 1) {
    // Menyalakan semua LED
    for (int i = LED_PIN_START; i < LED_PIN_START + LED_COUNT; i++) {
      digitalWrite(i, HIGH);
    }
  } else if (command == 2) {
    // Mematikan semua LED
    for (int i = LED_PIN_START; i < LED_PIN_START + LED_COUNT; i++) {
      digitalWrite(i, LOW);
    }
  } else if (command == 3) {
    // Berkedipkan semua LED
    for (int j = 0; j < 5; j++) {
      for (int i = LED_PIN_START; i < LED_PIN_START + LED_COUNT; i++) {
        digitalWrite(i, HIGH);
        delay(1000);
      }
      delay(500);
      for (int i = LED_PIN_START; i < LED_PIN_START + LED_COUNT; i++) {
        digitalWrite(i, LOW);
        delay(1000);
      }
      delay(500);
    }
  }
}

5. Video Demo [Kembali]
6. Kondisi [Kembali]
    Percobaan 5  Komunikasi I2C

7. Download File [Kembali]
HTML Blog 
Share:

Senin, 06 Mei 2024

M3_TP 2_Prak UpUc




1. Prosedur
[Kembali]
  1. Rangkai seluruh komponen alat dan bahan yang diperlukan sesuai dengan kondisi percobaan yang dipilih.
  2. Buat program arduino pada aplikasi Arduino IDE sesuai dengan kondisi percobaan. Pastikan aplikasi Arduino IDE sudah mendownload library yang dibutuhkan dan sudah memilih board arduino yang sesuai.
  3. Verifikasi atau upload program pada arduino. 
  4. Jalankan atau uji coba rangkaian yang telah dibuat sesuai dengan kondisi.
  5. Perhatikan rangkaian dan output apakah sesuai dengan kondisi.
  6. Rangkaian telah selesai dibuat.
2. Hardware dan Diagram Blok [Kembali]
a. Hardware
 
1. Arduino Uno
 Spesifikasi:

2. Dipswitch
 
Spesifikasi:

3. 7-segment
 

b. Diagram Blok

3. Rangkaian Simulasi dan Prinsip kerja [Kembali]
    a). Rangkaian Simulasi

    b) Prinsip kerja

Program di atas merupakan contoh implementasi komunikasi SPI antara dua Arduino, di mana satu Arduino berperan sebagai master dan yang lainnya sebagai slave. Berikut adalah prinsip kerja dari program tersebut:

Master (Arduino pertama) :
1. Mendefinisikan pin untuk DIP switch dan variabel untuk menyimpan nilai DIP switch.
2. Mengatur pin DIP switch sebagai input dengan pull-up resistor internal.
3. Memulai komunikasi SPI dan mengatur pembagi clock SPI.
4. Melakukan loop untuk membaca status DIP switch dan menghitung jumlah switch yang aktif.
5. Mengirim jumlah switch yang aktif ke slave melalui SPI setiap detik.

Slave (Arduino kedua) :
1. Mendefinisikan pin untuk display segment dan variabel untuk menyimpan data yang diterima.
2. Mengatur pin display segment sebagai output.
3. Mengaktifkan SPI dan menunggu data dari master.
4. Ketika data diterima, menampilkan karakter yang sesuai dengan data yang diterima pada display segment.

Prinsip kerja komunikasi SPI pada kedua Arduino ini memungkinkan pertukaran data antara keduanya, di mana Arduino master mengirimkan data jumlah switch yang aktif ke slave, dan slave menampilkan karakter yang sesuai dengan data yang diterima.

4. Flowchart dan Listing Program [Kembali]
    a) Flowchart
Master

Slave

    b) listring program

Master

#include <SPI.h>

int dip[] = {2, 3, 4, 5, 6, 7, 8, 9};//Mendefinisikan pin DIP switch
int dipvalue[8] = {};//Mendefinisikan array untuk menyimpan nilai DIP switch

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < 8; i++) {
    pinMode(dip[i], INPUT_PULLUP);//Mengatur pin DIP switch sebagai input dengan pull-up resistor internal
  }
  SPI.begin();//Memulai komunikasi SPI
  SPI.setClockDivider(SPI_CLOCK_DIV8);//Mengatur pembagi clock SPI
  digitalWrite(SS, HIGH);//Mengatur pin SS (Slave Select) sebagai HIGH (nonaktif)
}

void loop() {
  byte Mastersend = 0;//Mendefinisikan variabel untuk menyimpan data yang akan dikirim
  int x = 0;//Mendefinisikan variabel untuk menghitung jumlah DIP switch yang aktif
  for (int i = 0; i < 8; i++) {
    dipvalue[i] = digitalRead(dip[i]);
    if (dipvalue[i] == LOW) {
      x++;
    }
  }//Loop untuk membaca status DIP switch dan menghitung jumlah yang aktif
  digitalWrite(SS, LOW);//Mengaktifkan komunikasi dengan slave dengan menurunkan pin SS
  Mastersend = x;
  Serial.println(Mastersend);
  SPI.transfer(Mastersend);//Mengirim data ke slave
  delay(1000);//Delay selama 1 detik sebelum membaca ulang status DIP switch
}

Slave

#include <SPI.h>

const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2};
volatile boolean received = false;
volatile byte Slavereceived;

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < 8; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
  SPCR |= _BV(SPE);
  SPI.attachInterrupt();
}

ISR (SPI_STC_vect) {
  Slavereceived = SPDR;
  received = true;
}

void loop() {
  if (received) {
    displayCharacter(Slavereceived);
    delay(1000);
    received = false;
  }
}

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 <= 8) {
    int index = ch;
    for (int i = 0; i < 7; i++) {
      digitalWrite(segmentPins[i], patterns[index][i]);
    }
  }
}

5. Kondisi [Kembali]
    Percobaan 2 Kondisi 5
    Setiap 1 Switch aktif muncul angka sesuai jumlah switch yang aktif pada digit 1

6. Video Simulasi [Kembali]
7. Download File [Kembali]
File Rangkaian 
Share:

Blogger news

Blogger templates