LA3 P2




1. Foto Hardware dan Diagram Blok [Kembali]

1. Arduino

2. DIP switch



3. 7-segment



4.. Jumper

 

5. Breadboard









  

2. Prosedur Percobaan  [Kembali]

  • Rangkai semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai masukkan program ke arduino 
  • Jalankan program pada simulasi dan cobakan dengan modul




Rangkaian percobaan 2 menggunakan protokol komunikasi SPI, yang ditandai dengan peenggunaan pin MISO, MOSI, SCLK, dan SS. Pin-pin arduino tersebut dihubungkan dengan pin yang sama dengan yang ada pada arduino kedua. Percobaan ini terdiri dari arduino master yang terhubung dengan DIP switch (sebagai input) dan arduino slave terhubung dengan 7-segment (sebagai output)


7-segment akan menampilkan:

  • angka 1: jika semua switch off
  • no pin arduino (yang terhubung dengan switch yang on) : jika hanya satu witch  on
  • no pin terbesar arduino: jika lebih dari satu witch  on



4. Flowchart dan 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. Kondisi [Kembali]

7-segment akan menampilkan:

  • angka 1: jika semua switch off
  • no pin arduino (yang terhubung dengan switch yang on) : jika hanya satu witch  on
  • no pin terbesar arduino: jika lebih dari satu witch  on



7. Link Download [Kembali]









Tidak ada komentar:

Posting Komentar

M4

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