TUGAS PENDAHULUAN 2

PERCOBAAN 2 KONDISI 8



 
 1. Kondisi [back]
    Percobaan 2 Kondisi 8
    Tambahkan resistor sebelum button sebesar 1k ohm.

2. Gambar Rangkaian Simulasi[back]









3. Video Simulasi[back]







4. Prinsip Kerja Rangkaian[back]
Percobaan 2 pada modul 3 ini adalah percobaan komunikasi SPI. Untuk percobaan 2, kelompok 11 mengambil kondisi 8 yaitu tambahkan resistor sebelum button sebesar 1k ohm. Pada percobaan ini, kita menggunakan 2 arduino dimana satu sebagai master dan satu sebagai slave. Pin GND pada kedua arduino ini dihubungkan ke ground. Untuk pin 11,12 dan 13 pada kedua arduino ini saling terhubung. Pada arduino master, pada pin 7 nya dihubungkan resistor yang kemudian resistor ini juga terhubung ke LED dan dihubungkan juga ke ground. Pada pin 2, dihubungkan push button dimana sesuai kondisi, sebelum push button ditambahkan resistor sebesar 1k ohm dan resistor ini juga terhubung ke ground.
Untuk arduino slave, pada pin 7 nya juga terhubung resistor yang terhubung juga ke LED dan dihubungkan ke ground. Pada pin 2 juga dihubungkan resistor dan dihubungkan pula push button dan keduanya terhubung ke gorund. Untuk menjalankan rangkaian ini, maka diinputkan program pada arduino sebagai berikut : 
MASTER
#include<SPI.h>                             //Library for SPI
#define LED 7          
#define ipbutton 2

int buttonvalue;
int x;

void setup (void)
{
  Serial.begin(115200);                   //Starts Serial Communication at Baud Rate 115200
  pinMode(ipbutton,INPUT);                //Sets pin 2 as input
  pinMode(LED,OUTPUT);                    //Sets pin 7 as Output
  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,Mastereceive;          
  buttonvalue = digitalRead(ipbutton);   //Reads the status of the pin 2
  if(buttonvalue == HIGH)                //Logic for Setting x value (To be sent to slave) depending upon input from pin 2
  {

    x = 1;

  }

  else

  {

    x = 0;

  }
  digitalWrite(SS, LOW);                  //Starts communication with Slave connected to master
  Mastersend = x;                            
  Mastereceive=SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave
  if(Mastereceive == 1)                   //Logic for setting the LED output depending upon value received from slave
  {
    digitalWrite(LED,HIGH);              //Sets pin 7 HIGH

    Serial.println("Master LED ON");

  }

  else

  {

   digitalWrite(LED,LOW);               //Sets pin 7 LOW
   Serial.println("Master LED OFF");
  }
  delay(1000);

}

SLAVE

#include<SPI.h>
#define LEDpin 7
#define buttonpin 2
volatile boolean received;
volatile byte Slavereceived,Slavesend;
int buttonvalue;
int x;

void setup()
{
  Serial.begin(115200);
  pinMode(buttonpin,INPUT);               // Setting pin 2 as INPUT
  pinMode(LEDpin,OUTPUT);                 // Setting pin 7 as OUTPUT
  pinMode(MISO,OUTPUT);                   //Sets MISO as OUTPUT (Have to Send data to Master IN
  SPCR |= _BV(SPE);                       //Turn on SPI in Slave Mode
  received = false;
  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()

{ if(received)                            //Logic to SET LED ON OR OFF depending upon the value recerived from master
   {
      if (Slavereceived==1)
      {
        digitalWrite(LEDpin,HIGH);         //Sets pin 7 as HIGH LED ON
        Serial.println("Slave LED ON");
      }else

      {
        digitalWrite(LEDpin,LOW);          //Sets pin 7 as LOW LED OFF
        Serial.println("Slave LED OFF");
      }

      buttonvalue = digitalRead(buttonpin);  // Reads the status of the pin 2
      if (buttonvalue == HIGH)               //Logic to set the value of x to send to master
      {
        x=1;
      }else

      {

        x=0;

      }

  Slavesend=x;                            
  SPDR = Slavesend;                           //Sends the x value to master via SPDR
  delay(1000);
}
}

5. Link Download[back]  

Download File Rangkaian Proteus [here]
Download Video Tutorial[here]
Download Listing Program Master [here]
Download Listing Program Slave [here]
Download Datasheet Arduino[here]
Download Datasheet LED [here]
Download HTML [here]






























Tidak ada komentar:

Posting Komentar

[Menuju Akhir] [KEMBALI KE MENU SEBELUMNYA]   DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. P...