Modul 2
PWM, ADC, INTTERUPT
- Buatlah rangkaian sesuai dengan kondisi yang telah dipilih
- Buat Program pada software Arduino IDE
- Masukkan program yang telah dibuat pada software Arduino IDE sebagai library Arduino
- Jalankan rangkaian, sesuai dengan kondisi yang diinginkan
a. Rangkaian Simulasi
Gambar Rangkaian Disimulasikan
b. Prinsip Kerja
Disini kita menggunakan LDR sebagai input untuk menggerakan motor steper searah jarum jam, untuk inputnya diperlukan tegangan 2.5 dari LDR agar steper berputar, kemudian dari arduino akan memberikan output pada ULN dimana terhubung ke-4 buah kaki yang masing2 nya bernilai high atau low
untuk kondisinya sebagai berikut
if (ldrVoltage >= 0.625 && ldrVoltage <= 1.24) {
digitalWrite(D, HIGH);
digitalWrite(C, HIGH);
digitalWrite(B, LOW);
digitalWrite(A, LOW);
} else if (ldrVoltage > 1.24 && ldrVoltage <= 1.474) {
digitalWrite(D, HIGH);
digitalWrite(C, LOW);
digitalWrite(B, LOW);
digitalWrite(A, HIGH);
} else if (ldrVoltage > 1.574 && ldrVoltage <= 2.4) {
digitalWrite(D, LOW);
digitalWrite(C, LOW);
digitalWrite(B, HIGH);
digitalWrite(A, HIGH);
} else if (ldrVoltage > 2.5) {
digitalWrite(D, LOW);
digitalWrite(C, HIGH);
digitalWrite(B, HIGH);
digitalWrite(A, LOW);
} else {
// Jika tegangan di luar rentang yang diinginkan, berhenti motor
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
}
a. Flowchart
b. Listing Program
#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 A1
const int stepsPerRevolution = 200; // Banyak langkah perputaran
// Inisialisasi objek Stepper
Stepper myStepper(stepsPerRevolution, A, B, C, D);
void pergerakan_1() {
digitalWrite(A, LOW);
digitalWrite(D, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
}
void pergerakan_2() {
digitalWrite(A, HIGH);
digitalWrite(D, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void pergerakan_3() {
digitalWrite(A, HIGH);
digitalWrite(D, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
}
void pergerakan_4() {
digitalWrite(A, LOW);
digitalWrite(D, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
}
void nonpergerakan() {
digitalWrite(A, LOW);
digitalWrite(D, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void pergerakan() {
pergerakan_1();
delay(100);
pergerakan_2();
delay(100);
pergerakan_3();
delay(100);
pergerakan_4();
delay(100);
}
void setup() {
// Put your setup code here, to run once:
pinMode(PB5, INPUT);
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);
Serial.begin(9600);
}
void loop() {
int b4 = digitalRead(PB4);
int b3 = digitalRead(PB3);
int b2 = digitalRead(PB2);
int b1 = digitalRead(PB1);
int sensorLDRValue = analogRead(PB5); // Membaca nilai dari sensor LDR
float voltage = sensorLDRValue * (5.0 / 1023.0); // Mengonversi nilai bacaan menjadi tegangan (diasumsikan 5V)
Serial.print("Voltage: ");
Serial.println(voltage); // Mencetak nilai tegangan (opsional)
// Motor stepper
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);
}
// Check nilai sensor LDR
if (voltage > 2.5) {
Serial.println("LDR SENSOR active. Stepper motor rotating.");
// Eksekusi stepper
pergerakan();
} else {
Serial.println("Stepper Motor rotating.");
// Eksekusi stepper
myStepper.step(0);
}
delay(100);
}
Sertakan dengan LDR ketika bernilai >2.50 putaran motor searah jarum jam
Download HTML klik disini
Download Rangkaian Proteus klik disini
Download Program Arduino klik disini
Download Video klik disini
Download Datasheet Driver IC ULN2003A klik disini
Download Datasheet Arduino klik disini
Download Datasheet Motor Stepper klik disini
Download Datasheet Sensor LDR klik disini
Download Datasheet Push Button klik disini
Tidak ada komentar:
Posting Komentar