Senin, 04 Maret 2024

Tugas Pendahuluan 2 Modul 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 di proteus.

    4. Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi.

    5. Selesai.

2. Hardware dan diagram blok [Kembali]

Hardware

1. Arduino Uno


2. Dipswitch

3. Dual 7 Segment


Diagram Blok



3. Rangkaian simulasi dan prinsip kerja [Kembali]

Rangkaian percobaan sebelum disimulasi


Rangkaian percobaan setelah disimulasi


Prinsip Kerja

Rangkaian percobaan 5 kondisi 6 terdiri dari dipswitch dan 7 segment yang dihubungkan ke chip Arduino uno. Program ini adalah sebuah sketch untuk mengontrol dan menampilkan angka pada sebuah display tujuh segmen menggunakan dua digit. 

Prinsip kerjanya,pada program arduino uno defenisikan terlebih dahulu pin-pin yang digunakan untuk mengontrol display tujuh segment dan digit. Kemudian deklarasikan array segments yang berisi pin-pin untuk tujuh segmen display tujuh segmen. Pada Array digitPatterns digunakan untuk menyimpan pola setiap digit (0-9) pada tujuh segment. Kemudian beri void setup untuk dijalankan sekali pada awal eksekusi program. Kemudian pada for deklarasikan pin-pin sebagai output, termasuk pin segment dan digit. Pada Dsw buat pinmode sebagai input dengan pull-up resistor dan memulai komunikasi serial dengan baud rate 9600. Kemudian buat void number untuk menampilkan digit tertentu pada display tujuh segment berdasarkan pola yang telah didefenisikan sebelumnya. Kemudian buat void loop untuk menjalankan program terus-menerus setelah fungsi setup. Kemudian beri sw untuk membaca nilai analaog dari pin Dsw, dan serial.print untuk mengeksekusi blok kondisi berdasarkan nilai yang dibaca. Kemudian setelah program selesai copas file hex pada library arduino uno. Setelah itu , pada proteus ketika rangkaian disimulasikan akan muncul digit yang berbeda pada seven segment ketika setiap 1 switch aktif.


4. Flowchart dan listing program [Kembali]

Flowchart

Listing Program

//M1P5
//Baris ini mendefinisikan pin-pin yang akan digunakan untuk mengontrol display tujuh segmen dan digit
#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 Dsw A0
/*39
32
26 27
19
*/
int segments[] = {a,b,c,d,e,f,g}; //Mendeklarasikan array segments yang berisi pin-pin untuk tujuh segmen display tujuh segmen.
//Array digitPatterns digunakan untuk menyimpan pola setiap digit (0-9) pada tujuh segmen
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() { //Fungsi setup dijalankan sekali pada awal eksekusi program
 // put your setup code here, to run once:
 
 for (int i = 0; i < 7; i++) { //Mendeklarasikan pin-pin sebagai output, termasuk pin segmen dan digit
 pinMode(segments[i], OUTPUT);
 }
 pinMode(dp,OUTPUT);
 pinMode(D1,OUTPUT);
 pinMode(D2,OUTPUT);
 pinMode(Dsw,INPUT_PULLUP);//sebagai input dengan pull-up resistor dan memulai komunikasi serial dengan baud rate 9600
 Serial.begin(9600);
}
//Fungsi number(int display) digunakan untuk menampilkan digit tertentu pada display tujuh segmen berdasarkan pola yang telah didefinisikan sebelumnya.
void number (int display) {
 if (display >= 0 && display <= 9) {
 for (int i = 0; i < 7; i++) {
 digitalWrite(segments[i], digitPatterns[display ][i]);
 }
 }
}
void loop() { //Fungsi loop berjalan terus-menerus setelah fungsi setup
 int sw = analogRead(Dsw);//Membaca nilai analog dari pin Dsw
 Serial.print("ADC Value = ");//kemudian mengeksekusi blok kondisi berdasarkan nilai yang dibaca
 Serial.println(sw);
 delay(100);
 if(sw == 23){
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delay(50);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(0);
delay(50);
 }
else if(sw == 22){
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(0);
delay(1000);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(1);
delay(1000);
 }else if(sw == 21){
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(0);
delay(1000);
number(1);
delay(1000);
number(2);
delay(1000);
number(3);
delay(1000);
number(4);
delay(1000);
number(5);
delay(1000);
number(6);
delay(1000);
number(7);
delay(1000);
number(8);
delay(1000);
number(9);
delay(1000);
 }else if(sw == 19){
digitalWrite(D1,HIGH);
digitalWrite(D2,HIGH);
number(0);
delay(1000);
number(1);
delay(1000);
number(2);
delay(1000);
number(3);
delay(1000);
number(4);
delay(1000);
number(5);
delay(1000);
number(6);
delay(1000);
number(7);
delay(1000);
number(8);
delay(1000);
number(9);
delay(1000);
 }else if(sw == 16){
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(0);
delay(500);
number(1);
delay(500);
number(2);
delay(500);
number(3);
delay(500);
number(4);
delay(500);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(5);
delay(500);
number(6);
delay(500);
number(7);
delay(500);
number(8);
delay(500);
number(9);
delay(500);
 }else if(sw == 13){
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delayMicroseconds (500);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(0);
delayMicroseconds (500);
 }else if(sw == 10){
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(9);
delay(500);
number(8);
delay(500);
number(7);
delay(500);
number(6);
delay(500);
number(5);
delay(500);
number(4);
delay(500);
number(3);
delay(500);
number(2);
delay(500);
number(1);
delay(500);
number(0);
delay(500);
 }else if(sw == 5){
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delay(50);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(0);
delay(50);
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delay(50);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(1);
delay(50);
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delay(50);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(2);
delay(50);
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delay(50);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(3);
delay(50);
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delay(50);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(4);
delay(50);
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delay(50);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(5);
delay(50);
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delay(50);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(6);
delay(50);
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delay(50);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(7);
delay(50);
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delay(50);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(8);
delay(50);
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(1);
delay(50);
digitalWrite(D1,HIGH);
digitalWrite(D2,LOW);
number(9);
delay(50);
digitalWrite(D1,LOW);
digitalWrite(D2,HIGH);
number(2);
}


5. Kondisi [Kembali]

Kondisi  →Percobaan 5 Kondisi 6
Dipswitch dan dual 7 segment Setiap 1 Switch aktif muncul angka berbeda pada digit ke 1, Setiap  Switch aktif muncul angka pada kedua digit

6. Video simulasi [Kembali]


7. Link Download [Kembali]
Download HTML klik disini
Download Simulasi Rangkaian klik disini
Download Video Praktikum klik disini
Download Listing Program klik disini
Download Library Arduino Uno klik disini
Download Datasheet Arduino Uno klik disini
Download Datasheet 7 Segment klik disini
Download Datasheet Dipswitch klik disini


0 komentar:

Posting Komentar