Rabu, 20 Maret 2024


LA 2 MODUL 2 P1



MODUL 2
PERCOBAAN 1
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 (Verify and Upload)
  4.  jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
  5.  Selesai
2. Hardware dan diagram blok [Kembali]
      a. hardware
                                                                
1.  LCD 2X16
2. Arduino Uno
3. Sensor LDR
4. Dipswitch
5. Driver Motor L293D
6. Motor DC

            b. Digram Blok


3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

A. Gambar Rangkaian


                
PRINSIP KERJA
Pada percobaan ini, bertujuan untuk mengontrol motor menggunakan Arduino Uno dengan menggunakan input dari sensor LDR dan switch. Arduino pertama-tama melakukan inisialisasi pin yang terhubung ke  LCD, sensor LDR, switch, dan motor. Setelah inisialisasi, program memasuki loop utama yang terus berjalan selama Arduino aktif.

Dalam loop utama, Arduino terus memeriksa status switch utama. Jika switch utama ditekan (berada dalam keadaan HIGH), Arduino membaca nilai dari sensor LDR untuk mengetahui intensitas cahaya lingkungan. Selanjutnya, Arduino memeriksa status dari switch tambahan untuk menentukan jumlah switch yang aktif.

Berdasarkan kombinasi nilai LDR dan jumlah switch aktif, Arduino memutuskan tindakan apa yang harus diambil. Misalnya, jika hanya satu switch aktif, Arduino menggerakkan motor ke arah tertentu dan menampilkan pesan di LCD. Jika dua switch aktif, motor akan berputar ke kiri atau kanan tergantung pada nilai LDR. Dan jika tiga switch aktif, Arduino mengubah nilai LDR menjadi sinyal PWM untuk mengatur kecepatan motor.

Jika switch utama tidak ditekan, Arduino menampilkan pesan "ELECTRONIC & INSTRUMENTATION" di LCD, menandakan bahwa sistem dalam mode standby.

Nilai PWM yang dihasilkan berdasarkan nilai LDR, mengontrol kecepatan putaran motor. Perubahan nilai LDR mempengaruhi nilai PWM, dan akibatnya, kecepatan putaran motor berubah. Jika nilai LDR berada dalam rentang tertentu (misalnya, 200-600), motor akan berputar ke kiri selama 8 detik. Jika nilai LDR di atas 600, motor akan berputar ke kiri atau kanan berdasarkan nilai LDR, sementara jika nilai LDR di bawah 550, motor akan berputar ke kanan.

4. FlowChart [Kembali]

a. Listing Program 
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
int sw1 = 2;
int sws[]={3,4,7};
int numsw = 3;
int front = 6;
int back = 5;
void setup() {
 // put your setup code here, to run once:
lcd.begin(16,2);
pinMode(sw1,INPUT);
for(int thesw = 0; thesw < numsw; thesw++){
 pinMode(sws[thesw],INPUT);
}
pinMode(front,OUTPUT);
pinMode(back,OUTPUT);
Serial.begin(9600);
}
void loop() {
 // put your main code here, to run repeatedly:
int s1 = digitalRead(sw1);
int ldr = analogRead(A0);
if(s1 == HIGH){
 int activesw = 0;
 for(int thesw = 0; thesw < numsw; thesw++){
 if(digitalRead(sws[thesw]) == HIGH){
 activesw++;
 }
 }
Serial.print("Number of Switch : ");
Serial.println(activesw);
delay(200);
switch(activesw){
 case 0 :
 lcd.clear();
 lcd.setCursor(0,0);
 lcd.print(ldr);
 lcd.setCursor(0,1);
 lcd.print("The LDR Value");
 delay(200);
 break;
 
 case 1 :
 lcd.clear();
 lcd.setCursor(2,0);
 lcd.print("Running The");
 lcd.setCursor(2,1);
 lcd.print("Motor");
 digitalWrite(front,HIGH);
 digitalWrite(back,LOW);
 delay(200);
 break;
 case 2 :
 lcd.clear();
 lcd.setCursor(0,0);
 lcd.print("LDR Value : ");
 lcd.setCursor(13,0);
 lcd.print(ldr);
 if(ldr < 550){
 lcd.setCursor(0,1);
 lcd.print(" ");
 lcd.setCursor(0,1);
lcd.print("turn Motor right");
 digitalWrite(front,HIGH);
 digitalWrite(back,LOW);
 }else{
 lcd.setCursor(0,1);
 lcd.print(" ");
 lcd.setCursor(0,1);
 lcd.print("turn Motor left");
 digitalWrite(front,LOW);
 digitalWrite(back,HIGH);
 }
 break;
 case 3 :
 int pwm = map(ldr,0,1023,0,255);
 digitalWrite(back,LOW);
 analogWrite(front,pwm);
 lcd.clear();
 lcd.setCursor(0,0);
 lcd.print("PWM = ");lcd.print(pwm);
 lcd.setCursor(0,1);
 lcd.print(" Control ???");
 delay(200);
 break;
}
delay(10);
}else{
 lcd.clear();
 lcd.setCursor(4,0);
 lcd.print("ELECTRONIC");
 lcd.setCursor(0,1);
 lcd.print("&INSTRUMENTATION");
 delay(100);
}
}

b. Flowchart


5. Video Demo [Kembali]


6. Kondisi [Kembali]

PERCOBAAN 1 SESUAI DENGAN MODUL 2

8. Download File [Kembali]

Download HMTL Klik disini
Download Video Demo Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet LCD 2X16 klik disini
Download Datasheet Sensor LDR klik disini
Download Datasheet Dipswitch klik disini
Download Datasheet Motor DC klik disini
Download Datasheet Driver Motor L293D klik disini
















LA 1 MODUL 2 P2K7



MODUL 2
PERCOBAAN 2 KONDISI 7 
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 (Verify and Upload)
  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
2. Dipswitch
3. LCD 16X2
4. Driver Motor L293D
4. Buzzer
5. LED

            b. Digram Blok


3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

A. Gambar Rangkaian

     
PRINSIP KERJA
Pada rangkaian tersebut, Motor berputar ke kanan 5 detik lalu mati 3 detik dan berputar ke kiri 5 detik dan mati 7 detik ,LCD menampilkan counting sesuai yang kita buat pada program (misal kita melakukan counting dari 50 sampai 0, jika interrupt counting diulang dari 50 dan motor DC berhenti 3 detik.
Pada rangkaian di atas dengan input dipswitch dengan output berupa led dan buzzer serta pada LCD 16X2 akan menampilkan counting pada saat rangakaian di run, LCD menampilkan counting dari 50-0 (sesuai dengan apa yang kita atur pada c dengan waktu delay yang cukup lama antara 50 ke 49 dan seterusnya jika saat di run tersebut kita tekan tombol pada dipswict maka counting yang ditampilkan di lcd akan menampilkan kembali counting mulai dari 50 lagi atau kembali ke awal akibat adanya interrupt dari tombol dipswicth yang kita tekan. Pada kondisi ini, dapat memudahkan kita jika ingin memberi perintah untuk menampilkan angka yang kita inginkan tanpa menunggu counting yang ditampilkan pada LCD selesai mengcounting dari 50 sampai 0

4. FlowChart [Kembali]

a. Listing Program
#include<LiquidCrystal_I2C.h>
#define LED 13 //pin 13 bernama LED
#define tombol 2 //pin 2 (pin interrupt) bernama tombol
#define buzzer 11
volatile byte led_nyala = LOW; //kondisi mula-mula LED mati
static int count = 0;
volatile byte buzzer_nyala = LOW;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
 lcd.init();
 lcd.backlight();
 pinMode(LED,OUTPUT);
 pinMode(tombol,INPUT);
 attachInterrupt(digitalPinToInterrupt(2),tombol_ditekan, FALLING); //pin 2 (interrupt 0) digunakan
sebagai interrupt eksternal
}
void loop() { //Main Program
 digitalWrite(LED,HIGH);
 digitalWrite(buzzer,LOW);
 lcd.setCursor(0,0);
 lcd.print("Count:");
lcd.setCursor(0,1);
 lcd.print(count);
 count += 1; // menambahkan integer count dengan angka 1
 delay(1000);
}
//membuat fungsi bernama tombol_ditekan, fungsi ini (ISR) dieksekusi secara otomatis setelah arduino
memperoleh sinyal interrupt di pin 2
void tombol_ditekan()
{
 digitalWrite(LED,LOW);
 digitalWrite(buzzer,HIGH);
 count = 0;
 delay(100000);
}


b. Flowchart



5. Video Demo [Kembali]


6. Kondisi [Kembali]

PERCOBAAN 2 KONDISI 7 SESUAI DENGAN MODUL 2

8. Download File [Kembali]

Download HMTL Klik disini
Download Video Demo Simulasi Klik disini
Download Datasheet Arduino Uno klik disini
Download Datasheet Dipswicth klik disini
Download Datasheet LED klik disini
Download Datasheet Buzzer  klik disini
Download Datasheet Driver Motor L293 klik disini

















































Senin, 18 Maret 2024

M2

TP 2: Percobaan 3 Kondisi 5 



MODUL 2
PERCOBAAN 3 KONDISI 5

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
2. Dipswitch
3. Seven Segment

            b. Digram Blok



3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

Gambar Rangkaian Sebelum Disimulasikan



Gambar Rangkaian Setelah Disimulasikan


PRINSIP KERJA

Pada rangkaian tersebut, ketika kedua switch diaktifkan, 7-Segment akan menampilkan kombinasi angka 2, 0, 2, dan 4 secara berurutan setelah proses hitung maju hingga mencapai angka 3. Rangkaian menggunakan dipswitch 4-pin sebagai input dan 7-Segment sebagai output. Saat rangkaian dijalankan, kita dapat mengatur kombinasi output menjadi 2, 0, 2, 4 dengan mengaktifkan kedua switch yang terdapat pada dipswitch. Hal ini dapat dilakukan melalui kode program yang telah dibuat untuk Arduino. Kombinasi output yang dihasilkan diprogram agar sesuai dengan keadaan saat kedua switch diaktifkan, sehingga memberikan output yang diinginkan yaitu urutan angka 2, 0, 2, dan 4.


4. FlowChart [Kembali]

a. Listing Program 
#define a 6
#define b 7
#define c 8
#define d 9
#define e 10
#define f 11
#define g 12
#define dp 13
#define D1 4
#define D2 5
#define Dsw1 A0
#define Dsw2 A1
#define Dsw3 A2
#define Dsw4 A3

bool sw1, sw2, sw3, sw4;
int segments[] = {a, b, c, d, e, f, g};
byte digitPatterns[10][7] = {
  {1, 1, 1, 1, 1, 1, 0}, // 0
  {0, 1, 1, 0, 0, 0, 0}, // 1
  {1, 1, 0, 1, 1, 0, 1}, // 2
  {1, 1, 1, 1, 0, 0, 1}, // 3
  {0, 1, 1, 0, 0, 1, 1}, // 4
  {1, 0, 1, 1, 0, 1, 1}, // 5
  {1, 0, 1, 1, 1, 1, 1}, // 6
  {1, 1, 1, 0, 0, 0, 0}, // 7
  {1, 1, 1, 1, 1, 1, 1}, // 8
  {1, 1, 1, 1, 0, 1, 1}  // 9
};

void setup() {
  for (int i = 0; i < 7; i++) {
    pinMode(segments[i], OUTPUT);
  }
  pinMode(dp, OUTPUT);
  pinMode(D1, OUTPUT);
  pinMode(D2, OUTPUT);
  pinMode(Dsw1, INPUT_PULLUP);
  pinMode(Dsw2, INPUT_PULLUP);
  pinMode(Dsw3, INPUT_PULLUP);
  pinMode(Dsw4, INPUT_PULLUP);
  Serial.begin(9600);
}

void number(int display) {
  if (display >= 0 && display <= 9) {
    for (int i = 0; i < 7; i++) {
      digitalWrite(segments[i], digitPatterns[display][i]);
    }
  }
}

void loop() {
  sw1 = digitalRead(Dsw1);
  sw2 = digitalRead(Dsw2);
  sw3 = digitalRead(Dsw3);
  sw4 = digitalRead(Dsw4);

  // Menampilkan angka 0, 1, 2, dan 3 di awal output
  for (int i = 0; i <= 3; i++) {
    digitalWrite(D1, HIGH);
    digitalWrite(D2, LOW);
    number(i); // Menampilkan angka yang sedang dihitung
    delay(500); // Delay selama 0.5 detik
  }

  // Menampilkan kombinasi angka 2, 0, 2, dan 4 setelah kedua switch diaktifkan
  if ((sw1 == LOW || sw2 == LOW || sw3 == LOW || sw4 == LOW)) {
    digitalWrite(D1, HIGH);
    digitalWrite(D2, LOW);
    number(2); // Menampilkan angka 2 pada digit pertama
    delay(500); // Delay selama 0.5 detik

    digitalWrite(D1, LOW);
    digitalWrite(D2, HIGH);
    number(0); // Menampilkan angka 0 pada digit kedua
    delay(500); // Delay selama 0.5 detik

    digitalWrite(D1, HIGH);
    digitalWrite(D2, LOW);
    number(2); // Menampilkan angka 2 pada digit pertama
    delay(500); // Delay selama 0.5 detik

    digitalWrite(D1, LOW);
    digitalWrite(D2, HIGH);
    number(4); // Menampilkan angka 4 pada digit kedua
    delay(500); // Delay selama 0.5 detik
  }
}


b. Flowchart

                                      
5. Kondisi [Kembali]

Kondisi  →Percobaan 3 Kondisi 5
Ketika 2 switch aktif 7-Segment menampilkan kombinasi 2,0,2,4 setelah hitung maju hingga 3

6. Video Simulasi [Kembali]



  
7. Download File [Kembali]
Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Simulasi Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Dipswicth klik disini
Download Datasheet seven segment klik disini










































M2

TP 1: Percobaan 2 Kondisi 7 



MODUL 2
PERCOBAAN 2 KONDISI 7

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
2. Dipswitch
3. LCD 16X2
4. PCF8574
4. Motor DC

            b. Digram Blok




3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

Gambar Rangkaian Sebelum Disimulasikan


Gambar Rangkaian Setelah Disimulasikan


PRINSIP KERJA
Pada rangkaian tersebut, Motor berputar ke kanan 5 detik lalu mati 3 detik dan berputar ke kiri 5 detik dan mati 7 detik ,LCD menampilkan counting dari 50 sampai 0, interrupt counting diulang dari 50 dan motor DC berhenti 3 detik.
Pada rangkaian di atas dengan input dipswitch dengan output motor dc dan LCD 16X2, pada saat rangakaian di run motor dc akan beroutar dan LCD menampilkan counting dari 50-0 dengan waktu delay yang cukup lama antara 50 ke 49 dan seterusnya jika saat di run tersebut kita tekan tombol pada dipswict maka counting yang ditampilkan di lcd akan menampilkan kembali counting mulai dari 50 lagi atau kembali ke awal akibat adanya interrupt dari tombol dipswicth yang kita tekan. Pada kondisi ini, dapat memudahkan kita jika ingin memberi perintah untuk menampilkan angka yang kita inginkan tanpa menunggu counting yang ditampilkan pada LCD selesai mengcounting dari 50 sampai 0

4. FlowChart [Kembali]

a. Listing Program 
#include  <LiquidCrystal_I2C.h>

#define tombol 2   // pin 2 (pin interrupt) bernama tombol
#define motorPin 11  // pin 11 untuk motor

#define motorDelay 5000 // Waktu rotasi motor dalam milidetik
#define stopDelay 3000  // Waktu motor berhenti dalam milidetik
#define restartDelay 7000 // Waktu sebelum penghitungan dimulai ulang dalam milidetik

volatile int count = 50; // Mulai dari 50

LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup() {
  lcd.init();
  lcd.backlight();
  pinMode(tombol, INPUT);
  pinMode(motorPin, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(2), tombol_ditekan, FALLING);
}

void loop() { // Main Program
  // Rotasi motor ke kanan selama 5 detik
  digitalWrite(motorPin, HIGH);
  delay(motorDelay);

  // Stop motor selama 3 detik
  digitalWrite(motorPin, LOW);
  delay(stopDelay);

  // Rotasi motor ke kiri selama 5 detik
  digitalWrite(motorPin, HIGH);
  delay(motorDelay);

  // Stop motor selama 3 detik
  digitalWrite(motorPin, LOW);
  delay(stopDelay);

  // LCD menampilkan counting dari 50 sampai 0
  lcd.setCursor(0, 0);
  lcd.print("Count: ");
  lcd.setCursor(0, 1);
  lcd.print(count);
 
  // Pengurangan integer count dengan angka 1
  count -= 1;

  // Jika count mencapai 0, reset kembali ke 50 dan tunggu 3 detik
  if (count < 0) {
    count = 50;
    delay(stopDelay);
  }
}

// Fungsi interrupt tombol ditekan
void tombol_ditekan() {
  count = 50; // Mengatur ulang hitungan
  delay(restartDelay);
}



b. Flowchart

                                      
5. Kondisi [Kembali]

Kondisi  →Percobaan 2 Kondisi 7
Motor ke kanan 5 detik lalu mati 3 detik berputar ke kiri 5 detik dan mati 7 detik ,LCD menampilkan counting dari 50 sampai 0, interrupt counting diulang dari 50 dan motor DC berhenti 3 detik

6. Video Simulasi [Kembali]


   


7. Download File [Kembali]
Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Simulasi Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Dipswicth klik disini
Download Datasheet motor dc klik disini
Download Datasheet PCF8574 klik disini













































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...