TUGAS PENDAHULUAN 2 Up dan Uc Modul 2
1. Prosedur [Kembali]
- Rangkailah seperti rangkaian berikut
- Buka Arduino IDE dan masukan listing program Upload program ke arduino
- Variasikan tombol yang ditekan dan amati keluarannya pada Dotmatriks
2. Hardware dan
Diagram Blok [Kembali]
Prinsip kerja dari rangkaian ini adalah, ketika Arduino menerima inputan sinyal digital dari button dan sesuai dengan program, maka Arduino akan menangkapnya sebagai sebuah instruksi, yang mana akan meneruskan ke moto stepper. Lalu akan terlihat pergerakan motor stepper yang bergerak secara beraturan.
PB1 akan menggerakkan motor ke 0 derajat, PB2 ke 90 derajat, PB3 ke 180 derajat, sedangkan PB4 ke 270 derajat. Pergerakan tadi bergerak secara clockwise (searah jarum jam). Namun apabila sensor Infrared berlogika low, maka motor stepper akan bergerak dengan arah berlawanan jarum jam.
4. Flowchart dan Listing Program [Kembali]
Flowchart
Listing
Program
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <LedControl.h> //Library untuk LED Dot Matrix | |
const int DIP_Pins[] = {13, 12, A0, A1, A2, A3, A4, A5}; // Pin DIP switch terhubung ke Arduino | |
LedControl lc = LedControl(2, 3, 4, 1); // Pin DIN, CLK, LOAD (CS), dan jumlah Dot Matrix yang dihubungkan ke Arduino | |
byte patterns[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // Pola LED untuk ditampilkan | |
void setup() { | |
for (int i = 0; i < 8; i++) { | |
pinMode(DIP_Pins[i], INPUT_PULLUP); // Mengatur pin DIP switch sebagai input dengan pull-up resistor | |
} | |
lc.shutdown(0, false); // Mengaktifkan display | |
lc.setIntensity(0, 8); // Mengatur kecerahan LED (nilai antara 0 dan 15) | |
lc.clearDisplay(0); // Membersihkan tampilan dot matrix | |
} | |
void loop() { | |
// Menghitung jumlah switch yang aktif | |
int activeSwitches = 0; | |
for (int i = 0; i < 8; i++) { | |
if (digitalRead(DIP_Pins[i]) == LOW) { | |
activeSwitches++; | |
} | |
} | |
// Menampilkan huruf "D" jika 3 switch aktif | |
if (activeSwitches == 3) { | |
patterns[0] = B00000000; | |
patterns[1] = B00000011; | |
patterns[2] = B00011110; | |
patterns[3] = B00101010; | |
patterns[4] = B00101011; | |
patterns[5] = B11101010; | |
patterns[6] = B10101010; | |
patterns[7] = B11101011; | |
} | |
else { | |
// Menampilkan pola default jika tidak ada 3, 5, atau 7 switch yang aktif | |
for (int i = 0; i < 8; i++) { | |
patterns[i] = 0; | |
} | |
} | |
// Menampilkan pola LED pada dot matrix | |
for (int row = 0; row < 8; row++) { | |
lc.setRow(0, row, patterns[row]); | |
} | |
delay(100); // Delay untuk tampilan LED stabil | |
} |
#define A 8 | |
#define B 9 | |
#define C 10 | |
#define D 11 | |
#define PB1 2 | |
#define PB2 3 | |
#define PB3 4 | |
#define PB4 5 | |
#define PB5 12 | |
void setup() { | |
// put your setup code here, to run once: | |
Serial.begin(9600); | |
pinMode(A, OUTPUT); | |
pinMode(B, OUTPUT); | |
pinMode(C, OUTPUT); | |
pinMode(D, OUTPUT); | |
pinMode(PB1, INPUT_PULLUP); | |
pinMode(PB2, INPUT_PULLUP); | |
pinMode(PB3, INPUT_PULLUP); | |
pinMode(PB4, INPUT_PULLUP); | |
pinMode(PB5, INPUT_PULLUP); | |
} | |
void pergerakan_1(){ | |
digitalWrite(A,0); | |
digitalWrite(D,1); | |
digitalWrite(B,0); | |
digitalWrite(C,1); | |
} | |
void pergerakan_2(){ | |
digitalWrite(A,1); | |
digitalWrite(D,1); | |
digitalWrite(B,0); | |
digitalWrite(C,0); | |
} | |
void pergerakan_3(){ | |
digitalWrite(A,1); | |
digitalWrite(D,0); | |
digitalWrite(B,1); | |
digitalWrite(C,0); | |
} | |
void pergerakan_4(){ | |
digitalWrite(A,0); | |
digitalWrite(D,0); | |
digitalWrite(B,1); | |
digitalWrite(C,1); | |
} | |
void nonpergerakan(){ | |
digitalWrite(A, 0); | |
digitalWrite(D, 0); | |
digitalWrite(B, 0); | |
digitalWrite(C, 0); | |
} | |
void loop() { | |
int b4 = digitalRead(PB4); | |
int b3 = digitalRead(PB3); | |
int b2 = digitalRead(PB2); | |
int b1 = digitalRead(PB1); | |
int b5 = digitalRead(PB5); | |
if (b4 == LOW) | |
{ | |
pergerakan_4(); // Pindahkan servo ke 45 derajat | |
} | |
else if (b3 == LOW) | |
{ | |
pergerakan_3(); // Pindahkan servo ke 45 derajat | |
} | |
else if (b2 == LOW) | |
{ | |
pergerakan_2(); // Pindahkan servo ke 45 derajat | |
} | |
else if (b1 == LOW) | |
{ | |
pergerakan_1(); // Pindahkan servo ke 45 derajat | |
} | |
else { | |
nonpergerakan(); | |
delay(100); | |
} | |
if (b5 == LOW) | |
{ | |
pergerakan_2(); | |
delay(10); | |
pergerakan_3(); | |
delay(10); | |
pergerakan_4(); | |
delay(10); | |
pergerakan_1(); | |
delay(10); | |
pergerakan_2(); | |
delay(10); | |
pergerakan_3(); | |
delay(10); | |
pergerakan_4(); | |
delay(10); | |
pergerakan_1(); | |
delay(10); | |
} | |
} |
5. Video Demo [Kembali]
Saat Praktikum diambil
6. Kondisi [Kembali]
P6K4 Sertakan dengan IR sensor, ketika berlogika LOW putaran motor berlawanan arah jarum jam
7. Video Simulasi [Kembali]
8. Link Download [Kembali]
Download
HTML [Klik di sini]
Download file
rangkaian [Klik di sini]
Download video
rangkaian [Klik di sini]
Download program
Arduino [Klik di sini]
Download datasheet
Arduino [Klik di
sini]
Download datasheet
IR [Klik di sini]
No comments:
Post a Comment