M2 - Laporan Akhir 2




M2 Percobaan 3
1. Prosedur
[Kembali]

1. Rangkai rangkaian pada alat sesuai dengan modul.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan rangkaian.

2. Hardware dan Diagram Blok [Kembali]

Hardware :





Diagram Blok:

                


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :



Prinsip Kerja :

Pada percobaan 3 ini kita membahas Timer Arduino dengan menggunakan komponen utama arduino, dipswtich dan Double 7-Seg Anoda.

Fungsi Dipswtich yang ada 4 switch, digunakan untuk mengatur kondisi/if yang kita inginkan dan Double 7-Seg Anoda sebagai output tampilan angka yang disesuaikan pada program nantinya. 

Di awal program bisa kita lihat deklarasi pin pin yang akan kita gunakan, yang berbeda disini dikarenakan kita menggunakan 7-Segment kita perlu membuat array terlebih dahulu berdasarkan susunan pin nya, kemudian kita membuat matriks array yang menampilkan segmen mana saja yang ingin diaktifkan bersesuaian dengan angka yang ingin ditampilkan pada 7-Segment. Dikarenakan kita menggunakan 7-Segment tipe Anoda maka pada program jika kita menampilkan suatu segment maka harus diberi logika low, agar bersesuaian dengan bertemunya logika low dari arduino dengan anoda yang diberi logika high sehingga mengakibatkan LED pada segment akan aktif.

Kemudian pada loop dideklarasi variabel lastTime sebagai waktu terakhir pembacaan tombol, nantinya akan dioperasikan dengan millis() agar didapat waktu 1 detik untuk setiap pergantian angka pada 7-Segment.

Pada dipswitch digunakan rangkaian pull up, dimana disini kaki lainnya dihubungkan ke ground, ketika switch dinaikkan dari off ke on maka akan memberi logika low ke pin arduino sehingga pembacaan nya mengkondisikan jika dia LOW. Nah disini pada if saat swtich 1 LOW maka timer akan berjalan dari 9 ke yang lebih kecil dengan saling bergantian menampilkan angkanya.


4. Flowchart dan Listing Program [Kembali]

Flowchart :




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] = {
{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
};
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() {
 int sw1 = digitalRead(Dsw1);
 int sw2 = digitalRead(Dsw2);
 int sw3 = digitalRead(Dsw3);
 int sw4 = digitalRead(Dsw4);
 static int digit = 1; // Digit yang sedang ditampilkan (1 atau 2)
 static int count = 0; // Counter untuk digit
 static unsigned long lastTime = 0; // Waktu terakhir pembacaan tombol
if (sw1 == LOW) { 
 if (millis() - lastTime > 1000) { // Debouncing
 lastTime = millis();
 count++;
 if (count > 9) {
 count = 0;
 }
 if (digit == 1) {
 digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
 number(count);
 digit = 2;
 } else {
 digitalWrite(D1, LOW);
 digitalWrite(D2, HIGH);
 number(count);
 digit = 1;
 }
 }
}
else if (sw2 == LOW) { 
 if (millis() - lastTime > 1000) { // Debouncing
 lastTime = millis();
 digitalWrite(D1, HIGH);
 digitalWrite(D2, LOW);
 for (int i = 9; i >= 0; i--) {
 number(i);
 delay(1000); // Delay agar Anda bisa melihat perubahan digit
 }
 }
}
if (sw3 == LOW) { 
 if (millis() - lastTime > 2000) { // Debouncing
 lastTime = millis();
 count++;
 if (count > 9) {
 count = 0;
 }
 if (digit == 1) {
 digitalWrite(D2, HIGH);
 digitalWrite(D1, LOW);
 number(count);
 digit = 2;
 } else {
 digitalWrite(D2, LOW);
 digitalWrite(D1, HIGH);
 number(count);
 digit = 1;
 }
 }
}
else if (sw4 == LOW) { 
 if (millis() - lastTime > 2000) { // Debouncing
 lastTime = millis();
 digitalWrite(D2, HIGH);
 digitalWrite(D1, LOW);

for (int i = 9; i >= 0; i--) {
 number(i);
 delay(200); // Delay agar Anda bisa melihat perubahan digit
 }
 }
}
}


5. Kondisi [Kembali]

Percobaan 3 : Timer Arduino

6. Video Demo [Kembali]



7. Soal Analisa [Kembali]

1. analisa perbedaan penggunaan sensor LDR dalam voltage devider tipe pull up & pull down serta jelaskan pengaruhnya terhadap ADC sistem? 
2. Analisa perbedaan pengontrolan motor dc ketika pada case 2 dan case 3
3. Apa pengaruh tipe 7-segment dalam pemakaian fungsi bit map di Arduino Uno
4. Analisa penggunaan millis tanpa dan dengan operasi matematika
5. Pada sensor LDR pemakaian ketika paralel dan seri terhadap sistem


8. Download File [Kembali]

File Rangkaian klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet Button klik disini
Datasheet Led klik disini
Datasheet Resistor klik disini

Tidak ada komentar:

Posting Komentar