Mengapa itu dibutuhkan?
Baru-baru ini, saya menulis artikel tentang komputer sepeda bluetooth buatan sendiri. Ada diskusi yang hidup. Salah satu saran untuk modernisasi adalah gagasan untuk menambahkan indikasi atau layar LCD. Saya menyukai ide itu. Dan saya memutuskan untuk memikirkan cara menghidupkannya.
Karena komputer sepeda sudah dibuat, kasingnya hampir penuh, pilihan dengan layar lcd hilang. Kami membutuhkan ukuran 40x30mm, dengan mempertimbangkan semua kabel dan kabel, dan dengan ketebalan tidak lebih dari 2-3mm. Ada juga beberapa kesimpulan gratis. Berbagai indikator LED (tiga digit, skala) tidak sesuai. Kemudian pikiran yang sangat bagus muncul di benak saya - untuk membuat indikator buatan rumah dari SMD LED. Ambil textolite satu sisi yang tipis, letakkan di atasnya jumlah LED yang tepat, dalam urutan yang benar dan Anda mendapatkan indikator yang sangat baik. Setelah membayangkan bahwa kabel harus mengarah ke semua LED, saya memutuskan bahwa mikrokontroler murah yang akan mengendalikan semua LED itu sendiri akan cocok di papan, dan MK utama dari komputer sepeda akan mengontrol indikator melalui satu kawat.
Hasilnya adalah indikator yang sangat kompak (hanya setebal 3mm). Manajemen pada satu kawat, dan 2 lagi pada makanan. Jika Anda memiliki perangkat yang siap pakai, atau Anda berencana untuk membuat perangkat, dan Anda memerlukan indikator, maka indikator buatan adalah pilihan terbaik. Mari kita teliti lebih lanjut bagaimana cara kerjanya.
20 LED pada 10 pin - mudah!
MK Saya memilih yang paling mahal - SMT8S003, sama seperti di komputer sepeda. Dia hanya memiliki 20 kaki. Jika Anda melepaskan kaki kekuasaan dan kontrol, maka 14 kaki tetap. Tugas pertama yang harus diselesaikan adalah mengendalikan kaki-kaki ini dengan LED sebanyak mungkin.
Segera terpikir oleh saya bahwa 2 LED dapat digantung dengan satu kaki, dengan satu pin pada GND dan yang lainnya pada VDD. Untuk setiap LED, sebuah resistor. Menurut skema ini.

Mudah dikelola. Kami memberi makan untuk pin 0, satu LED menyala, feed 1 - LED kedua menyala. Kami menerjemahkan ke dalam status ketiga (input), tidak ada yang terbakar. Ternyata pada 14 kesimpulan Anda bisa menggantung 28 LED. Sangat tidak buruk.
Putranya menggambar indikator itu sendiri. Untuk komputer sepeda, jenis indikator yang paling berguna, setelah angka adalah skala. Indikator terdiri dari 2 skala 8 LED, dan 4 LED status lebih berbeda. Total 20 LED. Saya cepat-cepat membuat sketsa papan, menggores, menyolder, dan mulai menguji.
Saya nyalakan MK, semua kesimpulannya ada di negara ketiga, tidak ada yang harus terbakar. Dan ... LED menyala. Tentu saja, mereka memiliki voltase cukup 5 volt untuk menyala redup. Itu tidak akan berhasil, kami mengubah skema ...
Lebih banyak LED
Setelah berpikir sebentar, ide lain muncul. Hubungkan LED bukan ke power dan ground, tetapi ke dua kesimpulan lagi dari MK. Maka Anda pasti bisa mematikan semuanya. Kami mencoba, ini bekerja dengan baik. Karena indikasi dinamis, semuanya berkedip dengan indah. Anda dapat mengontrol setiap LED.
Alhasil, skema berikut ternyata untuk masa depan:

Kami membedakan beberapa kesimpulan kontrol dan pekerja. Kami meletakkan resistor hanya pada kontrol upr1 upr2. Dengan demikian, sirkuit dan jejak papan sangat disederhanakan. Hingga 96 LED dapat ditempatkan pada 14 pin. 6 manajer dan 8 pekerja, ditambah 2 LED masing-masing. Lebih dari cukup, lengan solder akan lelah.
Ternyata, Anda bisa berbuat lebih banyak. Charlie Allen melangkah lebih jauh dengan menempatkan beberapa LED di antara pin kontrol. Dengan demikian, hingga 16 * 15 LED dapat ditempatkan pada 16 pin. Tapi, di sirkuitnya, banyak resistor ditambahkan, dan perlu juga bahwa semua LED memiliki warna yang sama, secara umum ada masalah kecil. Kesimpulan - 96 LED lebih dari cukup.
Kami mengontrol setiap LED secara individual
Untuk mengontrol setiap LED, metode indikasi dinamis digunakan. Pada satu titik waktu, satu LED dapat menyala per output kontrol. Selanjutnya, Anda perlu memilah-milah semua pasangan, ini adalah negara indikasi, dan seterusnya dalam lingkaran. Karena papan sudah dibuat, saya redid menjadi satu pin kontrol dan satu resistor. Ternyata 20 LED pada satu output dan 10 kesimpulan bekerja. Total 20 negara.

Untuk mengurangi konsumsi energi, MK beroperasi pada frekuensi 2 MHz. Untuk memilah 20 negara dengan frekuensi setidaknya 50 Hz, Anda memerlukan timer dengan frekuensi 1000 Hz. Selain itu, saya juga ingin mengontrol kecerahan. Tetapi ternyata, untuk menurunkannya dengan faktor 10, Anda memerlukan frekuensi timer 10.000 Hz, dan 100 kali 100.000 Hz. Dalam hal ini, dalam interrupt handler, Anda perlu memilah-milah semua opsi dan menyalakan LED yang diinginkan. Secara umum, MK tidak bisa mengatasinya. Saya harus beralih ke opsi dengan modulasi PWM.
Kami mengontrol kecerahan menggunakan timer PWM
Hasilnya adalah program sederhana. Kami menggunakan satu timer - TIM2, dengan kemungkinan pembuatan PWM. Kami mengatur frekuensi timer ke 1000 Hz, dan nilai maksimum timer 125 adalah lebar PWM, yang akan menentukan gradasi kecerahan. Akibatnya, Anda dapat mengatur nilai kecerahan dari 0 hingga 125. Pada saat interupsi timer kedua, dibandingkan dengan mengisi PWM, matikan semua LED.
Hasilnya adalah indikator yang bagus. Karena kontrol kecerahan, konsumsi dalam fase aktif adalah dari 1 mA hingga 4 mA.
Kami menghubungkan komputer sepeda
Indikatornya sendiri sudah siap, dalam kasus dari komputer sepeda terlihat seperti ini:

Untuk mengontrol indikator, saya memilih protokol 1-kawat. Saya tidak akan menjelaskannya. Saya hanya bisa mengatakan bahwa saya harus menyiksa diri sendiri untuk bisa menangani interupsi dan menahan waktu yang diperlukan, tetapi pada akhirnya itu berhasil. Komputer sepeda seperti seorang Master, dan indikatornya seperti seorang Budak. Untuk kontrol, 4 byte harus dikirimkan. Byte pertama adalah perintah, kecerahan dan satu bit untuk masuk ke mode tidur, 3 byte sisanya adalah LED, sedikit oleh LED.
Hal pertama yang muncul di benak saya untuk ditampilkan pada indikator adalah kecepatan dan personil. LED layanan harus dibiarkan karena status bluetooth, pelanggaran kecepatan dan kontrol irama, dan kontrol jarak-jauh lainnya.
Setelah tes eksperimental, saya menambahkan kemampuan untuk menampilkan jarak yang tersisa dari set atau kalori yang tersisa dari set. Ternyata sangat nyaman. Anda menetapkan rencana - untuk menghabiskan 2000 Cal untuk berjalan-jalan, Anda pergi dan melihat segera, masih ada setengah yang tersisa. Kesimpulan - indikasi adalah hal yang bermanfaat.
Anak saya sangat menyukainya, ia mendapat ide untuk membuat gantungan kunci - indikator dengan baterai epoksi. Saya pergi untuk berpikir.
Apa indikator lain yang bisa dilakukan
Jam - LED dalam dua lingkaran - jam dan menit.
Poin kardinal - untuk kompas elektronik.
Skala untuk rotary encoder inkremental.
Beberapa skala dalam satu indikator.
Hati untuk kartu musik.
8x8 matrix untuk menampilkan gambar.
Indikator tujuh segmen tipis untuk satu digit dari 11 LED.
Secara umum, ada banyak ide tentang cara menggunakan ini.
Pada github , seperti biasa, papan, program, implementasi protokol 1-kawat dan indikasi dinamis. Siapa pun yang membutuhkannya, Anda dapat menggunakannya dalam proyek Anda.