TUGAS PENDAHULUAN MODUL 2 PERCOBAAN 6 KONDISI 6
Modul 2 PWM, ADC, dan Interrupt
- 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 Setelah Disimulasikan
b. Prinsip Kerja
Pada percobaan 6 kondisi 6 ini kita menggunakan sensor LDR sebagai input dan motor stepper sebagai output. Disini kita menggunakan motor driver ULN2003A yang mana berfungsi untuk meningkatkan tegangan keluaran yang telah dikeluarkan oleh arduino agar dapat menjalankan motor stepper.
Sesuai dengan kondisi yang diminta, ketika tegangan yang terbaca pada sensor LDR < 2.5 maka sensor akan berlogika 0, sedangkan ketika sensor LDR > 2.5 maka akan mengaktifkan sensor LDR sehingga inputan yang masuk ke arduino bernilai 1. Hal ini akan mengaktifkan pin 8,9,10,11 yang mana akan aktif sesuai dengan kondisi yang telah dimasukkan pada program arduino yang mana akan mengaktifkan motor stepper sehingga motor stepper akan berputar sesuai dengan kondisi yang telah kita masukkan.
a. Flowchart
b. Listing Program
#include <Stepper.h>
#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
Komentar
Posting Komentar