Jumat, 03 Mei 2024

 

MODUL 3

Percobaan 4


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

  • Hardware
1. Modul Arduino Uno
Spesifikasi Arduino

2.  Keypad






3. LCD






  • Diagram Blok











 

  • Prinsip Kerja
Pada percobaan ini kita menggunakan 2 buah arduino untuk mendemonstrasikan komunikasi Serial UART, pada arduino master terhubung ke keypad, keypad disini sebagai input yang mana datanya nanti alkan dikirim ke arduino lainya, pada arduino slave terhubung ke LCD yang akan menampilkan tombol apa yang ditekan pada keypad, untuk kedua arduino ini terhubung secara serial UART melalui pin 0 dan 1 (Tx dan Rx). Pada saat angka 1 ditekan pada keypad maka pada LCD akan ditampilkan  angka 1 begitu juga untuk angka lainya  

  • Flowchart

  • Listing Program 
Master

// MASTER
#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 3;
// Array to represent keys on keypad
char hexaKeys[ROWS][COLS] = {
 {'1', '2', '3'},
 {'4', '5', '6'},
 {'7', '8', '9'},
 {'*', '0', '#'}
};
byte rowPins[ROWS] = {7, 6, 5, 4};
byte colPins[COLS] = {8, 9 , 10};
// Create keypad object
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup()
{
Serial.begin(9600);
}
void loop()
{
 char customKey = customKeypad.getKey();
 if (customKey)
 {
 Serial.write(customKey);
 }
 delay(20);
}


Slave
//SLAVE
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
char message;
void setup()
{
 Serial.begin(9600);
 lcd.begin(16, 2);
}
void loop()
{
 lcd.setCursor(0, 0);
 lcd.print("Tombol :");
 if (Serial.available())
 {
 message = Serial.read();
 if (message)
 {
 lcd.print(message);
 }
}
}

6. Kondisi [Kembali]

Percobaan 4 Tanpa Kondisi


7. Download File [Kembali]

Download HMTL klik disini
Download Simulasi Rangkaian Klik disini
Download Video Simulasi klik disini
Download Program Master klik  disini
Download  Program Slave klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Button klik disini

Laporan Akhir M3

 

Modul 3

Percobaan 1




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

  • Hardware
1. Modul Arduino Uno
Spesifikasi Arduino

2.  LED
Bagian-Bagian LED
3. DipSwitch
Spesifikasi:




Spesifikasi :
  • Tampilan 2 baris @ 16 karakter, 5 x 8 pixel
  • Display controller: HD44780 (standar industri LCD)
  • Dilengkapi lampu latar warna biru/hijau/kuning
  • Sudut pandang lebar dengan tingkat kontras yang dapat diatur dan terlihat jelas
  • Tegangan kerja: 5V DC
  • Dimensi modul: 80 x 36 x 12 mm
  • Dimensi layar tampilan: 64,5 mm x 16 mm








  • Diagram Blok











  • Prinsip Kerja
disini kita menggunakan 2 buah arduino untuk mendemonstrasikan komunikasi UART, untuk arduino master itu sebagai arduino utama yang menerima input dari push button lalu untuk arduino slave terhubung ke 8 buah LED yang masing2 akan aktif bila push button ditekan, untuk menghubungkan kedua arduino kita menggunakan komunikasi Serial UART dengan memakai pin 0 dan 1 ( Tx dan Rx) saat push button ditekan akan memberikan sinyal high pada arduino master kemudian datanya akan dikirim ke arduino slave yang nantinya akan menghidupkan LED yang telah diatur urutanya pada codingan sebelumnya
 
  • Flowchart
    Master

Slave



  • Listing Program 
Master
//MASTER
#define DS1 2
#define DS2 3
#define DS3 4
#define DS4 5
#define DS5 6
#define DS6 7
#define DS7 8
#define DS8 9
bool b1,b2,b3,b4,b5,b6,b7,b8;
void setup()
{
 Serial.begin(9600);
 pinMode(DS1, INPUT);
 pinMode(DS2, INPUT);
 pinMode(DS3, INPUT);
  pinMode(DS4, INPUT);
 pinMode(DS5, INPUT_PULLUP);
 pinMode(DS6, INPUT_PULLUP);
 pinMode(DS7, INPUT_PULLUP);
 pinMode(DS8, INPUT_PULLUP);
}
void loop()
{
 int b8 = digitalRead(DS8);
 int b7 = digitalRead(DS7);
 int b6 = digitalRead(DS6);
 int b5 = digitalRead(DS5);
 int b4 = digitalRead(DS4);
 int b3 = digitalRead(DS3);
 int b2 = digitalRead(DS2);
 int b1 = digitalRead(DS1);
 // Hidupkan LED sesuai dengan tombol yang ditekan
 int y = b1+b2+b3+b4;
 int x = b5+b6+b7+b8;
 if (x==4&&y==3)
 {
 Serial.write('r');
 }
 else if (x==0&&y==3)
 {
 Serial.write('b');
 }
 else
 {
 Serial.write('m');
 }
 
}


Slave

//SLAVE
int led[] = {2, 3, 4, 5, 6, 7, 8, 9};
char message;
void setup()
{
 Serial.begin(9600);
 for (int i = 0; i < 8; i++)
 {
 pinMode(led[i], OUTPUT);
 }
}
void loop()
{
 if (Serial.available())
{
 message = Serial.read();
 if (message == 'r')
 {
for (int i = 0; i < 8; i++) {
    digitalWrite(led[i], HIGH); // Turn LED on
    delay(100); // Adjust the delay as needed
    digitalWrite(led[i], LOW); // Turn LED off
  }
 }
 else if (message == 'b')
 {
 for (int i = 0; i < 8; i++) {
    digitalWrite(led[i], HIGH); // Turn LED on
  }
  delay(100); // Adjust the delay as needed for on state
  for (int i = 0; i < 8; i++) {
    digitalWrite(led[i], LOW); // Turn LED on
  }
  delay (100);
 }
 else if (message == 'm')
 {
 for (int i = 0; i < 8; i++) {
    digitalWrite(led[i], LOW); // Turn LED off
  }
 }
}
}

6. Kondisi [Kembali]

Percobaan 1 Kondisi 7

4 Switch dalam pull down dan 4 Switch dalam pull up. 3 Switch pull down dan 4 Switch pull up mengaktifkan running LED. 3 Switch pull down dan 0 switch pull-up mengaktifkan blingking LED


7. Download File [Kembali]

Download HMTL klik disini
Download Simulasi Rangkaian Klik disini
Download Video Simulasi klik disini
Download Program Master klik  disini
Download  Program Slave klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet DipSW-8  klik disini
Download Datasheet LED klik disini

Senin, 29 April 2024

Modul 3 
Komunikasi
Percobaan 2 Kondisi 4


 

  • 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 Sebelum Disimulasikan



Gambar Rangkaian Setelah Disimulasikan

b. Prinsip Kerja

Percobaan ini bertujuan untuk mendemonstrasikan implementasi sistem penghitung digital menggunakan DIP switch sebagai input dan dual seven segment sebagai output, dengan komunikasi serial antar modul Arduino. dengan komponen DIP switch Dual seven segment Dua modul Arduino (Arduino master dan Arduino slave) untuk koneksinya DIP switch terhubung ke input digital Arduino master. Dual seven segment terhubung ke output digital Arduino slave. Komunikasi serial (SPI) terjalin antar modul Arduino melalui pin MOSI, MISO, SCLK, dan SS/CS. DIP switch berfungsi sebagai input digital untuk Arduino master.

Program pada Arduino master dirancang untuk mendeteksi status DIP switch dan menentukan kondisi yang aktif (3 atau 4 switch aktif). Ketika kondisi aktif terpenuhi, Arduino master mengirimkan perintah melalui komunikasi serial SPI ke Arduino slave. Arduino slave menerima perintah dari Arduino master dan mengontrol dual seven segment untuk menampilkan angka yang sesuai dengan kondisi aktif yang terdeteksi.


a. Flowchart
Arduino 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 sw_on = 0;
 for(int i = 0; i < 8; i++){
 dipvalue[i] = digitalRead(dip[i]);
 sw_on = dipvalue[0] + dipvalue[1] + dipvalue[2] + dipvalue[3] + dipvalue[4] + dipvalue[5] + dipvalue[6] + dipvalue[7];
 }
 digitalWrite(SS, LOW); //Starts communication with Slave connected to master
 Mastersend = sw_on;
 Serial.println(Mastersend);
 SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave
 delay(1000);
}

Arduino Slave
//Slave Arduino:
#include<SPI.h>
#define a 2
#define b 3
#define c 4
#define d 5
#define e 6
#define f 7
#define g 8
#define digit1 A1
#define digit2 A2
volatile boolean received = false;
volatile byte Slavereceived;
int satuan, puluhan, i;
void setup(){
 Serial.begin(9600);
 pinMode(a, OUTPUT);
 pinMode(b, OUTPUT);
 pinMode(c, OUTPUT);
 pinMode(d, OUTPUT);
 pinMode(e, OUTPUT);
 pinMode(f, OUTPUT);
 pinMode(g, OUTPUT);
 pinMode(digit1, OUTPUT);
 pinMode(digit2, OUTPUT);
 SPCR |= _BV(SPE); //Turn on SPI in Slave Mode
 SPI.attachInterrupt(); //Interuupt ON is set for SPI commnucation
}
ISR (SPI_STC_vect){ //Inerrrput routine function
 Slavereceived = SPDR; // Value received from master if store in variable slavereceived
 received = true; //Sets received as True
}
void loop(){
 Serial.println(Slavereceived);
 if(received){//Logic to SET LED ON OR OFF depending upon the value recerived from master
  if (Slavereceived == 4){
    for(i=0; i<10; i++){
      setAngka(i);
      delay(100);
    }
    for(i=0; i<100; i+= 10){
      setAngka(i);
      delay(100);
    }
  }
   if (Slavereceived == 3){
    for(i=0; i<100; i+=10){
      setAngka(i);
      delay(100);
    }
    for(i=0; i<10; i++){
      setAngka(i);
      delay(100);
    }
  }
 delay(1000);
 }
}
void angka(int xx){
  if(xx==0){
  digitalWrite(a,HIGH);
  digitalWrite(b,HIGH);
  digitalWrite(c,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,LOW);
  }

  if(xx==1){
  digitalWrite(a,LOW);
  digitalWrite(b,HIGH);
  digitalWrite(c,HIGH);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
  }

  if(xx==2){
  digitalWrite(a,HIGH);
  digitalWrite(b,HIGH);
  digitalWrite(c,LOW);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,LOW);
  digitalWrite(g,HIGH);
  }

  if(xx==3){
  digitalWrite(a,HIGH);
  digitalWrite(b,HIGH);
  digitalWrite(c,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(e,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,HIGH);
  }

  if(xx==4){
  digitalWrite(a,LOW);
  digitalWrite(b,HIGH);
  digitalWrite(c,HIGH);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
  }

  if(xx==5){
  digitalWrite(a,HIGH);
  digitalWrite(b,LOW);
  digitalWrite(c,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(e,LOW);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
  }

  if(xx==6){
  digitalWrite(a,HIGH);
  digitalWrite(b,LOW);
  digitalWrite(c,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
  }

  if(xx==7){
  digitalWrite(a,HIGH);
  digitalWrite(b,HIGH);
  digitalWrite(c,HIGH);
  digitalWrite(d,LOW);
  digitalWrite(e,LOW);
  digitalWrite(f,LOW);
  digitalWrite(g,LOW);
  }

  if(xx==8){
  digitalWrite(a,HIGH);
  digitalWrite(b,HIGH);
  digitalWrite(c,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(e,HIGH);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
  }

  if(xx==9){
  digitalWrite(a,HIGH);
  digitalWrite(b,HIGH);
  digitalWrite(c,HIGH);
  digitalWrite(d,HIGH);
  digitalWrite(e,LOW);
  digitalWrite(f,HIGH);
  digitalWrite(g,HIGH);
  }

}

void setAngka(int xxx) {
  if (xxx < 10) {
    puluhan = 0;
    satuan = xxx;
  } else if (xxx < 100) {
    puluhan = xxx / 10;
    satuan = xxx % 10;
  }
  digitalWrite(digit1, LOW);
  digitalWrite(digit2, HIGH);
  angka(puluhan);
  delay(50);

  digitalWrite(digit1, HIGH);
  digitalWrite(digit2, LOW);
  angka(satuan);
  delay(50);
}

b. Listing Program
Arduino Master

Arduino Slave

Jika 3 switch aktif maka counting 1-9 pada digit 1 lalu pada digit 2, jika 4 switch aktif maka counting 1-9 pada digit 2 lalu pada digit 1.





Download HTML klik disini
Download Rangkaian Proteus klik disini
Download Program Arduino Master klik disini
Download Program Arduino Slave klik disini
Download Video klik disini
Download Datasheet 7 segment klik disini
Download Datasheet Arduino klik disini

Entri yang Diunggulkan

Laporan Akhir Project M4

Laporan Akhir Demo Project [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. Percobaan   ...