Kamis, 28 Maret 2024

Laporan Akhir 2 M2

 



Laporan Modul 2
(Percobaan 4)

1. Prosedur 
[Kembali]

1. Siapkan semua komponen yang akan di rangkai
2. Rangkai rangkaian sesuai dengan modul
3. Buat program di arduino di software Arduino IDE.
4. Compile program tersebut dan upload ke dalam hardware arduino
5. Setelah program selesai di upload, jalankan rangkaian 
6. Finish

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Arduino Uno




2. Motor Servo




3. Keypad





4. Kabel Jumper


 5. Breadboard




Diagram Blok  :



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi Setelah di Running:



Prinsip Kerja : 

Pada percobaan ini, kita akan menggunakan Keypad, Motor Servo, BreadBoard, Arduino Uno dan beberapa kabel Jumper. Keypad akan digunakan sebagai inputan dan Motor Servo sebagai output dari rangkaian. Setelah hardware dirangkai lalu upload program ke Arduino Uno

Disini Keypad akan berfungsi untuk mengontrol Motor Servo dimana perintah pengontrolannya posisi atau sudut dari motor servo ada pada program. Dan pada program kita menggunakan “Switch case”

Berikut adalah Case yang akan terjadi apabila menekan tombol yang bersangkutan :

a.       Case 1: Dengan menekan tombol 1: Motor servo akan berputar ke posisi 0 derajat.

b.      Case 2: Dengan menekan tombol 1: Motor servo akan berputar ke posisi 45 derajat.

c.       Case 3: Dengan menekan tombol 1: Motor servo akan berputar ke posisi 90 derajat.

d.      Case 4: Dengan menekan tombol 1: Motor servo akan berputar ke posisi 135 derajat.

e.       Case 5: Dengan menekan tombol 1: Motor servo akan berputar ke posisi 180 derajat.

f.        Case 6: Dengan menekan tombol 1: Motor servo akan berputar ke posisi 135 derajat.

g.      Case 7: Dengan menekan tombol 1: Motor servo akan berputar ke posisi 90 derajat.

h.      Case 8: Dengan menekan tombol 1: Motor servo akan berputar ke posisi 45 derajat.

i.        Case 9: Dengan menekan tombol 1: Motor servo akan berputar ke posisi 0 derajat.

  

4. Flowchart dan Listing Program [Kembali]

Flowchart :



Listing Program :

#include <Servo.h>
#include <Keypad.h>
Servo servoMotor;
const int servoPin = 11; // PWM pin for servo
const int numRows = 4; // Number of rows in keypad
const int numCols = 3; // Number of columns in keypad
char keys[numRows][numCols] = {
 {'1', '2', '3'},
 {'4', '5', '6'},
 {'7', '8', '9'},
 {'*', '0', '#'}
};
byte rowPins[numRows] = {9, 8, 7, 6}; // Rows 0 to 3
byte colPins[numCols] = {5, 4, 3}; // Columns 0 to 2

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, numRows, numCols);
void setup() {
 servoMotor.attach(servoPin);
 servoMotor.write(90); // Initial position
 Serial.begin(9600);
}
void loop() {
 char key = keypad.getKey();

 if (key != NO_KEY) {
 Serial.println(key);

 // Perform actions based on the key pressed
 switch (key) {
 case '1':
 // Move servo to position 0 degrees
 servoMotor.write(0);
 break;

 case '2':
 // Move servo to position 45 degrees
 servoMotor.write(45);
 break;

 case '3':
 // Move servo to position 90 degrees
 servoMotor.write(90);
 break;

 case '4':
 // Move servo to position 135 degrees
 servoMotor.write(135);
 break;

 case '5':
 // Move servo to position 180 degrees
 servoMotor.write(180);
 break;

 case '6':
 // Move servo to position 135 degrees
 servoMotor.write(135);
 break;

 case '7':
 // Move servo to position 90 degrees
 servoMotor.write(90);
 break;

 case '8':
 // Move servo to position 45 degrees
 servoMotor.write(45);
 break;

 case '9':
 // Move servo to position 0 degrees
 servoMotor.write(0);
 break;

 default:
 break;
 }
 }
}


5. Kondisi [Kembali]

Percobaan 4
Kontrol Motor Servo dengan PWM

6. Video Simulasi [Kembali]



7. Download File [Kembali]

Download Rangkaian Simulasi Klik Disini

Download HTML Klik Disini

Download Video Percobaan Klik Disini

Download Kodingan Program Klik Disini

Download Datasheet Arduino Klik Disini

Download Datasheet Motor Servo Klik Disini

Download Datasheet Keypad Klik Disini







Laporan Akhir 1 M2

 



Laporan Modul 2
(Percobaan 3)

1. Prosedur 
[Kembali]

1. Siapkan semua komponen yang akan di rangkai
2. Rangkai rangkaian sesuai dengan modul
3. Buat program di arduino di software Arduino IDE.
4. Compile program tersebut dan upload ke dalam hardware arduino
5. Setelah program selesai di upload, jalankan rangkaian 
6. Finish

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Arduino Uno




2. Dip Switch






3. 7-Segment



4. Kabel Jumper


 5. Breadboard



 6. Resistor



Diagram Blok  :


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi Setelah di Running:



Prinsip Kerja : 

    Pada percobaan ini, kita menggunakan dip beberapa komponen yaitu 7-Segment 2 Digit, Dip Switch, Resistor, Arduino UNO, BreadBoard dan beberapa Kabel Jumper. Pada inputan kita menggunakan Dip Switch dan untuk output berupa 7-Segment 2 Digit. Kaki Pin Dip Switch dihubungkan ke kaki A0-A3 pada Arduino, sedangkan Kaki Pin 7-segment 2 Digit hubungkan ke pin 4-13 Arduino.

Setelah Hardware sudah dirangkai lalu inputkan Program yang telah kita siapkan sebelumnya ke Arduino Uno melalui Arduino IDE

Pada Program Arduino terdapat beberapa kondisi yaitu :

 

a.       Apabila Switch 1 ditekan, 7-Segment akan menampilkan Counting Up (Perhitungan ke Atas) namun dengan kondisi Digit pada  7-Segment akan selalu berganti ganti antara kedua Digitnya pada setiap 1 Angka

 

b.      Apabila Switch 2 ditekan, 7-Segment akan menampilkan Counting Down (Perhitungan ke Bawah) maka program akan menampilkan angka dari 0 hingga 9 secara berurutan pada display tujuh segmen dalam 1 Digit


c.       Apabila Switch 1 ditekan, 7-Segment akan menampilkan Counting Up (Perhitungan ke Atas) namun dengan kondisi Digit pada  7-Segment akan selalu berganti ganti antara kedua Digitnya pada setiap 1 Angka. Bedanya dengan kondisi 1 adalah pada kondisi 3 terdapat debouncing selama 2 detik

 

d.      Apabila Switch 2 ditekan, 7-Segment akan menampilkan Counting Down (Perhitungan ke Bawah) maka program akan menampilkan angka dari 0 hingga 9 secara berurutan pada display tujuh segmen dalam 1 Digit. Bedanya dengan kondisi 1 adalah pada kondisi 3 terdapat debouncing selama 2 detik dan juga delay selama 200ms


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 Simulasi [Kembali]



7. Download File [Kembali]

Download Rangkaian Simulasi Klik Disini

Download HTML Klik Disini

Download Video Percobaan Klik Disini

Download Kodingan Program Klik Disini

Download Datasheet Arduino Klik Disini

Download Datasheet Dip Switch Klik Disini

Download Datasheet 7-segment Klik Disini







Senin, 25 Maret 2024

Tugas Pendahuluan 2 M2




 Modul 2
(Percobaan 3 Kondisi 4)

1. Prosedur
[Kembali]

1. Siapkan semua komponen yang akan di rangkai pada proteus
2. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
3. Buat program di arduino di software Arduino IDE.
4. Compile program tersebut dan upload ke dalam arduino pada proteus
5. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
6. Finish

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1.  Arduino Uno



2. Resistor



3. Seven Segment 2 Digit




4. Dip Switch




Diagram Blok  :




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi Sebelum dirunning:



Rangkaian Simulasi Setelah dirunning:



Prinsip Kerja : 

Pada percobaan kali ini, Dip switch berperan sebagai inputan dan Seven segment 2 digit akan berperan sebagai output. Dip switch dihubungkan ke kaki A0-A3 arduino, lalu pada outputnya yaitu 7-segment 2 digit yang dihubungkan ke pin 4-13 Arduino. Seuai dengan kondisi kodingan program yaitu untuk mengontrol dan menampilkan angka pada 7-segment. 

Pada kodingan yang dibuat pada arduino memiliki empat kondisi kemungkinan yaitu : pertama, jika tombol sw1, sw2, dan sw3 ditekan secara bersamaan, display akan menampilkan angka secara berurutan. Kedua, jika hanya tombol sw1 yang ditekan, angka akan berubah satu per satu setiap detik. Ketiga, jika hanya tombol sw2 yang ditekan, angka pada display akan melakukan counting dari 9 hingga 0. Lalu jika hanya tombol sw3 yang ditekan, angka akan berubah satu per satu dengan jeda waktu yang lebih cepat. Selain itu, jika tombol sw4 ditekan, display akan menampilkan urutan angka 3, 2, 1, dan 0 dan setelah itu, akan muncul angka 2, 0, 0, 3. Dengan kondisi yang diberikan, ketika 1 switch aktif (switch 4), maka sevens egment akan menampilkan kombinasi 2, 0, 0, 3 setelah hitung mundur dari 3.

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] = {
    {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()
{
    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 && sw2 == LOW && sw3 == 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 (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 > 500) { // 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 > 500) { // Debouncing
        lastTime = millis();
        digitalWrite(D2, HIGH);
        digitalWrite(D1, LOW);
        for (int i = 3; i >= 0; i--) {
            number(i);
            delay(200); // Delay agar Anda bisa melihat perubahan digit
        }
        delay(1000); // Jeda 1 detik

        // Menampilkan angka 2, 0, 0, 3 dengan jeda masing-masing angka 0.2 detik
        int numbers[] = {2, 0, 0, 3};
        for (int i = 0; i < 4; i++) {
            number(numbers[i]);
            delay(200); // Jeda 0.2 detik setiap angka
        }
    }
}
}

5. Kondisi [Kembali]

Percobaan 3 Kondisi 4
Ketika 1 switch aktif 7-Segment akan menampilkan kombinasi 2,0,0,3 setelah hitung mundur dari 3

6. Video Simulasi [Kembali]




7. Download File [Kembali]

Download Rangkaian Simulasi Klik Disini

Download HTML Klik Disini

Download Video Percobaan Klik Disini

Download Kodingan Program Klik Disini

Download Datasheet Arduino Klik Disini

Download Datasheet Dip Switch Klik Disini

Download Datasheet 7-Segment  Klik Disini









Jawaban UTS No.3 Up

     [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Percobaan 5. File Download   Jawaban No.3 1. Tu...