"Tahun Baru" adalah jeruk keprok, Olivier, akhir pekan, dan tentu saja hadiah.
Seperti yang mungkin sudah Anda tebak, tiba-tiba saya menjadi pemilik mikrokontroler CANNY 3 Tiny. Benar, saya tidak terlalu ke elektronik DIY dan terakhir kali saya sendiri mencoba menghubungkan sesuatu ke controller hampir tujuh tahun yang lalu, ketika saya melakukan backlighting
untuk peterseli menggunakan klon Arduino . Tapi apakah yang baik tidak hilang? Kita masih harus melihat jenis binatang apa ini.
Jadi, menurut situs pengembang, produk mereka banyak digunakan dan bahkan dipasang di KAMAZ yang berpartisipasi dalam reli Dakar. Pada saat yang sama, fitur utama pengendali mereka adalah untuk pemrograman Anda tidak perlu menulis satu baris kode pun. Seluruh program dikembangkan sebagai diagram blok. Sebagai orang yang jauh dari dunia DIY, saya sangat tertarik.
Dan semuanya akan baik-baik saja, tetapi ada satu halangan. Tahun lalu, saya sejujurnya ingin membeli sepasang truk Dakarovsky KAMAZ, tetapi tidak berhasil mendapatkannya dengan diskon pada Black Friday. Jadi kita harus keluar dari situasi ini dengan sederhana dan elegan.
Pada artikel ini kita akan menghubungkan tombol dan LED piranha merah ke controller, setelah itu kita memprogram mereka sehingga LED menyala dan mati dengan menekan tombol.
Ingin bergabung dengan kesenangan Tahun Baru saya yang merajalela? Maka Anda dipersilakan di bawah kucing.

Ngomong-ngomong, di Habrรฉ sudah ada
artikel tentang pengontrol CANNY , tapi pertama ada pengontrol lain di sana, dan kedua, perangkat lunak untuk mengembangkan program sudah ketinggalan zaman sejak saat itu. Sebagai hasilnya, saya membutuhkan waktu sekitar satu jam untuk mencari tahu bagaimana cara mengedipkan LED hijau yang terpasang pada pengontrol. Ini adalah sebagian alasan saya memutuskan untuk berbagi dengan Anda upaya saya untuk "mengekang" pengontrol.
Dan sebagian hanya karena saya suka menulis di Habr, ketika saya punya waktu luang.Sebelum kita melangkah lebih jauh, saya menganggap itu tugas saya untuk memperingatkan pembaca. Terlepas dari kenyataan bahwa artikel ini disajikan sebagai "tutorial", saya bukan ahli mikroelektronika atau pemrograman. Saya hanya akan membagikan apa yang berhasil saya ketahui untuk menghemat waktu Anda.
Inilah yang akan dibahas artikel:
Bagian I: Membongkar dan BerkenalanBagian II: Menghubungkan sirkuitBagian III: PemrogramanBagian IV: KesimpulanBagian I: Membongkar dan Berkenalan
Untuk mulai dengan, perlu untuk mengatakan setidaknya beberapa kata tentang pahlawan artikel kami. Kontroler CANNY 3 mungil adalah keluarga kontroler CANNY terkecil. Saudara yang lebih tua CANNY 3 mungil - pengendali seri CANNY 7 dan CANNY 5 dapat bekerja dengan bus CAN dari mobil. Adik kami, juga mobil Zhiguli lama saya, tidak tahu apa-apa tentang bus CAN dan hidup dalam damai.
Untuk informasi lebih lanjut tentang pengontrol, lihat bagian
Wiki terkait. Para pengembang juga memiliki bagian di
forum , berkat yang akhirnya saya menemukan cara mengkonfigurasi register controller untuk input dan output.
Tetapi kami akan kembali ke masalah pemrograman nanti. Akhirnya mari kita lihat hadiah yang tidak terduga.

Membuka kotak, saya mengalami perasaan kelembutan yang singkat. Kontrolernya sangat kecil. Maafkan fans yang memaafkanku perbandingan yang tidak pantas, tapi dia hampir seperti "baby Yoda."

Menurut toko online, controller memiliki dua opsi konfigurasi: tanpa blok terminal dan harness, serta dengan mereka. Mengingat kelengkungan saya dalam hal "solder sesuatu," Saya sangat senang bahwa saya mendapatkan versi dengan blok terminal dan harness.
Saya akan menyembunyikan beberapa foto lagi dari controller dan harness di bawah spoiler.
Bagian II: Menghubungkan sirkuit
Seperti yang saya katakan, kita akan menghubungkan LED ke controller (dalam kasus kami, "piranha"), tetapi ada yang mungkin (saya tidak punya yang lain). Kami akan mengontrol LED menggunakan tombol. Algoritma operasi adalah sebagai berikut: sekali menekan tombol dan LED menyala, sekali lagi ditekan mati.
Mari kita jelaskan secara singkat fitur-fitur dari pengontrol hari-hari penting dari kasus kami:
- Kami akan memberi daya pengontrol dari pengisi daya microUSB (dalam kasus saya 5V, 1 A);
- Controller memiliki 6 pin yang dapat diprogram, serta pin โ+โ dan โ-โ;
- Output yang dapat diprogram dapat dikonfigurasi baik sebagai "input" atau sebagai output;
- Arus maksimum pada keluaran terminal yang dikendalikan adalah 100 mA;
- Kesimpulannya memiliki mode yang berbeda, termasuk PWM, tetapi hari ini kita tidak akan terlalu dalam.
Saya mencoba membuatnya agar Anda bisa mengerti, ide sederhana saya dan bahkan menempatkan KiCad untuk menggambar setidaknya beberapa sketsa.
Sejujurnya, saya tidak pandai dalam hal-hal seperti itu, dan saya melihat KiCad pertama (atau kedua) dalam hidup saya, jadi jika Anda menemukan kesalahan, pastikan untuk memberi tahu saya agar saya dapat memperbaikinya.

Seperti yang Anda harapkan, kami memahami dari diagram bahwa dalam proyek kami, kami akan menggunakan: controller itu sendiri, papan tempat memotong roti, resistor pembatas arus 80 Ohm, tombol yang mirip dengan KLS7-TS6601-5.0-180 dan LED yang mirip dengan BL-FL7600UEC, tetapi pada kenyataannya Anda dapat gantilah dengan apa yang ada di ujung jari Anda.
Logika koneksi adalah sebagai berikut:
- Output "-" dari pengontrol terhubung ke bus minus;
- Output "2" akan melayani kami sebagai "plus", hubungkan ke bus yang sesuai di papan tempat memotong roti;
- Kesimpulan "1" Akan bekerja pada input dan menerima sinyal jika tombol menutup sirkuit (saat ditekan);
- Output "4" akan ditenagai oleh LED kami, untuk kenyamanan saya menghubungkannya ke bus "+" lain di papan tempat memotong roti, tetapi ini tidak perlu.
- Pohon Natal adalah atribut tahun baru dan dengan segala cara membenarkan judul artikel ini.
Bagian III: Pemrograman
Untuk memprogram pengontrol, kita memerlukan lingkungan pengembangan CannyLab, Anda dapat mengunduhnya dari situs pengembang. Pada saat penulisan, versi saat ini adalah 1,41. Lingkungan pengembangan tidak memerlukan instalasi, Anda hanya perlu unzip arsip ke beberapa folder.
Sebelum menulis kode untuk sirkuit kami, mari pastikan semuanya bekerja untuk kami.
Dalam kasus saya, hal pertama yang harus dilakukan adalah menulis perangkat lunak sistem ke controller.
Kami menghubungkan pengontrol melalui kabel microUSB ke komputer. Dalam kasus saya, pada Windows 10, saya tidak perlu menginstal driver apa pun secara terpisah.
Kami memastikan bahwa pengontrol terhubung, jika tidak, klik tombol "Hubungkan" (terlihat seperti dua tautan dalam rantai)
Selanjutnya, Anda perlu memanggil dialog di alamat "Perangkat -> Sistem Perangkat Lunak -> Tulis" dan pilih file yang sesuai (dalam kasus saya "c3tinyv00108.ccx"). Untuk jaga-jaga, saya akan meninggalkan tangkapan layar di bawah.

Sekarang Anda dapat mengkonfigurasi program.
Program ini dibentuk dengan menyeret elemen di sebelah kiri ke bidang putih ruang kerja dan kemudian menghubungkan elemen bersama.
Untuk mengedipkan LED internal dalam mode PWM, kita membutuhkan 3 konstanta, blok generator sinyal PWM dan register tulis.
Kami menghubungkan semuanya seperti pada gambar.

Nilai untuk konstanta dan register dapat diatur jika Anda mengklik dua kali dengan LMB.
Apa nilai konstanta yang misterius ini?
- "3000" - periode 3 detik;
- "1500" - memberi tahu kita bahwa LED tiga detik kita hanya akan menyala satu setengah;
- "1" - baru mulai generator.
Agar tidak mencari nilai register yang diinginkan untuk waktu yang lama, masukkan baris "LED" di jendela "Filter"Kami menulis program ke memori pengontrol.

Selanjutnya, lepaskan pengontrol dari komputer dan alihkan kabel ke pengisian USB.
Lampu hijau berkedip dengan periode tiga detik, jadi semuanya bekerja seperti yang kita inginkan.

Beberapa kata tentang lingkungan pengembangan, pertama, memeriksa kesalahan dalam diagram sebelum mengunggahnya ke controller, yang berarti ada beberapa "perlindungan terhadap orang bodoh". Kedua, jika Anda mengklik tombol dalam bentuk "bug", maka emulator grafik akan terbuka, tetapi lebih banyak tentang itu di lain waktu.
Mari kita beralih ke program untuk sirkuit.
Pasang diagram seperti pada gambar.

Agar tidak mencari nama register dan konstanta untuk waktu yang lama, gunakan filter dengan analogi dengan screenshot.

Jelaskan secara singkat bloknya.
ยซ / ยป - . . 2ยป
Ini menetapkan kita output 2 untuk memasok + 5V, sama untuk saluran keempat
Karena saluran 2 sebenarnya digunakan sebagai "+ 5 V", kami cukup menuliskan konstanta "1" ke dalamnya (saya pikir angka berapa pun bisa lebih besar dari nol).
Catatan: Tegangan pada output pengontrol tergantung pada tegangan suplai dan dapat bervariasi tergantung pada bagaimana Anda menyalakannya.Tetapi saluran 4 di sini memberi + 5V, maka tidak, tergantung pada penekanan tombol.
Saluran 1 secara default dikonfigurasi untuk input dan tidak ada yang perlu dikonfigurasi secara terpisah, kami mengambil nilai inputnya menggunakan blok:
ยซ . . 1ยป
Dan kita melewati blok negasi logis ("Tidak").
Blok "Tidak" diperlukan sehingga secara default ketika sirkuit dihidupkan, LED kami segera menyala. Jika blok ini dihapus dan register saluran 1 terhubung langsung ke detektor tepi utama, maka LED akan dimatikan secara default.
Detektor tepi terdepan dipicu ketika kita menekan tombol dan tidak akan memberikan lebih banyak sinyal sampai kita memutuskan untuk menekannya lagi.
Untuk menyimpan kondisi saat ini, pemicu "T" digunakan. Jika seseorang diumpankan ke input "T", dan satu pulsa diumpankan ke input "C" dari output detektor, maka pemicu kami akan mengganti status "0" dan status "1" pada output. Persis apa yang kita butuhkan.
Selanjutnya, sinyal dari output pemicu masuk ke register keluaran saluran 4, yang pada gilirannya mengumpankan LED.
Kedua bagan dapat diunduh dari
GitHub .
Bagian IV: Kesimpulan



Gambar di bawah ini menunjukkan bahwa semuanya berfungsi (dan jari saya masih terlihat).
Pada awal artikel, saya menyebutkan tourniquet, tetapi saya terlalu malas untuk melepasnya dan timah, jadi untuk sekarang saya telah menggunakan kabel terpisah yang masih saya miliki dari percobaan dengan Craftduino."Dan bagaimana dengan cross-platform?" - Anda bertanya. Saya mencoba menulis kode ke controller dengan menjalankan lingkungan pengembangan di Linux melalui Wine. Akibatnya, lingkungan pengembangan dimulai, tetapi controller itu sendiri tidak melihat komputer (mungkin Anda perlu "menyulapnya" dengan Wine). Jadi, belum mungkin membicarakan solusi lintas platform di luar kotak.
Kerugian lain dari pengontrol adalah biaya tinggi dibandingkan dengan beberapa "Cina" palsu untuk Arduino, tetapi ini sebagian diimbangi oleh kualitas. Kontrolernya bagus untuk dipegang, dan semuanya dikemas dalam kotak dengan sangat hati-hati. Pengontrol bahkan jatuh sekali, tapi sejauh ini semuanya berfungsi.
Benar, dalam penilaian controller, saya mungkin sedikit subjektif. Saya hanya senang bahwa produknya adalah domestik dan bahwa pengembang, meskipun hanya sedikit, terlibat dalam kemenangan KAMAZ dalam reli Dakar.
Secara umum, saya senang dengan hadiah itu, gaya visual pemrograman sangat tidak biasa bagi saya, tetapi pada saat yang sama ia memiliki kelebihannya. Saya pikir orang-orang yang belajar teknik elektronik dan ilmu komputer bahkan dari buku teks Soviet dan yang tahu register, pemicu, multiplexer, dll. Paling menyukainya.
UPD: Teman-teman, saya sedikit ketinggalan zaman dan sedikit melanggar aturan Habr, jadi saya menghapus tautan langsung ke situs web pengembang pengontrol sehingga artikel itu tidak akan terlihat beriklan dan mematuhi aturan. Saya pikir Anda dapat dengan mudah menemukan tautan untuk mengunduh lingkungan pengembangan CannyLab, dan "bukti" tentang KAMAZ sendiri.