Langkah-langkah percobaan :
4. Flowchart dan Listing Program [Kembali]
- Rangkailah seperti rangkaian berikut
- Buka Arduino IDE dan masukan listing Program
- Upload program ke arduino
- Mencoba rangkaiannya dengan memvariasikan input pada dipswitch.
2. Hardware dan Diagram Blok [Kembali]
a. seven segment
b. power supply
c. arduino
diagram blok:
c. arduino
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]);
}
}
}
8. Download File [Kembali]
video klik di sini
html kli k di sini
rangkaian klik di sini
code arduino uno klik di sini
Tidak ada komentar:
Posting Komentar