Percobaan 3
DIP SWITCH & SEVEN SEGMENT
1. Foto Hardware dan Diagram Blok [Kembali]
2. Prosedur Percobaan [Kembali]
+ Rangkai semua komponen
+ buat program di aplikasi arduino IDE
+ setelah selesai masukkan program ke arduino
+ jalankan program pada simulasi dan cobakan dengan modul
Prinsip Kerja
Pada percobaan 3 modul 2 menggunakan komponen berupa arduino uno sebagai pusat pengendali, dip switch sebagai inputan yang terhubung dengan arduino uno menggunakan kabel jumper, arduino uno akan memberikan
4. Flowchart dan Listing Program [Kembali]
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
}
}
}
}
Percobaan 3 Modul 2
1. Apa itu timer arduino, apa itu millis dan delay, apa perbedaannya dan kenapa dibedakan
Jawab :
- Timer adalah kemampuan internal Arduino untuk mengukur waktu dan menjalankan program secara terjadwal serta mekanisme yang memungkinkan kita dapat mengatur waktu dan mengendalikan tindakan berdasarkan waktu tertentu.
- Millis adalah fungsi yang mengembalikan nilai waktu yang telah berlalu sejak Arduino dihidupkan. Millis adalah non-blocking, artinya program tetap berjalan sambil memeriksa waktu setiap kali melalui loop, dan ketika waktu tertentu telah berlalu, program kembali ke tugas yang memanggil millis dan menyelesaikan tugas tersebut.
- Dellay adalah fungsi yang menghentikan program selama periode waktu tertentu, digunakan untuk membuat jeda dalam program.tetapi dapat menghambat responsivitas program jika digunakan secara berlebihan.
Kenapa dibedakan : Millis digunakan untuk mengukur waktu yang telah berlalu, sedangkan delay
digunakan untuk membuat jeda dalam program.
2. Analisa pengaruh penggunaan millis dan delay pada program yg di gunakan
Jawab :
Pada program yang digunakan Delay berpengaruh pada pemberian jeda antara perubahan digit yang ditampilkan serta memberikan waktu bagi pengguna untuk melihat perubahan digit secara visual.
Sedangkan penggunaan Millis berpengaruh untuk menghindari masalah debouncing pada pembacaan tombol. Debouncing adalah fenomena di mana saklar fisik seperti tombol sering kali tidak memberikan sinyal yang stabil saat ditekan.
᭒ HTML↠ klik disini
᭒ Video Percobaan↠ klik disini
Tidak ada komentar:
Posting Komentar