Jumat, 03 Mei 2024

LA2 M3


[KEMBALI KE MENU SEBELUMNYA]

 
LAPORAN AKHIR 2
PERCOBAAN 2

1. Alat & Bahan[kembali]

a. Arduino Uno


 b. Dipswitch


c. Seven Segment


d. Jumper 
e. Breadboard


2. Rangkaian [kembali]





3. Flowchart[kembali]

Master



Slave




4. Listing Program[kembali]

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

//Slave Arduino: #include<SPI.h> const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2}; volatile boolean received = false; volatile byte Slavereceived; int index; void setup(){ Serial.begin(9600); for (int i = 0; i < 8; i++) { pinMode(segmentPins[i], 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 displayCharacter(Slavereceived); delay(1000); } } 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]); } } }


5. Prinsip Kerja[kembali]

    Pada percobaan kali ini menggunakan dipswitch sebagai inputnya. Yang akan dihubungkan ke arduino 1 (master) dan dari arduino 1 akan melakukan komunikasi dengan arduino 2(slave). Yang akan menampilkan output pada seven segment. 
    Pada rangkaian ini jika tidak ada arduino yang aktif, maka pada seven segment akan menampilkan angka 1. Dan jika dipswitch aktif maka angka yang akan di tampilkan seven segment adalah angka tertinggi dari dipswitch yang aktif+1.

6. Video Percobaan[kembali]



7. Download[kembali]

Video  klik disini
Datasheet Arduino UNO klik disini
Datasheet Dipswitch klik disini
Datasheet LCD klik disini









LA1 M3

[KEMBALI KE MENU SEBELUMNYA]

 


LAPORAN AKHIR 1

1. Alat & Bahan[kembali]

a. Arduino Uno


 b. Keypad

         

          c. LCD 16x2




d. Jumper

 

e. Breadboard

         

2. Rangkaian [kembali]



3. Flowchart[kembali]





4. Listing Program[kembali]

// 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
#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); } } }


5. Prinsip Kerja[kembali]

    Pada percobaan kali ini rangkaian terdiri dari dua arduino yang dihubungkan dengan komunikasi UART. Arduino 1 akan menerima input dari keypad, lalu akan diproses dan dilanjutkan kepada arduino 2. Kedua arduino akan saling berkomunikasi sehingga nanti output yang di kelarkan pada LCD akan sesuai dengan apa yang ditekan pada keypad tadi dari angka 1-9.

6. Video Percobaan[kembali]




7. Download[kembali]

Video  klik disini
Datasheet Arduino UNO klik disini
Datasheet Keypad 4x3 klik disini
Datasheet LCD klik disini









MODUL 4

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