2. Rangkaian Simulasi [KEMBALI]
3. Flowchart [KEMBALI]
//MASTER
//SLAVE
4. Listing Program [KEMBALI]
//MASTER
#include
#define button 2
#define addr 0x02
bool state, lastState;
void setup() {
// put your setup
code here, to run once:
pinMode(button,
INPUT);
//Serial.begin(9600);
//Wire.begin();
pinMode(SS, OUTPUT);
digitalWrite(SS, HIGH);
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV8);
lastState =
digitalRead(button);
}
void loop() {
// put your main
code here, to run repeatedly:
state =
digitalRead(button);
if (state !=
lastState) {
lastState = state;
/***********************************************/
// TODO: send data
to slave
digitalWrite(SS,
LOW);
//Wire.beginTransmission(addr);
if (state == 0) {
SPI.transfer('A');
//Wire.write('A');
//Serial.write('A');
} else {
SPI.transfer('B');
//Wire.write('B');
//Serial.write('B');
}
digitalWrite(SS,
HIGH);
//Wire.endTransmission();
/***********************************************/
}
delay(10);
}
//SLAVE
#include
#define led 2
#define addr 0x02
void setup() {
// put your setup
code here, to run once:
pinMode(led,
OUTPUT);
//Serial.begin(9600);
digitalWrite(led,
LOW);
SPCR |= _BV(SPE);
SPI.attachInterrupt();
//Wire.begin(0x02);
//Wire.onReceive(callback);
}
ISR (SPI_STC_vect) {
char c = SPDR;
if (c == 'A') {
digitalWrite(led,
HIGH);
} else if (c == 'B')
{
digitalWrite(led,
LOW);
}
}
/*
void callback() {
char c =
Wire.read();
if (c == 'A') {
digitalWrite(led,
HIGH);
} else if (c == 'B')
{
digitalWrite(led,
LOW);
}
}
*/
void loop() {
delay(1);
}
5. Analisa
[KEMBALI]Buatlah agar ada 2 push button,1 led dengan 4 kondisi!
//Master
#include
//Deklarasi library SPI
#define
button1 5
#define
button2 4
#define
addr 0x02
bool
state,lastState;
void
setup (){
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(SS, OUTPUT);
digitalWrite(SS, HIGH);
// disable Slave Select
SPI.begin ();
SPI.setClockDivider(SPI_CLOCK_DIV8); //divide
the clock by 8
lastState = digitalRead(button1);
lastState = digitalRead(button2);
}
void
loop () {
state= digitalRead(button1);
state= digitalRead(button2);
if(state!= lastState){
lastState=state;
digitalWrite(SS, LOW); //enable Slave Select
// send test string
if (state == 1 && state== 0)
{
SPI.transfer('1');
}
else if(state == 0 && state== 1)
{
SPI.transfer('2');
}
else if(state == 0 && state== 0)
{
SPI.transfer('3');
} else
{SPI.transfer('4');}
digitalWrite(SS, HIGH); // disable Slave
Select
delay(2000);
}
}
//Slave
#include
#define
led 7
#define
addr0x02;
void
setup () {
pinMode(led, OUTPUT); // have to send on
master in so it set as output
digitalWrite(led,LOW);
SPCR |= _BV(SPE); // turn on SPI in slave
mode
SPI.attachInterrupt(); // turn on interrupt
}
ISR
(SPI_STC_vect) // SPI interrupt routine
{
char c = SPDR; // read byte from SPI Data
Register
if (c =='1')
{
digitalWrite(led, HIGH); //LED menyala
delay(100);
digitalWrite(led, LOW); //LED menyala
delay(100);
}
else if (c == '2') //Jika data yang
dikirimkan berlogika
{
digitalWrite(led, HIGH); //LED menyala
delay(1000);
digitalWrite(led, LOW); //LED menyala
delay(1000);
}
else if (c == '3') //Jika data yang
dikirimkan berlogika
{
digitalWrite(led, HIGH); //LED menyala
}
else
{
digitalWrite(led, LOW); //LED mati
}
}
void loop () {
delay(1);
}
7. Link Download [KEMBALI]
Listing Program klik disini
Video Percobaan klik disini
Tidak ada komentar:
Posting Komentar