2. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
3. Buat program di arduino di software Arduino IDE.
4. Compile program tersebut dan upload ke dalam arduino pada proteus
5. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
Dalam eksperimen ini, kami menggunakan dip switch sebagai input dan seven segment sebagai output. Terdapat dua perangkat Arduino yang digunakan, di mana Arduino pertama berperan sebagai master dan Arduino kedua sebagai slave.
MASTER:
Inisialisasi: Pada bagian setup(), komunikasi serial dimulai dengan kecepatan baud rate 9600. Selain itu, setiap pin input diprogram dengan mode INPUT_PULLUP untuk mengaktifkan resistor pull-up internal, sehingga ketika saklar terhubung, nilainya adalah LOW.
Pembacaan Saklar: Di dalam loop(), program membaca status saklar yang terhubung ke pin input. Ketika saklar aktif (terhubung), nilai LOW akan terdeteksi, dan nilai indeks saklar yang aktif disimpan dalam variabel x. Variabel activeSwitches digunakan untuk menghitung jumlah saklar yang aktif pada saat itu.
Komunikasi SPI: Jika jumlah saklar aktif adalah 3, maka program akan mengirimkan pesan ke perangkat slave melalui komunikasi SPI. Pesan yang dikirimkan adalah angka 3, yang kemudian ditampilkan pada perangkat slave sebagai respons atas kondisi saklar yang aktif. Kemudian terdapat logika yang akan mengatur tampilan di slave berdasarkan nilai pesan yang diterima.
Shift Bit: Jika jumlah saklar aktif adalah 4, program akan mengirimkan pesan berupa angka 4 ke perangkat slave melalui SPI. Namun, di sini, bit pesan akan di-shift kiri sebanyak 4 kali sebelum dikirimkan, yang artinya digit kedua akan diatur sebagai 4. Ini memungkinkan penggunaan digit pertama untuk menunjukkan jumlah saklar yang aktif dari 0 hingga 5.
Dengan cara ini, perangkat master mampu mendeteksi kondisi saklar yang aktif dan mengirimkan pesan ke perangkat slave untuk menampilkan respons yang sesuai.
SLAVE:
Inisialisasi: Pada bagian setup(), komunikasi serial dimulai dengan kecepatan baud rate 9600. Selain itu, pin-pins yang terhubung ke segmen-segmen dari display tujuh segmen diatur sebagai output.
Mode SPI Slave: Perangkat diatur dalam mode SPI slave. Ketika terjadi interupsi SPI (SPI_STC_vect), data yang diterima dari perangkat master disimpan dalam variabel Slavereceived.
Interupsi: Fungsi ISR (Interrupt Service Routine) dipanggil ketika data diterima dari perangkat master melalui SPI. Pada fungsi ISR, nilai yang diterima dari master disimpan dan flag received diatur menjadi true.
Logika Kontrol: Pada fungsi loop(), program memeriksa apakah data telah diterima dari perangkat master. Jika iya, maka nilai yang diterima diuji. Jika nilai adalah 3, maka display tujuh segmen akan menampilkan angka dari 0 hingga 5 secara berurutan, dengan digit kedua yang berubah setelah mencapai angka 5. Jika nilai adalah 4, maka display akan menampilkan angka dari 0 hingga 5 secara berurutan, tetapi dengan digit pertama yang berubah setelah mencapai angka 5. Jika nilai tidak 3 atau 4, display akan menampilkan angka dari 0 hingga 9 secara berurutan, dengan digit pertama yang berubah setelah mencapai angka 5.
Tampilan Karakter: Fungsi displayCharacter() mengubah karakter numerik menjadi pola bit yang sesuai untuk menyalakan segmen-segmen pada display tujuh segmen.
Dengan demikian, perangkat ini bertindak sebagai slave SPI yang menerima instruksi dari perangkat master melalui SPI dan menampilkan informasi yang sesuai pada display tujuh segmen berdasarkan instruksi yang diterima.







Tidak ada komentar:
Posting Komentar