TP 1: Percobaan 1 Kondisi 6
MODUL 3
PERCOBAAN 1 KONDISI 6
1. Rangkai semua komponen sesuai kondisi yang dipilih
2. Buat program di aplikasi arduino IDE
3. Setelah selesai masukkan program ke arduino di proteus
4. Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
5. Selesai
2. Hardware dan diagram blok [Kembali]
a. hardware
1. Arduino Uno
3. LED
b. Digram Blok
3. Rangkaian Simulasi dan Prinsip kerja [Kembali]
→Gambar Rangkaian Sebelum Disimulasikan
PRINSIP KERJA
Master:
Pada rangkaian di atas merupakan perocbaan Komunikasi UART. Arduino yang diatas bertindak sebagai master dalam sebuah sistem yang menggunakan beberapa tombol sebagai input. Setiap tombol dihubungkan ke pin digital pada Arduino dan masing-masing tombol memiliki aksi yang berbeda saat ditekan. yang mana pada pin DS1 sampai dengan DS4 merukanan tombol atau switch PULL DOWN dan DS5 sampai DS8 merupakan switch PULL UP Saat program berjalan, Arduino akan terus memeriksa status setiap tombol dengan menggunakan fungsi digitalRead(). Jika sebuah tombol ditekan, Arduino akan mengirimkan karakter yang sesuai melalui koneksi serial (UART) dengan menggunakan fungsi Serial.write(). Karakter yang dikirimkan akan sesuai dengan tombol yang ditekan, dan akan dibaca oleh perangkat arduino lain yang terhubung dengan Arduino melalui koneksi serial. Dalam simulasi pada Proteus ini ,jika menekan 1 switch pull-down dan 4 switch pull up akan mengirimkan data ke slave ardunio dan nantinya mengaktifkan running led, dan jika 4 switch pull down dan 1 switch pull UP akan mengiriimkan kondisi ini ke slave arduino dan nantinya akan mengaktifkan blinking led
Slave:
Pada arduino yang kedua betinda sebagai Slave dimana nantinya akan menerima inputan dari Arduino master dan mengeluarkan output berupa LED.Prinsip kerja rangkaian di atas adalah untuk mengontrol LED-LED yang terhubung ke pin Arduino berdasarkan status tombol-tombol yang terhubung ke pin digital lainnya. Pada setup(), pin-pin yang terhubung ke tombol-tombol diatur sebagai input dengan resistansi pull-up atau pull-down sesuai dengan kondisi. Pada loop(), program akan terus memeriksa status tombol-tombol tersebut. Jika kondisi tertentu terpenuhi, seperti empat tombol dalam kondisi pull-down atau tidak ada tombol dalam kondisi pull-up yang ditekan, maka program akan menjalankan aksi tertentu. Misalnya, untuk kondisi pull-down empat tombol, program akan menyalakan LED secara berurutan (running LED), sementara untuk kondisi ketika tidak ada tombol pull-down atau pull-up yang ditekan, program akan membuat LED-LED tertentu berkedip (blinking LED). Jika tidak ada kondisi yang terpenuhi, maka semua LED akan dimatikan. Dengan demikian, prinsip kerja rangkaian tersebut adalah memantau status tombol-tombol dan mengatur tindakan yang sesuai terhadap LED-LED yang terhubung.
4. FlowChart [Kembali]
a. Listing Program
Master
//Master Arduino
#include<SPI.h> //Library for SPI
int dip[] = {2,3,4,5,6,7,8,9};
int dipvalue[] = {};
void setup (){
Serial.begin(9600); //Starts Serial Communication at Baud Rate 115200
for(int i = 0; i < 8; i++){
pinMode(dip[i], INPUT_PULLUP);
}
SPI.begin(); //Begins the SPI commnuication
SPI.setClockDivider(SPI_CLOCK_DIV8); //Sets clock for SPI communication at 8 (16/8=2Mhz)
digitalWrite(SS,HIGH); // Setting SlaveSelect as HIGH (So master doesnt connnect with slave)
}
void loop(void) {
byte Mastersend;
int x = 1;
int activeSwitches = 0; // variabel untuk menghitung jumlah saklar yang aktif
// Membaca status saklar dan menghitung berapa yang aktif
for (int i = 0; i < 8; i++) {
dipvalue[i] = digitalRead(dip[i]);
if (dipvalue[i] == LOW) {
x = dip[i];
activeSwitches++;
}
}
if (activeSwitches == 2) {
digitalWrite(SS, LOW);
Mastersend = 2;
Serial.println(Mastersend);
SPI.transfer(Mastersend);
delay(100);
}
}
Slave
#include <SPI.h>
const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
volatile boolean received = false;
volatile byte Slavereceived;
int index;
int dg1 = A0;
int dg2 = A1;
void displayCharacter(int ch) {
byte patterns[10][7] = {
{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 0, 0, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0} // 9
};
if ((ch >= 0 && ch <= 9)) {
// Get the digit index (0-9) from the character
int index = ch;
// Write the pattern to the segment pins
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], patterns[index][i]);
}
}
}
void setup() {
Serial.begin(9600);
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
pinMode(dg1, OUTPUT);
pinMode(dg2, OUTPUT);
SPCR |= _BV(SPE); // Turn on SPI in Slave Mode
SPI.attachInterrupt(); // Interrupt ON is set for SPI communication
}
ISR (SPI_STC_vect) { // Interrupt routine function
Slavereceived = SPDR; // Value received from master is stored in variable Slavereceived
received = true; // Sets received as True
}
void loop() {
if (received) { // Logic to SET LED ON OR OFF depending upon the value received from master
Serial.println(Slavereceived);
if (Slavereceived == 2) {
for(int i=0;i<=9;i++){
if(i % 2 == 0 ){
digitalWrite(dg1,HIGH);
digitalWrite(dg2,LOW);
displayCharacter(i);
delay (100);
}
else{
digitalWrite(dg1, LOW);
digitalWrite(dg2, HIGH);
displayCharacter(i);
delay (100);
}
}
}
received = false; // Reset received flag
}
}
b. Flowchart
Arduino Master
Arduino Slave
Kondisi →Percobaan 2 Kondisi 7
4 switch dalam pull-down & 4 switch dalam pull-up, 1 switch pull-down dan 4 switch pull up mengaktifkan running led,4 switch pull down dan 1 switch pull up mengaktifkan blinking led
6. Video Simulasi [Kembali]
7. Download File [Kembali]
Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Program Arduino Master Klik disini
Download Program Arduino Slave Klik disini
Download Video Simulasi Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Dipswicth klik disini
Download Datasheet Resistor klik disini
Download Datasheet LED klik disini
Tidak ada komentar:
Posting Komentar