LA 1_M2_P5
Percobaan IV
Kontrol Motor Servo dengan PWM
1. Prosedur [Kembali]
- Rangkailah seperti rangkaian berikut
- Buka Arduino IDE dan masukan listing program
- Upload program ke arduino
- Putar potensiometer dan amati keluarannya pada Dot Matriks dan Motor dc
2. Hardware dan Diagram Blok [Kembali]
Gambar 1. Rangkaian Hardware
1. Arduino Uno
2. Potensiometer
3. Motor DC
4. Dot Matriks
4. Kabel jumper
Gambar 1. Rangkaian Simulasi. Prinsip Kerja: Rangkaian memiliki 2 buah input dan 2 buah output, dimana input berasal dari perubahan teagangan yang masuk yang diatur oleh beban di potensiometer serta logika dari sensor infrared, dan output pada 4 dotmatriks yang disusun secara berbaris dan juga motor DC. Saat sensor infrared aktif, maka output yang dihasilkan adalah rangkaian dapat bekerja, dimana saat nilai adc dari potensiometer dibawah 257, maka motor akan berputar ke arah kanan dan begitu juga tampilan dari dot matriks akan menunjukkan arah panah ke kanan. Saat nilai dari potensiometer adalah 257-767, maka output yang didapatkan adalah motor DC berhenti dan dot matriks akan menunjukkan huruf X. Saat nilai dari potensiometer diatas 767, maka motor DC akan berputar ke arah kiri dan dot matriks akan menunjukkan tanda panah ke arah kiri. Apabila sensor infrared aktif, maka motor DC tidak akan aktif, tetapi dot matriks akan tetap aktif. |
4. Flowchart dan Listing Program [Kembali]
Flowchart:
Listing Program:
#include <LedControl.h>
// Inisialisasi modul MAX7219
LedControl lc = LedControl(5,6,7,1); // Pin DIN, CLK, LOAD (CS) dihubungkan ke Arduino
byte patterns[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // Pola LED untuk ditampilkan
// Pengaturan pin untuk dipswitch dan motor
const int potensio = A0;
const int infrared = 8;
const int enable = 4;
const int motor1Pin1 = 2;
const int motor1Pin2 = 3;
void setup() {
// Set up dot matrix module
lc.shutdown(0, false); // Mengaktifkan modul
lc.setIntensity(0, 8); // Mengatur kecerahan (0-15)
lc.clearDisplay(0); // Membersihkan tampilan
// Mengatur pin-pin sebagai output untuk motor
pinMode(enable, OUTPUT);
pinMode(infrared, INPUT);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Membaca nilai dari lm35
float adc = analogRead(potensio);
Serial.println(adc);
// Membaca nilai dari infrared
int infrarednya = digitalRead(infrared);
// Mengendalikan arah motor berdasarkan nilai dipswitch
if(infrarednya == HIGH){
digitalWrite(enable, HIGH);
if (adc <= 256) {
// Maju
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
displayArrowRight();
}
else if (adc >= 768) {
// Mundur
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
displayArrowLeft();
}
else {
// Berhenti
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
displayLetterX();
}
}
else{
digitalWrite(enable, LOW);
}
}
// Fungsi untuk menampilkan panah pada dot matrix
void displayArrow(byte pattern) {
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, pattern);
}
delay(500); // Mengatur kecepatan animasi
lc.clearDisplay(0);
delay(500); // Jeda sebelum membaca input lagi
}
// Menampilkan panah ke kanan
void displayArrowRight() {
byte arrowRight[8] = {
B00011000,
B00001100,
B00000110,
B11111111,
B00000110,
B00001100,
B00011000,
B00000000
};
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, arrowRight[row]);
}
}
// Menampilkan panah ke kiri
void displayArrowLeft() {
byte arrowLeft[8] = {
B00011000,
B00110000,
B01100000,
B11111111,
B01100000,
B00110000,
B00011000,
B00000000
};
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, arrowLeft[row]);
}
}
// Menampilkan huruf "X"
void displayLetterX() {
byte letterX[8] = {
B10000001,
B01000010,
B00100100,
B00011000,
B00011000,
B00100100,
B01000010,
B10000001
};
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, letterX[row]);
}
}
Ketika potensiometer diubah ubah nilainya dengan cara memutar maka akan dibaca oleh Arduino dan, arduino akan memberikan perintah untuk menampilkan panah dengan arah tertentu pada dot matriks dan motor dc yang berputar dengan arah tertentu sesuai nilai potensiometer yang di setting pada program arduino.
᭒ HTML↠ klik disini
᭒ Gambar Rangkaian ↠ klik disini
᭒ Video Demo ↠ klik disini
᭒ Listing Program ↠ klik disini
᭒ Video Demo ↠ klik disini
᭒ Listing Program ↠ klik disini
᭒ Datasheet Dot Matriks ↠ klik disini
᭒ Datasheet Infrared ↠ klik disini
᭒ Datasheet Arduino Uno ↠ klik disini
᭒ Datasheet Potensiometer ↠ klik disini
᭒ Datasheet Arduino Uno ↠ klik disini
᭒ Datasheet Potensiometer ↠ klik disini
No comments:
Post a Comment