Paralel ke Serial Shifting-In dengan CD4021BE
Shifting In (Menggeser Masuk) & the CD4021B
Terkadang Anda akan membutuhkan lebih banyak input digital daripada pin di Arduino Anda. Menggunakan register geser paralel ke serial, Anda dapat mengumpulkan informasi dari 8 switch atau lebih saat hanya menggunakan 3 pin pada Arduino Anda.
Contoh register paralel ke seri adalah CD4021B , kadang-kadang disebut sebagai 8-Stage Static Shift Register. Ini berarti Anda dapat membaca status hingga 8 input digital yang terpasang pada register sekaligus. Ini disebut Asynchronous Parallel Input. "Input" karena Anda mengumpulkan informasi. "Paralel" karena semuanya sekaligus, seperti mendengar kabel musik. "Asinkron" karena CD4021B melakukan semua pengumpulan data ini dengan langkahnya sendiri tanpa berkoordinasi dengan Arduino.
8 input diterjemahkan ke dalam serangkaian pulsa TINGGI dan RENDAH pada pin seri-keluar dari register geser. Pin ini harus dihubungkan ke pin input pada Arduino Board Anda, disebut sebagai pin data . Transfer informasi pada pin data disebut "Output Serial Sinkron" karena register geser menunggu untuk mengirimkan urutan data linier ke Arduino hingga Arduino memintanya. Synchronous Serial communication, baik input maupun output, sangat bergantung pada apa yang disebut sebagai pin jam. Pin jam adalah metronom percakapan antara register geser dan Arduino, inilah yang menjaga kedua sistem tetap sinkron. Setiap kali Arduino mengubah pin jam dari RENDAH ke TINGGI register geser mengubah status pin Output Serial, yang menunjukkan nilai sakelar berikutnya.
Pin ketiga yang terpasang pada Arduino adalah pin "Parallel to Serial Control". Ini disebut sebagai pin kait . Ketika pin kait tinggi, register geser mendengarkan 8 input paralelnya. Ketika pin kait RENDAH, ia mendengarkan pin jam dan meneruskan informasi secara seri. Itu berarti setiap kali latch pin bertransisi dari TINGGI ke RENDAH register geser akan mulai menyampaikan informasi sakelar terbarunya.
Kode pseudo untuk mengoordinasikan ini semua terlihat seperti ini:
- Pastikan register memiliki informasi terbaru dari input paralelnya (yaitu bahwa pin kait HIGH)
- Katakan pada register, Arduino siap untuk mendapatkan informasi secara serial (latch pin LOW)
- Untuk setiap input yang akan dibaca, nyalakan clockPin dan periksa untuk melihat apakah pin data LOW atau HIGH
- Ini adalah diagram dasar.
Ini adalah diagram dasar.
_______ switch -> | | switch -> | C | switch -> | D | switch -> | 4 | -> Serial Data to Arduino switch -> | 0 | switch -> | 2 | switch -> | 1 | <- Clock Data from Arduino switch -> |_____| <- Latch Data from ArduinoAda informasi lebih lanjut tentang pengalihan dalam tutorial ShiftOut .
Sebelum Anda mulai memasang papan Anda di sini adalah diagram pin CD4021 dari Texas Instruments Datasheet
PIN 1,4-7, 13-15 | P1, P8 (Pin 0-7) | Input Paralel | |
PIN 2, 12, 3 | Q6, Q7, Q8 | Pin Output Serial dari berbagai langkah dalam urutan. Q7 adalah pulsa di belakang Q8 dan Q6 adalah pulsa di belakang Q7. Q8 adalah satu-satunya yang digunakan dalam contoh ini. | |
PIN 8 | Vss | GND | |
PIN 9 | P / SC | Kontrol Paralel / Serial (pin kait) | |
PIN 10 | JAM | Geser pin pin register | |
PIN 11 | SERIAL-IN | Input data serial | |
PIN 16 | VDD | Tegangan pasokan DC |
Contoh 1: One Shift Register
Langkah pertama adalah memperpanjang Arduino Anda dengan satu register geser.
Sirkuit
1. Koneksi Daya
Buat koneksi berikut:
- GND (pin 8) ke ground,
- VDD (pin 16) ke 5V
2. Hubungkan ke Arduino
- Q8 (pin 3) ke Ardunio DigitalPin 9 (kabel biru)
- CLOCK (pin 10) ke ke Ardunio DigitalPin 7 (kabel kuning)
- P / SC (pin 9) ke Ardunio DigitalPin 8 (kabel hijau)
Mulai sekarang mereka akan disebut sebagai dataPin, clockPin dan latchPin masing-masing.
3. Tambahkan 8 Switch
Diagram
Kode
Contoh Kode 1.1 Hello World
Contoh Kode 1.2 Apa Yang Ditekan?
Contoh Kode 1.3 Kombinasi Tombol Periksa
Contoh Kode 1.4 Apakah ditekan? (subfungsi)
Contoh 2: Multiple Shift Register
Dalam contoh ini Anda akan menambahkan register geser kedua, menggandakan jumlah pin input sementara masih menggunakan jumlah pin yang sama pada Arduino.
Jika menambah Arduino Anda dengan tambahan 8 input digital tidak akan cukup untuk proyek Anda, Anda dapat memiliki CD4021 kedua meneruskan informasinya ke CD4021 lain yang akan mengalirkan semua 16 bit informasi ke Arduino. Jika Anda tahu Anda perlu menggunakan beberapa register geser seperti ini, periksa apakah register shift yang Anda beli dapat menangani Input Serial Sinkron serta kemampuan Output Serial Sinkron standar. Synchronous Serial Input adalah fitur yang memungkinkan register shift pertama menerima dan mengirimkan output serial dari yang kedua. Contoh di bawah ini menjelaskan cara menggunakan sistem ini. Dengan alasan tertentu, Anda dapat terus memperpanjang rantai daisy register geser ini hingga Anda memiliki semua input yang Anda butuhkan.
1. Tambahkan register shift kedua.
2. Hubungkan 2 register.
Dua koneksi ini hanya memperpanjang sinyal jam dan kait yang sama dari Arduino ke register shift kedua (kabel kuning dan hijau). Kabel biru bergerak dari pin keluar seri (pin 9) dari register shift pertama ke input data serial (pin 14) dari register kedua.
3. Tambahkan satu set Switch yang kedua.
Perhatikan bahwa ada satu saklar sesaat dan sisanya adalah sakelar sakelar. Ini karena contoh kode akan menggunakan sakelar yang terpasang pada register shift kedua sebagai pengaturan, seperti file preferensi, bukan sebagai pemicu acara. Saklar sesaat akan memberi tahu mikrokontroler bahwa sakelar pengaturan sedang diubah.
Diagram
Kode
Contoh Kode 2.1 Hello World
Contoh Kode 2.2 Menggunakan byte kedua untuk pengaturan, Cetak semua
Sampel Kode 2.3 Menggunakan byte kedua untuk pengaturan, Mencetak hanya (menggunakan subfungsi)
SUMBER
- [1] https://www.arduino.cc/en/Tutorial/ShiftIn