1. Prosedur [Kembali]
- Rangkai semua komponen
- Buat program di aplikasi arduino IDE
- Setelah selesai masukkan program ke arduino
- Jalankan program pada simulasi dan cobakan dengan modul
- Lihat hasil pada motor servo dengan menekan tombol keypad
2. Hardware dan Diagram Blok [Kembali]
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Pada eksperimen 4 dengan Kondisi 1, kita diminta untuk menggunakan keypad dengan angka 1 hingga 9 untuk memberikan sinyal PWM dari 0 hingga 180, dengan jarak 20 antara setiap nilai PWM. Input yang digunakan adalah keypad,dan outputnya adalah motor servo. Motor servo bergerak secara presisi sesuai dengan sudutnya berdasarkan sinyal PWM yang diberikan. Tujuannya adalah mengatur sudut motor servo sesuai dengan kondisi yang diberikan menggunakan keypad.
4. Flowchart dan Listing Program [Kembali]
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 <LiquidCrystal.h> | |
LiquidCrystal lcd(13, 12, 11, 10, 9, 8); | |
int sw1 = 2; | |
int sws[]={3,4,7}; | |
int numsw = 3; | |
int front = 6; | |
int back = 5; | |
void setup() { | |
// put your setup code here, to run once: | |
lcd.begin(16,2); | |
pinMode(sw1,INPUT); | |
for(int thesw = 0; thesw < numsw; thesw++){ | |
pinMode(sws[thesw],INPUT); | |
} | |
pinMode(front,OUTPUT); | |
pinMode(back,OUTPUT); | |
Serial.begin(9600); | |
} | |
void loop() { | |
// put your main code here, to run repeatedly: | |
int s1 = digitalRead(sw1); | |
int ldr = analogRead(A0); | |
if(s1 == HIGH){ | |
int activesw = 0; | |
for(int thesw = 0; thesw < numsw; thesw++){ | |
if(digitalRead(sws[thesw]) == HIGH){ | |
activesw++; | |
} | |
} | |
Serial.print("Number of Switch : "); | |
Serial.println(activesw); | |
delay(200); | |
switch(activesw){ | |
case 0 : | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print(ldr); | |
lcd.setCursor(0,1); | |
lcd.print("The LDR Value"); | |
delay(200); | |
break; | |
case 1 : | |
lcd.clear(); | |
lcd.setCursor(2,0); | |
lcd.print("Running The"); | |
lcd.setCursor(2,1); | |
lcd.print("Motor"); | |
digitalWrite(front,HIGH); | |
digitalWrite(back,LOW); | |
delay(200); | |
break; | |
case 2 : | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print("LDR Value : "); | |
lcd.setCursor(13,0); | |
lcd.print(ldr); | |
if(ldr < 550){ | |
lcd.setCursor(0,1); | |
lcd.print(" "); | |
lcd.setCursor(0,1); | |
lcd.print("turn Motor right"); | |
digitalWrite(front,HIGH); | |
digitalWrite(back,LOW); | |
}else{ | |
lcd.setCursor(0,1); | |
lcd.print(" "); | |
lcd.setCursor(0,1); | |
lcd.print("turn Motor left"); | |
digitalWrite(front,LOW); | |
digitalWrite(back,HIGH); | |
} | |
break; | |
case 3 : | |
int pwm = map(ldr,0,1023,0,255); | |
digitalWrite(back,LOW); | |
analogWrite(front,pwm); | |
lcd.clear(); | |
lcd.setCursor(0,0); | |
lcd.print("PWM = ");lcd.print(pwm); | |
lcd.setCursor(0,1); | |
lcd.print(" Control ???"); | |
delay(200); | |
break; | |
} | |
delay(10); | |
}else{ | |
lcd.clear(); | |
lcd.setCursor(4,0); | |
lcd.print("ELECTRONIC"); | |
lcd.setCursor(0,1); | |
lcd.print("&INSTRUMENTATION"); | |
delay(100); | |
} | |
} |
- Flowchart
- Listing Program
#include <Servo.h>
#include <Keypad.h>
Servo servoMotor;
const int servoPin = 11; // PWM pin for servo
const int numRows = 4; // Number of rows in keypad
const int numCols = 3; // Number of columns in keypad
char keys[numRows][numCols] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[numRows] = {9, 8, 7, 6}; // Rows 0 to 3
byte colPins[numCols] = {5, 4, 3}; // Columns 0 to 2
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, numRows, numCols);
void setup() {
servoMotor.attach(servoPin);
servoMotor.write(90); // Initial position
Serial.begin(9600);
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
Serial.println(key);
// Perform actions based on the key pressed
switch (key) {
case '1':
// Move servo to position 0 degrees
servoMotor.write(20);
break;
case '2':
// Move servo to position 45 degrees
servoMotor.write(40);
break;
case '3':
// Move servo to position 90 degrees
servoMotor.write(60);
break;
case '4':
// Move servo to position 135 degrees
servoMotor.write(80);
break;
case '5':
// Move servo to position 180 degrees
servoMotor.write(100);
break;
case '6':
// Move servo to position 135 degrees
servoMotor.write(120);
break;
case '7':
// Move servo to position 90 degrees
servoMotor.write(140);
break;
case '8':
// Move servo to position 45 degrees
servoMotor.write(160);
break;
case '9':
// Move servo to position 0 degrees
servoMotor.write(180);
break;
default:
break;
}
}
}
5. Kondisi [Kembali]
Modul 2 Percobaan 4
6. Video Demo [Kembali]
7. Link Download [Kembali]
Download HTML [Klik di
sini]
Download video
rangkaian [Klik di sini]
Download program
Arduino [Klik di
sini]
Download datasheet Arduino [Klik di
sini]
Download datasheet Motor Servo [Klik di
sini]
No comments:
Post a Comment