EKSPERIMEN PERTAMA ANDA
Pendahuluan: Eksperimen Pertama Anda
Gulung lengan baju Anda dan mari kita menggali! Dalam pelajaran ini, kami akan melakukan beberapa eksperimen papan tempat memotong roti dasar untuk memperkenalkan Anda dengan konsep dan alur kerja dasar Arduino.


Pertama, siapkan diri Anda untuk sukses dengan menempelkan papan Arduino Uno dan papan tempat memotong roti tanpa solder ke pelat pemasangan. Percayalah pada saya yang satu ini — ini memberikan manfaat besar untuk menyatukan prototipe Anda dan menjaga mereka dari masalah! Papan tempat memotong roti tanpa solder memiliki stiker yang dapat dikupas (lepaskan juga alas kertas pelat pemasangan), dan Arduino Uno menempel dengan sekrup dari bagian bawah. Tidak masalah ke arah mana Arduino Anda menghadap dalam kaitannya dengan papan tempat memotong roti. Obeng kecil berguna di sini, sehingga Anda dapat memegang mur nilon di bagian atas papan dan menggerakkan sekrup dari bawah. Hanya dua kombo / mur yang ditempatkan secara diagonal diperlukan untuk pemasangan yang aman.
Persediaan
Untuk mengikuti pelajaran ini Anda perlu:
- Komputer menjalankan perangkat lunak Arduino
- Beberapa item dari Paket Anggaran Adafruit Arduino Uno :
- Papan Arduino Uno
- Kabel USB AB
- Papan tempat memotong roti berukuran setengah
- Kabel papan tempat memotong roti
- 5 red LED 5mm merah
- LED merah , hijau , dan biru cerah (masing-masing LED RGB )
- 5 220-1K ohm resistor (semua nilai yang sama, nilai apa pun dalam rentang OK)
- Piring pemasangan plastik untuk papan tempat memotong roti dan Arduino
- Obeng flathead kecil
Breadboards Solderless
Papan tempat memotong roti yang tidak solder adalah untuk membuat prototipe sirkuit dengan cepat dan mudah. Anda dapat menganggapnya seperti papan penghapus kering, bagus untuk brainstorming dan eksperimen yang cepat. Breadboard memungkinkan Anda menghubungkan komponen menggunakan soket logam multi-port. Bagian konduktif dari papan tempat memotong roti memungkinkan elektron mengalir di antara hal-hal yang Anda tancapkan ke dalamnya.

Di sebelah kanan Anda dapat melihat di dalam papan tempat memotong roti untuk mengamati bagaimana soket ini terhubung. Dua rel panjang membentang di setiap sisi, ditandai dengan garis merah dan biru di bagian depan. Konektor panjang ini biasanya digunakan untuk koneksi daya dan ground, yang cukup sering digunakan. Baris horizontal kecil yang membentuk bagian tengah papan adalah untuk menyambungkan kabel dan komponen. Perhatikan pembagi di tengah papan - ini ada untuk menyediakan chip tempat untuk mengangkang, menyediakan akses independen ke masing-masing pinnya.
Dibutuhkan beberapa latihan untuk terbiasa menggunakan papan tempat memotong roti tanpa solder, terutama karena sulit untuk mengingat titik mana yang terhubung ke tempat lain. Anda mungkin sering merujuk ke foto bagian dalam papan tempat memotong roti; itu sangat normal!
Sirkuit Kedip
Sirkuit pertama yang akan kami bangun di papan tempat memotong roti solderless menghubungkan LED merah ke papan Arduino Uno. Mari kita mulai dengan lambat, dengan satu koneksi kabel pada satu waktu. Ikuti bersama dengan kabel berwarna yang sama untuk memudahkan kita berdua. Periksa ulang apakah kabel USB Anda terputus sebelum melakukan perkabelan apa pun ke papan Anda. Ambil kabel merah dan colokkan salah satu ujungnya ke pin bertanda 5V pada papan Arduino. Masukkan ujung lain dari kabel merah ke rel papan tempat memotong roti yang ditandai dengan garis merah - ini akan menjadi bus kekuatan Anda.

Demikian pula, ambil kabel biru dan hubungkan ke salah satu pin bertanda GND, tepat di sebelah kabel merah. Ada tiga pin arde pada Arduino Uno, dan semuanya dihubungkan ke arde yang sama dengan chip dan seluruh papan, jadi tidak masalah pin mana yang Anda pilih. Masukkan ujung kabel biru Anda ke bus ground biru di papan tempat memotong roti Anda. Ini adalah konfigurasi umum yang akan Anda gunakan lagi dan lagi, dan harus menjadi pengaturan masuk Anda untuk papan tempat memotong roti baru, bahkan jika Anda tidak menggunakan kedua bus segera. Sirkuit dalam pelajaran ini akan terhubung ke bus darat, dan dalam pelajaran berikutnya Anda akan menggunakan beberapa komponen yang akan terhubung ke bus daya 5V.

Selanjutnya, colokkan kabel kuning ke pin Arduino 13. Colokkan ujung lainnya ke setiap baris horizontal di papan tempat memotong roti Anda (baris 10 ditunjukkan di atas). Untuk sirkuit pertama ini, semua koneksi Anda harus dibuat di setengah papan tempat memotong roti terdekat dengan papan Arduino.

Hubungkan kabel biru lain dari pin apa pun di rel tanah Anda ke baris horizontal lain di papan tempat memotong roti Anda (baris 18 ditunjukkan di atas).


Sekarang ambil resistor 1K (garis-garis berwarna coklat-hitam-merah-emas), dan colokkan salah satu kawat timahnya (tidak masalah yang mana) ke dalam baris yang sama dengan kabel biru. Resistor semua terlihat serupa, kecuali untuk garis yang digunakan untuk menunjukkan nilainya.

Colokkan ujung lainnya ke baris tepat di sebelah kabel kuning.



Sekarang ambil LED merah (light emitting diode) . Lihat bagaimana salah satu kawat timahnya lebih panjang dari yang lain? Itulah timah positif (anoda), dan timah pendek adalah negatif (katoda). Di sirkuit yang kami bangun, muatan positif berasal dari pin Arduino dan melewati LED dan resistor ke ground, jadi Anda harus menghubungkan kabel positif (lebih panjang) ke kabel kuning dan kabel negatif (lebih pendek) ke resistor. Sebuah resistor membantu membatasi arus yang melalui LED, yang tidak berfungsi dengan baik membatasi dirinya sendiri.
Cara lain untuk menebak polaritas LED adalah dengan melihat ke dalam lensa pada landasan (potongan logam yang lebih besar) dan tiang (potongan logam yang lebih kecil). Landasan biasanya katoda, tetapi seperti yang Anda lihat di video di atas, tidak semua LED mengamati konvensi polaritas yang sama. Satu-satunya cara untuk benar-benar yakin polaritasnya adalah dengan mengujinya. Untuk mempelajari lebih lanjut tentang resistor dan LED, lihat pelajaran LED di Kelas LED & Penerangan yang Dapat Diarahkan .

Sambungkan kabel USB Anda dan LED harus segera mulai berkedip! Ini diprogram untuk berkedip apa pun yang terhubung ke pin 13. Itu termasuk LED onboard yang Anda lihat dalam pengaturan perangkat lunak Anda serta yang baru saja Anda pasang.
Jika LED Anda tidak berkedip, cabut kabel USB Anda, lalu balikkan LED Anda dan pasang kembali USB Anda; mungkin LED hanya dicolokkan ke belakang (yang tidak akan merusaknya, tetapi tidak akan menyala juga). Atau mungkin salah satu kabel atau resistor Anda yang lain tidak terhubung dengan benar. Periksa koneksi Anda terhadap diagram sirkuit:
Klik "Mulai Simulasi" untuk menjalankan emulator Arduino, yang memuat program sampel "blink". Kami akan menggunakan modul Sirkuit Tinkercad seperti ini di seluruh kelas untuk membantu Anda membangun bersama. Mereka berisi diagram pengkabelan untuk eksperimen papan tempat memotong roti Anda serta kode yang Anda perlukan untuk masing-masing. Klik tombol "Kode" untuk melihat program, yang disebut sketsa Arduino . Ini terlihat seperti ini:
Anda akan menggunakan Arduino IDE untuk memanipulasi program seperti ini dan mengirimkannya ke papan Arduino Anda untuk dijalankan. Anda sudah memasukkan sketsa ini ke papan Arduino Anda di pengaturan perangkat lunak dari pelajaran sebelumnya, tetapi penyegaran tidak ada salahnya: Anda dapat menemukan sketsa ini dan banyak contoh lain yang digunakan di kelas ini melalui menu perangkat lunak Arduino (File -> Contoh -> Dasar -> Kedip).

Contoh sketsa merupakan titik awal yang bagus untuk eksperimen dan proyek Anda sendiri. Contoh-contoh ini sangat berharga untuk pengalaman belajar Arduino Anda; gunakan mereka! Adalah umum untuk membuat banyak kesalahan ketik saat menulis kode pertama Anda, yang dapat menyebabkan kesalahan yang membingungkan. Contoh yang sangat berguna adalah ketika Anda ingin memperbaiki kode Anda yang tidak berfungsi (disebut debugging ). Membandingkan pekerjaan Anda dengan contoh-contoh kode kerja yang pasti dapat menjadi salah satu strategi yang membantu untuk men-debug kode Anda.
Mari kita melihat lebih dekat elemen-elemen sketsa Arduino dasar ini. Pertama adalah sedikit catatan:
// Pin 13 memiliki LED yang terhubung di sebagian besar papan Arduino. // berikan nama:
Ini hanya komentar , yang dimaksudkan untuk membantu manusia memahami program. Dalam program Arduino, komentar ditandai dengan dua garis miring; apa pun pada satu baris setelah garis miring dibuang ketika tiba saatnya mengkompilasi(buat kode ini menjadi versi yang bisa dibaca mesin yang akan berjalan di papan Arduino). Karenanya komentar tidak berkontribusi pada ukuran program Anda, jadi komentarlah! Anda dapat dengan mudah melupakan apa yang seharusnya dicapai oleh setiap bagian dari program Anda; Saya sangat menyarankan Anda untuk membiasakan diri mengomentari kode Anda, dan membaca komentar di setiap contoh yang kami gunakan di kelas ini.
int led = 13;
Selanjutnya adalah deklarasi variabel . Anda dapat menganggap variabel sebagai ember untuk beberapa informasi. Variabel, seperti ember, memiliki ukuran dan bentuk untuk menampung berbagai jenis informasi. Variabel juga memiliki nama, seperti label wajib pada ember. Baris kode ini mendefinisikan variabel tipe
int
, yang berarti integer. Ingat kembali ke kelas matematika sekolah dasar, ketika Anda mungkin telah belajar bahwa bilangan bulat adalah bilangan bulat (positif atau negatif). Jadi kami memiliki ember yang dapat menampung bilangan bulat. Labelnya led
tetapi bisa dengan mudah menjadi "MyLEDPin" atau kata tunggal (hanya huruf dan angka, peka huruf besar kecil) karena bagian dari deklarasi variabel ini terserah Anda. Saya sangat menyarankan menggunakan nama deskriptif untuk variabel Anda sehingga Anda dapat melacak apa yang sedang dilakukan program Anda!
Setelah baris kode di atas, setiap kali kita melihat "led" dalam program akan ditukar dengan angka 13. Ini berguna untuk konfigurasi seperti kita, di mana kita ingin cara untuk referensi ke pin mana LED terhubung, lebih dan lebih, tetapi jika perubahan kabel kita hanya perlu memperbaruinya di satu tempat dalam kode.
// rutinitas setup berjalan sekali ketika Anda menekan reset: pengaturan batal () {
Seperti komentar yang disarankan, apa pun antara baris ini dan kurung kurawal penutupan
}
adalah bagian dari pengaturan , bagian dari kode yang berjalan satu kali per sesi. Kode di dalam pengaturan dijalankan satu kali saat papan Anda menyala pertama kali, atau ketika Anda menekan tombol reset Arduino.// inisialisasi pin digital sebagai output. pinMode (led, OUTPUT); }
Pin 0-13 pada papan Arduino Anda adalah pin i / o digital, yang artinya dapat berupa input atau output.
pinMode();
adalah fungsi , cara singkat untuk merujuk ke subset dari perintah "di bawah tenda," untuk berbicara. Arduino menunjukkan Anda mengenali elemen kode tertentu dengan mengubah warna teksnya. Jika suatu kata kunci tidak berubah warna saat Anda mengetik di Arduino, Anda mungkin memiliki kesalahan ejaan, kesalahan kapitalisasi, atau kesalahan ketik lainnya. Potongan informasi yang diteruskan ke fungsi ini disebut argumen . Karena variabel led
akan menyajikan kontennya kapan pun Anda mengetiknya, nomor pin yang diteruskan pinMode();
adalah 13, dan statusnya adalah OUTPUT. Ini mengatur pin 13 untuk mengontrol LED, dan kurung kurawal menutup pengaturan.// rutin loop berulang-ulang selamanya: membatalkan loop () {
Ini adalah bagian utama dari sketsa Arduino, di mana tindakan seperti memeriksa pin input dan mengontrol pin output biasanya terjadi. Segala sesuatu antara garis ini dan kurung kurawal penutupnya
}
akan terjadi berulang sampai papan kehilangan daya.digitalWrite (led, HIGH); // nyalakan LED (TINGGI adalah level tegangan)
Pertama di loop adalah fungsi yang disebut
digitalWrite();
, yang mengambil dua bagian informasi: nomor pin, dan negara TINGGI (aktif) atau RENDAH (mati). Potongan informasi yang diteruskan ke fungsi ini disebut argumen . Karena variabel led
akan menayangkan kontennya kapan pun Anda mengetiknya, nomor pin yang diteruskan digitalWrite();
adalah 13, dan statusnya TINGGI (aktif). Baris kode ini menyebabkan LED di sirkuit Anda menyala.keterlambatan (1000); // tunggu sebentar
delay();
adalah salah satu fungsi bawaan Arduino. Itu menjeda program untuk sejumlah waktu, ditulis dalam milidetik . Baris kode ini menjeda program selama 1000 ms, atau satu detik.digitalWrite (led, LOW); // matikan LED dengan membuat voltase rendah
Seperti sebelumnya,
digitalWrite();
dapat mengaktifkan atau menonaktifkan pin output. Kali ini menetapkan pin 13 RENDAH (mati).keterlambatan (1000); // tunggu sebentar }
Baris ini menghentikan program selama satu detik, dan kurung kurawal menandakan akhir dari loop, yang dimulai kembali dengan segera. Jadi untuk meringkas, program menyalakan dan mematikan LED pada interval satu detik. Mari kita coba beralih interval itu. Ubah jumlah milidetik dalam satu atau kedua
delay();
pernyataan Anda . Misalnya, Anda dapat membuat kedipan yang lebih tidak rata:membatalkan loop () { digitalWrite (led, HIGH); // nyalakan LED (TINGGI adalah level tegangan) delay (2000); // tunggu dua detik digitalWrite (led, LOW); // matikan LED dengan membuat voltase rendah keterlambatan (500); // tunggu setengah detik }
Coba unggah sketsa kedipan Anda yang dimodifikasi ke papan Arduino Anda. Apakah itu berperilaku seperti yang Anda harapkan?
Sudah selesai dilakukan dengan baik! Itu banyak informasi. Tidak apa-apa jika Anda belum cukup memahami setiap hal kecil. Seperti mempelajari bahasa apa pun, bahasa pemrograman Arduino memiliki sintaks dan struktur sendiri yang harus Anda navigasikan, yang akan menjadi lebih akrab dengan praktik reguler. Yang paling penting untuk diingat adalah Anda dapat bekerja dengan kode tanpa mengetahui segalanya tentang pemrograman. Saat Anda menjalani latihan di kelas ini, saya mendorong Anda untuk membiarkan jendela terbuka penuh dengan halaman referensi bahasa Arduino , yang menjelaskan setiap elemen dan memberikan contoh penggunaan.
Tambahkan Lebih Banyak LED
Sekarang Anda sudah memiliki ide dasar tentang cara mengontrol satu LED, mari kita tambahkan lagi! Raih sisa LED merah dan resistor 1K Anda. Cabut Arduino Anda dari USB / daya jika belum. Adalah cerdas untuk memutus daya setiap kali Anda mengubah sirkuit Anda.


Hubungkan dua pasang rel pada papan tempat memotong roti tanpa solder: pasang kabel yang menghubungkan kedua bus listrik (merah, +) dan kabel lain yang menghubungkan kedua bus darat (biru, -). Ini adalah konfigurasi yang umum digunakan, karena sekarang Anda dapat dengan mudah mengakses daya dan ground di kedua sisi papan tempat memotong roti. Tekuk ujung resistor Anda hingga 90 derajat dan pangkas ujungnya menjadi sekitar seperempat inci (6mm) dari tikungan.

Anda tidak harus membengkokkan dan memotong resistor Anda secara teknis, tetapi mereka tentu saja merapikan papan tempat memotong roti Anda. Ganti resistor di papan tempat memotong roti Anda dengan yang lebih rapi dan lihat perbedaan besar apa yang dibuat dalam keterbacaan sirkuit Anda. Dan Anda juga cenderung membuat hubungan pendek yang tidak disengaja dengan cara ini.

Mari kita tambahkan LED baru ke bagian papan tempat memotong roti yang sejauh ini tidak digunakan. Mulailah dengan menghubungkan resistor rapi dari tanah (soket di sepanjang garis biru) ke deretan papan tempat memotong roti. Colokkan LED merah ke papan tempat memotong roti, sambungkan ujung yang lebih pendek (negatif) pada baris yang sama dengan resistor.

Tambahkan resistor dan LED yang tersisa dalam pola yang sama. Ingatlah bahwa resistor dapat dipasang di kedua orientasi, tetapi LED memiliki polaritas dan hanya menyala ketika listrik mengalir dalam satu arah tertentu melalui mereka.

Pindahkan kabel kuning dari pin Arduino 13 ke pin 7. Hubungkan kabel kuning lain dari pin Arduino 6 ke lead positif LED tetangga berikutnya.

Hubungkan lebih banyak kabel kuning sesuai dengan diagram sirkuit di modul Sirkuit Tinkercad (pin Arduino 3-5 ke lead positif LED yang tersisa).
Klik tombol "Mulai Simulasi" untuk melihat ke mana kita akan pergi dengan sisi kode. Program menyala satu LED pada satu waktu, secara berurutan, turun garis dan kembali lagi. Klik tombol "Kode" untuk melihat kode, lalu klik tombol unduh (ikon panah menghadap ke bawah). Contoh ini sedikit berbeda dari contoh serupa yang disertakan dengan perangkat lunak Arduino, jadi kami akan menggunakan versi yang dapat diunduh ini. Klik dua kali pada file "ForLoopIteration.ino" untuk membukanya.

Klik OK jika Anda melihat permintaan untuk meletakkan program di foldernya sendiri. Jika file yang dihasilkan memiliki semua kode yang dikumpulkan pada satu baris, Anda mungkin menggunakan versi Arduino lama, dan harus memperbarui ke versi terbaru . Jika Anda mau, Anda juga dapat memilih dan menyalin kode dari modul di atas dan menempelkannya ke sketsa Arduino baru (File -> Baru, lalu ganti konten default dengan kode yang Anda salin dari atas).

Hubungkan dan unggah kode ke papan Arduino Uno Anda. Anda mungkin harus memilih port lagi dari menu alat setelah memasang kembali. Mari kita belajar cara membuat kode urutan cahaya dengan melihat lebih dekat pada elemen-elemen program:
/ * Untuk Iterasi Loop Menunjukkan penggunaan loop for (). Menyalakan beberapa LED secara berurutan, lalu terbalik. Sirkuit: * LED dari pin 3 hingga 7 ke ground dibuat 2006 oleh David A. Mellis dimodifikasi 30 Agustus 2011 oleh Tom Igoe Kode contoh ini ada dalam domain publik. <a href="http://www.arduino.cc/en/Tutorial/ForLoop"> http://www.arduino.cc/en/Tutorial/ForLoop </a> * /
Bagian pertama ini hanya komentar panjang. Anda sudah belajar tentang komentar satu baris, dan sekarang Anda tahu tentang komentar multi-baris, yang ditandai dengan tanda * untuk memulai dan * / untuk berhenti.
pengatur waktu = 200; // Semakin tinggi angkanya, semakin lambat waktunya.
Variabel dideklarasikan! Ini adalah bilangan bulat yang disebut "timer", dan baris ini set sama dengan 200. Seperti yang mungkin Anda perhatikan, sebagian besar baris program Arduino diakhiri dengan tanda titik koma . Saat menulis dan memodifikasi sketsa Arduino Anda sendiri, waspadalah terhadap titik koma yang hilang karena akan menyebabkan kesalahan kompilasi yang akan membuat Anda tersandung.
pengaturan batal () { // gunakan for loop untuk menginisialisasi setiap pin sebagai output: for (int thisPin = 3; thisPin <8; thisPin ++) { pinMode (thisPin, OUTPUT); } }
Setup mengkonfigurasi pin 3 hingga 7 sebagai output menggunakan for for , yang merupakan loop khusus yang mengulangi bagian kecil kode beberapa kali berdasarkan kondisi , menggunakan penghitung kenaikan . Setiap kali melalui loop mini, kondisi diuji dan jika benar, akan melanjutkan untuk mengeksekusi kode di dalamnya. Jadi di atas, variabel
thisPin
diatur ke 3, syaratnya adalah bahwa Pin ini harus kurang dari 8, dan penghitung kenaikan meningkatkan Pin ini dengan satu setiap kali melalui loop ( thisPin++
sama dengan mengatakanthisPin = thisPin + 1
). Jadi saat pertama kali melalui loop ini, pin 3 diatur ke output. Kedua kalinya, pin 4 diatur ke output. Dan seterusnya hingga Pin ini adalah 8, pada titik mana kondisinya salah dan kode menghentikan looping, melanjutkan dengan sisa program. Ini mungkin tampak seperti cara berbelit-belit untuk melakukan hal yang sederhana, tetapi programmer menyukai efisiensi! Anda dapat dengan mudah menyelesaikan konfigurasi pin dengan pengaturan berikut:pengaturan batal () { // inisialisasi setiap pin sebagai output: pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); pinMode (6, OUTPUT); pinMode (7, OUTPUT); }
Anda akan melihat bahwa biasanya ada lebih dari satu cara untuk menyelesaikan tugas yang sama dengan pemrograman Arduino. Pengodean mirip dengan membuat sesuatu di bengkel Anda: Anda cenderung menggunakan alat apa pun yang Anda miliki. Jadi mari gunakan loop for untuk sesuatu yang menyenangkan ... animasi!
membatalkan loop () { // loop dari pin terendah ke tertinggi: for (int thisPin = 3; thisPin <8; thisPin ++) { // nyalakan pin: digitalWrite (thisPin, HIGH); keterlambatan (timer); // matikan pin: digitalWrite (thisPin, LOW); }
Loop dimulai dengan loop yang sama seperti sebelumnya, bertambah dari nomor pin terendah ke tertinggi. Di dalam for loop, ia menyalakan LED at
thisPin
, berhenti selama 200ms (atur lebih awal sebagai timer), lalu mematikan LED itu sebelum mengulang lagi dengan LED berikutnya.// loop dari pin tertinggi ke terendah: for (int thisPin = 7; thisPin> = 3; thisPin--) { // nyalakan pin: digitalWrite (thisPin, HIGH); keterlambatan (timer); // matikan pin: digitalWrite (thisPin, LOW); } }
Bagian selanjutnya dari kode adalah lain untuk loop, tetapi yang ini dimulai pada pin tertinggi dan menggunakan
thisPin--
, yang berarti hal yang sama seperti thisPin = thisPin - 1
(itu sendiri minus satu), dan keluar dari loop ketika thisPin tidak lagi >= 3
(lebih besar dari atau sama dengan tiga , alias 2). Kurung kurawal penutupan terakhir menutup loop utama. Jadi program ini menyalakan setiap LED secara berurutan, kemudian membalik urutannya dan menyalakannya lagi.Luntur
Menghidupkan dan mematikan LED itu bagus dan semuanya, tapi sekarang mari kita membuat LED memudar masuk dan keluar secara bertahap menggunakan fungsi yang disebut
analogWrite();
. Cabut kabel USB Anda dan lepaskan semua kecuali LED pertama dari papan tempat memotong roti Anda, dan pindahkan koneksi kabel kuning ke pin Arduino 9.
Salin / unduh kode dari modul Tinkercad Circuits atau buka contoh dalam contoh perangkat lunak Arduino Anda di bawah File -> Contoh -> 01.Basics -> Fade.

Sambungkan dan unggah sketsa ke papan Arduino Uno Anda dan amati lampu LED Anda padam.

Mari kita lihat kode untuk mempelajari bagaimana fading ini tercapai. Saya telah mengaktifkan nomor baris di preferensi Arduino agar dapat lebih baik untuk referensi berbagai bagian kode.
Baris 16 hingga 18 menyatakan tiga variabel yang digunakan dalam program. Pengaturan mengkonfigurasi pin 9 sebagai output pada saluran 23. Pada saluran 29, fungsi
analogWrite();
menetapkan pin 9 untuk apa pun yang variabel kecerahan pada waktu tertentu. Pada saluran 32, kecerahan bertambah 5 ( fadeAmount
). Jalur 35 menggunakan pernyataan if untuk memeriksa apakah kecerahan menggunakan operator pembanding . Jika kecerahan kurang dari atau sama dengan <=
nol, atau ||
lebih besar dari atau sama dengan>=
255. Jika pernyataan itu benar, kode di dalamnya dijalankan, jika tidak maka hanya dilewati. Jadi kode ini meningkatkan kecerahan hingga mencapai atau melebihi 255, kemudian menetapkan fadeAmount ke -5 dan mengurangi kecerahan hingga mencapai nol (atau turun di bawah nol). Penundaan pada akhirnya mencegah kode berjalan begitu cepat sehingga Anda tidak dapat melihat efeknya. Coba ubah nilai fadeAmount dan unggah kode ke papan Anda. Bagaimana mengubah variabel ini memengaruhi tampilan fading?
Papan Arduino hanya mampu menghasilkan sinyal digital (TINGGI dan RENDAH), tetapi analogWrite (); mensimulasikan tampilan kecerahan antara hidup dan mati menggunakan modulasi lebar pulsa (PWM) . LED menyala dan mati sangat cepat, dan mata Anda mengartikan cahaya redup. Rasio waktu yang dihabiskan oleh LED vs. tidak aktif menentukan seberapa terang atau redup LED. Hanya pin tertentu yang mampu PWM, dan mereka diberi label di papan dengan coretan ~ di sebelah nomor pin. PWM juga dapat digunakan untuk mengontrol kecepatan motor DC, yang akan kita lakukan dalam pelajaran selanjutnya.
LED RGB
Warna aditif (berbasis cahaya) memiliki tiga warna primer: merah, hijau, dan biru. Secara bersamaan mengontrol kecerahan satu LED dari masing-masing warna ini dapat membuat hampir semua warna cahaya. LED yang berubah warna seperti yang digunakan dalam tugas akhir bekerja dengan cara yang sama, tetapi LED semuanya bersama dalam paket yang sangat kecil yang disebut RGB LED . Mari kita bangun RGB LED kita sendiri dari tiga LED 5mm di kitmu. Dalam Adafruit kit yang direkomendasikan untuk kelas ini, ketiga LED ini memiliki lensa yang jelas, jadi kita harus mencolokkannya untuk menentukan LED mana yang mana. LED dengan lensa bening bisa warna apa saja! Jika Anda menggunakan kit yang berbeda, temukan satu LED merah, satu hijau, dan satu biru (lensa bening atau berwarna). Cabut kabel USB Anda dan ganti LED merah untuk salah satu LED lensa jernih, lalu colokkan kembali USB.

Apa warna LED? Jika Anda menemukan yang merah pada percobaan pertama, sisihkan dan ulangi proses untuk menentukan warna dari dua LED lainnya.


Sambungkan dua LED lainnya dengan resistor 1K ke pin 10 dan 11, seperti yang ditunjukkan pada diagram. Unduh dan buka kode dari modul Tinkercad Circuits atau salin dan tempel ke sketsa Arduino baru yang kosong. Unggah ke papan Arduino Uno Anda dan lihat apakah Anda dapat mencocokkan baris kode dengan aktivitas yang Anda lihat di LED, seperti yang telah kami lakukan bersama sejauh ini.

Bagian yang tidak dikenal dari kode ini adalah fungsinya
setColor();
. Ini adalah fungsi khusus, didefinisikan di bawah loop () telah berakhir.batal setColor (int red, int green, int blue) { analogWrite (redPin, red); analogWrite (greenPin, green); analogWrite (bluePin, blue); }Sebuah definisi fungsi menyatakan nama, dan apa jenis argumen fungsi akan mengambil, yang dapat Anda anggap sebagai pengaturan yang dapat dikonfigurasi Anda akan ingin mengubah setiap kali Anda menjalankan kode yang dikandungnya. Dalam fungsi sederhana ini, tiga nilai integer ditulis ke tiga pin LED menggunakan
analogWrite();
.setColor (255, 255, 0); // kuning
Setiap kali fungsi ini disebut dalam loop utama, program mengeksekusi kode dalam fungsi sebelum melanjutkan melalui loop utama. Dalam hal ini, argumen digunakan sebagai kecerahan setiap LED. Skala untuk kecerahan adalah 0-255 karena setiap warna ditentukan menggunakan satu byte , yang memungkinkan 256 pola berbeda.
Sekarang unduh dan buka kode dari proyek RGB yang lebih kompleks ini, atau salin dan tempel kode ke sketsa Arduino kosong yang baru. Baca komentarnya untuk mempelajari lebih lanjut tentang cara kerja program ini. Itu beberapa matematika untuk mengkonversi rentang 0-100 ke kisaran yang diperlukan LED, sehingga Anda dapat berpikir dalam persentase bukannya 0-255. Ini menggunakan koleksi variabel yang disebut array untuk menyimpan warna, dan tiga fungsi yang ditentukan pengguna untuk menghitung nilai untuk memudar halus di antara warna sehingga loop () bagus dan rapi.
crossFade(red);
hampir seperti bahasa Inggris! Kami akan membahas beberapa kata kunci asing dalam sketsa ini di pelajaran mendatang, tetapi pertama-tama saatnya merayakan semua yang telah Anda raih sejauh ini.
Komentar
Posting Komentar