Laporan Akhir 1


  





1. Prosedur
 [Kembali]
    Langkah-langkah percobaan :

  1. Rangkailah seperti rangkaian berikut
  2. Buka Arduino IDE dan masukan listing Program
  3. Upload program ke arduino
  4. Mencoba rangkaiannya dengan memvariasikan input pada dipswitch.
2. Hardware dan Diagram Blok [Kembali]
    a. seven segment

    b. power supply
    c. arduino 
d. LCD


e. Motor DC

f. Potensiometer


g. Driver Motor



diagram blok:


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
    


Cara kerja  rangkaian ini adalah saklar dip bertindak sebagai masukan pada master Arduino dan keluarannya berupa 7 segmen pada Arduino Slave. Master Arduino bertindak sebagai input pada pin 1 yang berlogika 1. Jika ada logika 1  maka master Arduino akan mengirimkan data 9 ke Arduino Slave. Setelah diterima 9 data  oleh slave Arduino, maka akan ditampilkan dalam 7segmen.


4. Flowchart dan Listing Program [Kembali]
    flowchart:
master


slave

    listing program:
//Master Arduino #include //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
//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. Video Demo [Kembali]
    



6. Kondisi [Kembali]

7. Video Simulasi [Kembali]    

8. Download File [Kembali]
rangkaian klik di sini
code arduino uno klik di sini












Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

  BAHAN PRESENTASI  MATA KULIAH SISTEM DIGITAL 2023     Oleh : Mu'minatul Afifah Nusatama 2110951003   Dosen Pengampu: Dr. Darwison, M.T...