Laporan Akhir 2

 LA 2: Percobaan 5



1. Prosedur 
[Kembali]

1. Rangkai rangkaian pada alat sesuai dengan modul.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan rangkaian.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. motor dc
2. modul motor driver L298D
3. arduino
4. potensio
5. dotmatrix
6. sensor infrared



Diagram Blok:

                



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :





Prinsip Kerja :

Prinsip kerja dari rangkaian ini adalah menggunakan IR sensor dan potensio sebagai input lalu motor DC dan dot matrix sebagai output nya. IR sensor dihubungkan ke arduino sebagai triger dari enable pada motor driver L298D dimana memiliki fungsi sebagai aktivasi nya, kemudian potensio meter dihubungkan dengan arduino sebagai triger tegangan. pada pemrograman sudah diatur pada ADC tertentu akan mentriger motor dan dot matrix. salah satu contohnya saat potensio diatur tegangan sebesar 1,25 V atau dalam ADC dengan nilai 256, maka akan di triger motor DC bergerak ke kanan dan dot matrix memberi panah ke kiri.


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]); 
 } 
 }

5. Kondisi [Kembali]

Percobaan 5 : Kontrol putaran motor DC

6. Video Demo [Kembali]




7. Soal Analisa [Kembali]

1. Bandingkan rangkaian TP dengan rangkaian praktikum
2. kenapa saat percobaan sensor infrared justru memberikan kondisi yang berbeda?
3. Bagaimana cara potensio mengubah nilai ADC yang masuk ke arduino?


8. Download File [Kembali]

File Rangkaian klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet Motor DC klik disini
Datasheet IR sensor klik disini
Datasheet motor driver klik disini
Datasheet dot matrix klik disini

Laporan Akhir 1

 LA 1: Percobaan 4



1. Prosedur 
[Kembali]

1. Rangkai rangkaian pada alat sesuai dengan modul.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan rangkaian.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

bagian kiri = motor servo
biru tengah = arduino
bawah kanan = keypad



Diagram Blok:

                



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :






Prinsip Kerja :

Prinsip kerja dari rangkaian ini adalah menggunakan keypad sebagai input dan motor servo sebagai output. keypad memiliki peran sebagai pengatur sudut, pada program keypad sudah diatur matrix nya dan kemudian diatur kondisinya ketika buttonya ditekan. lalu perintah dibaca oleh arduino sesuai matrix dan program yang sudah dimasukan, kemudian arduino mengirim sinyal kepada motor servo sesuai program. dimana pada program kenaikan nya adalah 45 derajat.


4. Flowchart dan Listing Program [Kembali]

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(0);
 break; 
 case '2': // Move servo to position 45 degrees 
 servoMotor.write(45);
 break;
 case '3': // Move servo to position 90 degrees 
 servoMotor.write(90); 
 break; 
 case '4': // Move servo to position 135 degrees 
 servoMotor.write(135); 
 break; 
 case '5': // Move servo to position 180 degrees 
 servoMotor.write(180); 
 break; case '6': // Move servo to position 135 degrees 
 servoMotor.write(135); 
 break; 
 case '7': // Move servo to position 90 degrees 
 servoMotor.write(90); 
 break; 
 case '8': // Move servo to position 45 degrees 
 servoMotor.write(45); 
 break; case '9': // Move servo to position 0 degrees 
 servoMotor.write(0); 
 break; 
 default: 
 break; 
 }
 }
 } 

5. Kondisi [Kembali]

Percobaan 4 : Keypad dan Motor Servo

6. Video Demo [Kembali]




7. Soal Analisa [Kembali]

1. Apakah motor servo dapat berfungsi tanpa PWM?, Kenapa hal seperti itu terjadi?
2. Bagaimana cara kerja motor servo bisa bergerak sesuai arah yang ditekan pada keypad, nilai apa yang dikiberikan oleh keypad pada motor servo?


8. Download File [Kembali]

File Rangkaian klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet Motor Servo klik disini
Datasheet Keypad klik disini

Tugas Pendahuluan 2

Tp 1 : Percobaan 6  Kondisi 4



Tugas Pendahuluan 1 Modul 2
(Percobaan 6 Kondisi 4)

1. Prosedur [Kembali]


1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Arduino



2. Switch





4. Resistor





Diagram Blok:



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :





Prinsip Kerja :

Pada percobaan 6 ini memiliki prinsip kerja dengan inputan push button dan IR dengan output berupa motor stepper, IR akan menjadi aktif dan mati motor stepper, sedangkan push button akan menjadi penentu arah sudut dari motor stepper, setiap 1 PB akan membuat sudut, dan pada motor menjadi 90, sehingga ke 4 PB akan bertotal 360. pada kondisi percobaan berfokus pada pengaturan IR yang saat logika 0 akan memutar motor ke arah kiri.
 
4. Flowchart dan Listing Program [Kembali]

Flowchart :



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 

 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); 

 } 

 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); 

 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); 

 } 

 } 

5. Kondisi [Kembali]

Percobaan 6 Kondisi 4

Saat IR logika 0 maka motor berlawanan arah jarum jam

6. Video Simulasi [Kembali]







7. Download File [Kembali]

File Rangkaian klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet Switch klik disini
Datasheet IR sensor klik disini
Datasheet motor Stepper klik disini

Tugas Pendahuluan 1

Tp 1 : Percobaan 5  Kondisi 4



Tugas Pendahuluan 1 Modul 2
(Percobaan 5 Kondisi 4)

1. Prosedur [Kembali]


1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

1. Arduino



2. Switch





4. Resistor





Diagram Blok:



3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :





Prinsip Kerja :

Pada percobaan 5 ini menggunakan prinsip kerja saat switch sesuai dengan kondisi yang diatur 1,2,3,4 makan akan menggerakana motor sesuai kondisinya dan juga dihubungkan dengan dot matrix untuk memberi tampilan sesuai kondisi, pemrogramanya sendiri berawal dengan pengaturan pin input berupa switch dan IR obtical, dimana IR obtical sendiri berfungsi sebagai triger pin enable pada motor driver. kemudian dilanjutkan dengan output berupa motor driver dan dot matrix yang dimana pada programnya diatur dengan beberapa kondisi tergantung switch yang 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]); 
 } 
 }  

5. Kondisi [Kembali]

Percobaan 5 Kondisi 4
Semua switch Pull-up, switch 1,2,3 motor ke kiri panah ke kanan, switch 1,2,4 motor ke kanan panah ke kiri


6. Video Simulasi [Kembali]







7. Download File [Kembali]

File Rangkaian klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet Switch klik disini
Datasheet dotmatrix klik disini
Datasheet motor DC klik disini
Among Us - Crewmates

Modul 3 : Communication

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Percobaan Percobaan A. Tugas Pendahuluan 1 B. Tugas...