TP2




Modul 2
PWM, ADC, dan Interrupt

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]
      1. Arduino Uno

      2. DipSwitch

      3. 7-Segment

      4. Resistor
      5. Power Supply
      6. Ground

Diagram Blok :


3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

→ Gambar Rangkaian Sebelum Disimulasikan
                                    





→ Gambar Rangkaian Setelah Disimulasikan
                                       

PRINSIP KERJA
    saat program dijalankan dan masuk ke komponen arduino. Selanjutnya, program terus berjalan dalam loop utama, menunggu input dari pengguna. 7Segment akan menampilkan hitung mundur dari 3 ke 0 saat tidak ada switch terjadi dari dipswitch. saat adanya swtich maka 7-segment akan menampilkan kombinasi 2,0,0,3 secara bergantian. dan apabila switch lagi maka akan kembali ke kondisi awal.

4. FlowChart [Kembali]

a. Listing Program 

// Define pin untuk mengontrol 7 segment display
#define segA 13
#define segB 12
#define segC 11
#define segD 10
#define segE 9
#define segF 8
#define segG 7
#define en1 5
#define en2 4
#define switchPin A0 // Analog pin for the switch

// Array of pins for each segment (A-G)
const int segmentPins[] = {segA, segB, segC, segD, segE, segF, segG};
const int numSegments = 7;

void setup() {
  // Set pin sebagai output
  pinMode(segA, OUTPUT);
  pinMode(segB, OUTPUT);
  pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT);
  pinMode(segE, OUTPUT);
  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);
  pinMode(en1, OUTPUT);
  pinMode(en2, OUTPUT);
}

void loop() {
  // Menunggu hingga switch diaktifkan
  while (analogRead(switchPin) < 500) {
    delay(100); // Tunda sebentar sebelum memeriksa kembali status switch
  }

  // Menampilkan angka 3, 2, 1
  digitalWrite(en1, LOW);
  digitalWrite(en2, HIGH);

  for (char i = '3'; i > '0'; i--) {
    displayCharacter(i);
    delay(1000);
  }

  // Menampilkan angka 2, 0, 0, 3
  char numbers[] = {'2', '0', '0', '3'};
  digitalWrite(en1, HIGH);
  digitalWrite(en2, LOW);
 
  for (int i = 0; i < 4; i++) {
    displayCharacter(numbers[i]);
    delay(1000);
  }

  // Menunggu hingga switch dinonaktifkan sebelum melanjutkan
  while (analogRead(switchPin) > 500) {
    delay(100); // Tunda sebentar sebelum memeriksa kembali status switch
  }
}

void displayCharacter(char key) {
  switch (key) {
    case '0':
      displaySegments(true, true, true, true, true, true, false);
      break;
    case '1':
      displaySegments(false, true, true, false, false, false, false);
      break;
    case '2':
      displaySegments(true, true, false, true, true, false, true);
      break;
    case '3':
      displaySegments(true, true, true, true, false, false, true);
      break;
    case '4':
      displaySegments(false, true, true, false, false, true, true);
      break;
    case '5':
      displaySegments(true, false, true, true, false, true, true);
      break;
    case '6':
      displaySegments(true, false, true, true, true, true, true);
      break;
    case '8':
      displaySegments(true, true, true, true, true, true, true);
      break;
    case '7':
      displaySegments(true, true, true, true, false, false, true);
      break;
    case '9':
      displaySegments(true, true, true, true, false, true, true);
      break;
    case 'A':
      displaySegments(true, true, true, false, true, true, true);
      break;
    case 'B':
      displaySegments(false, false, true, true, true, true, true);
      break;
    case 'C':
      displaySegments(true, false, false, true, true, true, false);
      break;
    case 'D':
      displaySegments(false, true, true, true, true, false, true);
      break;
    default:
      turnOffSegments();
      break;
  }
}

void displaySegments(bool a, bool b, bool c, bool d, bool e, bool f, bool g) {
  bool segments[] = {a, b, c, d, e, f, g};
  for (int i = 0; i < numSegments; i++) {
    digitalWrite(segmentPins[i], segments[i] ? HIGH : LOW);
  }
}

void turnOffSegments() {
  for (int i = 0; i < numSegments; i++) {
    digitalWrite(segmentPins[i], LOW);
  }
}


b. Flowchart



5. Kondisi [Kembali]
Kondisi  : 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 Simulasi Rangkaian Klik disini
Download HTML Klik disini
Download Video Simulasi Klik disini
Download Datasheet ARDUINO UNO klik disini











Komentar

Postingan populer dari blog ini

Cover

Cover uP dan uC