Laporan Akhir 3 Percobaan 3

Percobaan 3 -  I2C





1. Hardawe [kembali]





2. Rangkaian Simulasi [kembali]





3. Flowchart [kembali]  
 


4. Listing Program [kembali]

  • Listing Program Master
MASTER
#include <Wire.h>
#define SLAVE_ADDR 9

int butt=12;
int val = 0;

void setup() {
pinMode(butt, INPUT);
Wire.begin();

}

void loop() {
delay(50);
val=digitalRead(butt);
Wire.beginTransmission(SLAVE_ADDR);
Wire.write(val);
Wire.endTransmission();
// put your main code here, to run repeatedly:

}
  • Listing Program Slave


SLAVE
#include <Wire.h>
#define SLAVE_ADDR 9

int LED = 13;
int rd;

void setup() {
pinMode(LED, OUTPUT);
Wire.begin(SLAVE_ADDR);
Wire.onReceive(receiveEvent);
Serial.begin(9600);
Serial.println("I2C Slave demo");
digitalWrite(LED,HIGH);

}

void receiveEvent() {
rd = Wire.read();
Serial.println(rd);

}

void loop()  {

digitalWrite(led_pin, HIGH);
delay(delay_value);
digitalWrite(led_pin, LOW);
delay(delay_value);
int button_state = digitalRead(button_pin);
if (button_state == HIGH) {
delay_value = 100;
} else {
delay_value = 1000;
}
}

5. Video [kembali]






 buat lampu LED berkedip 2x  saat  tombol button ditekan

 Sekarang anda akan membuat kedipan cahaya dengan memperkenalkan fungsi delay() ke kode di atas. delay() berfungsi menerima nilai integer, sama dengan jangka waktu dalam milidetik. 1000 milidetik sama dengan satu detik.
01
02
03
04
05
06
07
08
09
10
11
12
int delay_value = 1000; int led_pin = 13;
void setup() {
  pinMode(led_pin, OUTPUT);
}
void loop() {
  digitalWrite(led_pin, HIGH);
  delay(delay_value); digitalWrite(led_pin, LOW);
  delay(delay_value);
}
delay() berfungsi membuat lampu LED menyala dan juga mematikannya selama satu detik selama setiap iterasi fungsi loop(). Karena fungsi loop() terus berulang, kode ini akan menyalakan dan mematikan lampu LED berulang kali.




Digital Wave diagram
Diagram Gelombang Digital

Dengan menggunakan diagram gelombang digital, saya dapat menjelaskan dengan jelas bagaimana perilaku asli telah berubah. Sebelum memperkenalkan fungsi penundaan pada langkah ketiga, saya menghasilkan gelombang digital yang tampak seperti diagram, di atas. Setiap siklus setiap loop () fungsi iterasi dihabiskan untuk menjaga lampu LED dihidupkan.
Menggunakan fungsi delay (), kode kita membagi setiap siklus menjadi dua bagian, membuat setiap iterasi berlangsung selama dua detik. Selama detik pertama LED dihidupkan, dan, selama detik berikutnya dimatikan.




Digital Wave diagram showing the delay() function
Gambar ini menunjukkan bagaimana fungsi penundaan () digunakan untuk mempertahankan keadaan saat ini.


















int delay_value = 1000;
int led_pin = 13;
int button_pin = 2;
void setup() {
  pinMode(led_pin, OUTPUT); pinMode(button_pin, INPUT);
}
void loop() {
  digitalWrite(led_pin, HIGH);
  delay(delay_value);
  digitalWrite(led_pin, LOW);
  delay(delay_value);
  int button_state = digitalRead(button_pin);
  if (button_state == HIGH) {
    delay_value = 100;
  } else {
    delay_value = 1000;
  }
}
Kali ini, kode tersebut menginstruksikan Arduino untuk memperlakukan pin-2 sebagai sumber input dengan memanggil pinMode(button_pin, INPUT) di dalam fungsi setup(). Ini memungkinkan kita untuk membaca status tombol tekan kemudian di dalam fungsi loop() dengan memanggil digitalRead(button_pin). Mendapatkan status tombol tekan memungkinkan kita menentukan apakah fungsi penundaan harus dipanggil dengan nilai yang lebih kecil.



6. Link Download [kembali]




.

Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

ELEKTRONIKA dan SISTEM DIGITAL B OLEH: Muhammad Ansyari Surya 1710953032 Dosen Pengampu: Dr. Eng. Muham...