Kami memprogram Arduino dalam C murni. Arduino untuk pemula: petunjuk langkah demi langkah. Pemrograman dan Proyek Arduino: Mulai Dari Mana

Secara historis, perangkat lunak Arduino terdiri dari lingkungan perangkat lunak terintegrasi (IDE) yang memungkinkan Anda menulis, mengkompilasi, dan mengunggah kode tertulis ke perangkat keras. Lingkungan ArduinoIDE dan bahasa Wiring itu sendiri terutama didasarkan pada Pemrosesan, dan secara tidak langsung pada C/C++. Faktanya, Arduino IDE adalah gado-gado besar, bukan untuk bersenang-senang, tetapi untuk kenyamanan.

Bahkan secara eksternal danArduinoIDE danPemrosesan serupa


Terdiri dari apa program (sketsa) itu?
Setiap program, betapapun rumitnya kelihatannya, terdiri dari rangkaian yang terpisah blok kode yang dilambangkan dengan kurung kurawal () . Program minimal hanya membutuhkan 2 blok: setup dan loop. Kehadiran mereka wajib dalam program C++ apa pun untuk Arduino, jika tidak, Anda mungkin mendapatkan kesalahan pada tahap kompilasi.
batalkan pengaturan() ( ) batalkan putaran() ( )
Dalam fungsi setup(), pengaturan awal variabel dan register terjadi. Setelah setup() selesai, kontrol diteruskan ke fungsi loop(), yang merupakan loop tak terbatas yang ditulis di badan (antara ( ) ). Perintah inilah yang melakukan semua tindakan algoritmik pengontrol.

Perangkat keras "Halo, dunia! - LED berkedip.
Apa yang mengawali perkenalan pertama dengan Arduino pada antarmuka perangkat lunak dan perangkat keras adalah LED yang berkedip.


Pertama, Anda perlu menambah program minimum. Untuk Arduino (misalnya UNO), kami menghubungkan LED ke pin 12 dan GND (warna LED itu sendiri dipilih berdasarkan preferensi pribadi).

Penyiapan batal() ( pinMode(12, OUTPUT); ) batal loop() ( digitalWrite(12, TINGGI); penundaan(100); digitalWrite(12, RENDAH); penundaan(900); )
Lakukan Ctrl+C -> Ctrl+V, kompilasi, muat, kontrol. Kami melihat pertunjukan cahaya yang berlangsung tidak lebih dari satu detik. Mari kita cari tahu mengapa ini terjadi.

Kami menambahkan beberapa ke blok yang sebelumnya kosong ekspresi . Mereka ditempatkan di antara kurung kurawal fungsi pengaturan dan loop.
Setiap ekspresi merupakan instruksi untuk prosesor. Ekspresi dalam satu blok dieksekusi satu demi satu, secara berurutan, tanpa jeda atau peralihan apa pun. Artinya, jika kita berbicara tentang satu blok kode tertentu, maka dapat dibaca dari atas ke bawah untuk memahami apa yang sedang dilakukan.

Apa yang terjadi di antaranya{ } ?
Seperti yang Anda ketahui, pin Arduino dapat berfungsi sebagai output dan input. Ketika kita ingin mengontrol sesuatu, kita perlu mentransfer pin kontrol ke status keluaran. Hal ini dilakukan dengan ekspresi dalam fungsi pengaturan:
pinMode(12, KELUARAN); Dalam situasi ini, ekspresi muncul panggilan fungsi . Dalam pinMode, pin yang ditentukan berdasarkan angka diatur ke mode yang ditentukan (INPUT atau OUTPUT). Pin mana dan mode apa yang dimaksud ditunjukkan dalam tanda kurung, dipisahkan dengan koma. Dalam kasus kami, kami ingin pin ke-12 bertindak sebagai output. OUTPUT artinya keluaran, INPUT artinya masukan. Nilai yang memenuhi syarat seperti 12 dan OUTPUT dipanggil argumen fungsi . Berapa banyak argumen yang dimiliki suatu fungsi bergantung pada sifat fungsi dan kehendak pembuatnya. Fungsi tidak boleh memiliki argumen sama sekali, seperti halnya pengaturan dan perulangan.

Selanjutnya kita beralih ke blok loop, secara berurutan:
-panggil fungsi bawaan digitalWrite. Ini dirancang untuk menerapkan logika nol (LOW, 0 volt) atau logika (HIGH, 5 volt) ke pin tertentu. Dua argumen diteruskan ke fungsi digitalWrite: nomor pin dan nilai logika.
- panggil fungsi penundaan. Sekali lagi, ini adalah fungsi bawaan yang menyebabkan prosesor “tidur” selama waktu tertentu. Hanya dibutuhkan satu argumen: waktu dalam milidetik untuk tidur. Dalam kasus kami, ini adalah 100 ms. Segera setelah 100 ms berakhir, prosesor akan aktif dan segera beralih ke ekspresi berikutnya.
- panggil fungsi bawaan digitalWrite. Hanya saja kali ini argumen kedua adalah RENDAH. Artinya, kita menetapkan logika nol pada pin ke-12 -> terapkan 0 volt -> matikan LED.
- memanggil fungsi penundaan. Kali ini kita “tidur” lebih lama – 900 ms.

Segera setelah fungsi terakhir dijalankan, blok loop berakhir dan semuanya terulang kembali. Faktanya, kondisi yang disajikan dalam contoh cukup bervariasi, dan Anda dapat bermain-main dengan nilai penundaan, menghubungkan beberapa LED dan membuat sesuatu seperti lampu lalu lintas atau flasher polisi (semua tergantung imajinasi dan kemauan pembuatnya).

Daripada kesimpulan, sedikit tentang kebersihan.
Faktanya, semua spasi, jeda baris, karakter tab tidak memiliki banyak arti bagi kompiler. Dimana ada spasi, di situ bisa terjadi putusnya garis dan sebaliknya. Faktanya, 10 spasi berturut-turut, 2 jeda baris, dan 5 spasi lagi setara dengan satu spasi.


Dengan bantuan ruang kosong, Anda dapat membuat program dapat dimengerti dan divisualisasikan, atau, sebaliknya, merusaknya hingga tidak dapat dikenali lagi. Misalnya contoh programnya bisa diubah seperti ini:

kekosongan setup() ( pinMode(12, OUTPUT); ) void loop () ( digitalWrite(12,HIGH); penundaan(100); digitalWrite(12,LOW); penundaan(900); )

Untuk mencegah seseorang mengeluarkan darah dari matanya saat membaca, Anda dapat mengikuti beberapa aturan sederhana:


1. Selalu, di awal blok baru di antaranya( Dan ) meningkatkan lekukan. Biasanya 2 atau 4 spasi digunakan. Pilih salah satu nilai dan pertahankan seluruh nilai.

Void loop() ( digitalWrite(12, TINGGI); penundaan(100); digitalWrite(12, RENDAH); penundaan(900); )
2. Sama seperti bahasa biasa: beri spasi setelah koma.

digitalWrite(12, TINGGI);
3. Tempatkan karakter awal blok (pada baris baru pada tingkat indentasi saat ini atau di akhir karakter sebelumnya. Dan karakter akhir blok) pada baris terpisah pada tingkat indentasi saat ini:

kekosongan setup() ( pinMode(12, OUTPUT); ) kekosongan setup() ( pinMode(12, OUTPUT); )
4. Gunakan baris kosong untuk memisahkan blok makna:

void loop() ( digitalWrite(12, HIGH); penundaan(100); digitalWrite(12, RENDAH); penundaan(900); digitalWrite(12, TINGGI); penundaan(100); digitalWrite(12, RENDAH); penundaan( 900);
5. Agar anak Anda senang membaca, ada yang disebut komentar. Ini adalah konstruksi dalam kode program yang sepenuhnya diabaikan oleh kompiler dan hanya penting bagi orang yang membacanya. Komentar dapat berupa multi-baris atau satu baris:

/* ini adalah komentar multi-baris */ // ini adalah komentar satu baris

Ardublock adalah bahasa pemrograman grafis untuk Arduino yang dirancang untuk pemula. Lingkungan ini cukup mudah digunakan, mudah dipasang, dan hampir seluruhnya diterjemahkan ke dalam bahasa Rusia. Sebuah program yang dirancang secara visual yang menyerupai balok...

Interupsi adalah mekanisme yang sangat penting di Arduino yang memungkinkan perangkat eksternal berinteraksi dengan pengontrol ketika berbagai peristiwa terjadi. Dengan memasang pengendali interupsi perangkat keras pada sketsa, kita dapat merespons tombol yang dihidupkan atau dimatikan, penekanan keyboard,...

Serial.print() dan Serial.println() merupakan fungsi utama Arduino untuk mentransfer informasi dari papan Arduino ke komputer melalui port serial. Papan Arduino Uno, Mega, Nano paling populer tidak memiliki layar internal, jadi...

Apakah mungkin melakukan proyek Arduino tanpa papan Arduino itu sendiri? Ternyata cukup. Berkat banyaknya layanan dan program online yang memiliki nama sendiri: emulator atau simulator Arduino. Perwakilan paling populer dari program tersebut adalah...

Serial start adalah instruksi Arduino yang sangat penting; memungkinkan pengontrol untuk membuat koneksi dengan perangkat eksternal. Paling sering, “perangkat eksternal” ini adalah komputer yang kita sambungkan dengan Arduino. Itu sebabnya Serial dimulai lebih intens...

Variabel global di Arduino adalah variabel yang cakupannya meluas ke seluruh program, terlihat di semua modul dan fungsi. Pada artikel ini kita akan melihat beberapa contoh penggunaan variabel global...

Array Arduino adalah elemen bahasa yang secara aktif digunakan oleh pemrogram untuk bekerja dengan kumpulan data dengan tipe yang sama. Array ditemukan di hampir semua bahasa pemrograman, tidak terkecuali Arduino, sintaksisnya sangat mirip...

" menyajikan kursus pelatihan "Arduino untuk Pemula". Seri ini terdiri dari 10 pelajaran, serta materi tambahan. Pelajaran termasuk instruksi teks, foto dan video instruksional. Dalam setiap pelajaran Anda akan menemukan daftar komponen yang diperlukan, daftar program dan diagram koneksi. Setelah Anda menyelesaikan 10 pelajaran dasar ini, Anda akan dapat melanjutkan ke model yang lebih menarik dan pembuatan robot berbasis Arduino. Kursus ini ditujukan untuk pemula; tidak diperlukan informasi tambahan dari teknik elektro atau robotika untuk memulainya.

Informasi singkat tentang Arduino

Apa itu Arduino?

Arduino (Arduino) adalah platform komputasi perangkat keras, komponen utamanya adalah papan input-output dan lingkungan pengembangan. Arduino dapat digunakan untuk membuat objek interaktif yang berdiri sendiri, atau terhubung ke perangkat lunak yang berjalan di komputer. Arduino adalah komputer papan tunggal.

Bagaimana Arduino dan robot terhubung?

Jawabannya sangat sederhana - Arduino sering digunakan sebagai otak robot.

Keuntungan papan Arduino dibandingkan platform serupa adalah harganya yang relatif murah dan distribusinya yang hampir luas di kalangan amatir dan profesional di bidang robotika dan teknik elektro. Setelah Anda masuk ke Arduino, Anda akan mendapatkan dukungan dalam bahasa apa pun dan orang-orang yang berpikiran sama yang akan menjawab pertanyaan Anda dan mendiskusikan perkembangan Anda.

Pelajaran 1. LED berkedip di Arduino

Pada pelajaran pertama Anda akan mempelajari cara menghubungkan LED ke Arduino dan mengontrolnya agar berkedip. Ini adalah model yang paling sederhana dan mendasar.

DIPIMPIN- perangkat semikonduktor yang menghasilkan radiasi optik ketika arus listrik dilewatkan melaluinya dalam arah maju.

Pelajaran 2. Menghubungkan tombol di Arduino

Dalam tutorial ini Anda akan belajar cara menghubungkan tombol dan LED ke Arduino.

Saat tombol ditekan, LED akan menyala; saat tombol ditekan, LED tidak akan menyala. Ini juga merupakan model dasar.

Pelajaran 3. Menghubungkan potensiometer di Arduino

Dalam tutorial ini Anda akan belajar cara menghubungkan potensiometer ke Arduino.

Potensiometer- Ini resistor dengan resistansi yang dapat disesuaikan.Potensiometer digunakan sebagai pengatur berbagai parameter - volume suara, daya, tegangan, dll.Ini juga merupakan salah satu skema dasar. Dalam model kami dari memutar kenop potensiometerKecerahan LED akan tergantung.

Pelajaran 4. Kontrol servo di Arduino

Dalam tutorial ini Anda akan mempelajari cara menghubungkan servo ke Arduino.

servoadalah motor yang posisi porosnya dapat dikontrol dengan mengatur sudut putarannya.

Servo digunakan untuk mensimulasikan berbagai gerakan mekanis robot.

Pelajaran 5. LED tiga warna di Arduino

Dalam tutorial ini Anda akan belajar cara menghubungkan LED tiga warna ke Arduino.

LED tiga warna(LED RGB) - ini adalah tiga LED dengan warna berbeda dalam satu wadah. Mereka datang dengan papan sirkuit kecil yang berisi resistor, atau tanpa resistor bawaan. Pelajaran ini mencakup kedua pilihan tersebut.

Pelajaran 6. Elemen piezoelektrik di Arduino

Dalam pelajaran ini Anda akan mempelajari cara menghubungkan elemen piezo ke Arduino.

Elemen piezo- konverter elektromekanis yang menerjemahkan tegangan listrik menjadi getaran membran. Getaran ini menimbulkan suara.

Dalam model kami, frekuensi suara dapat disesuaikan dengan mengatur parameter yang sesuai dalam program.

Pelajaran 7. Fotoresistor di Arduino

Dalam pelajaran kursus kami ini Anda akan belajar cara menghubungkan fotoresistor ke Arduino.

Fotoresistor- sebuah resistor yang resistansinya bergantung pada kecerahan cahaya yang jatuh padanya.

Dalam model kami, LED hanya menyala jika kecerahan cahaya di atas fotoresistor kurang dari kecerahan tertentu yang dapat disesuaikan dalam program;

Pelajaran 8. Sensor gerak (PIR) di Arduino. Pengiriman email secara otomatis

Dalam pelajaran kursus kami ini Anda akan belajar cara menghubungkan sensor gerak (PIR) ke Arduino, serta mengatur pengiriman email otomatis.

Sensor gerak (PIR)- Sensor infra merah untuk mendeteksi pergerakan atau keberadaan orang atau hewan.

Dalam model kami, ketika menerima sinyal tentang pergerakan manusia dari sensor PIR, Arduino mengirimkan perintah ke komputer untuk mengirim E-mail dan surat tersebut dikirim secara otomatis.

Pelajaran 9. Menghubungkan sensor suhu dan kelembaban DHT11 atau DHT22

Dalam pelajaran kami kali ini, Anda akan mempelajari cara menghubungkan sensor suhu dan kelembapan DHT11 atau DHT22 ke Arduino, dan juga mengenal perbedaan karakteristiknya.

Sensor suhu dan kelembaban adalah sensor digital komposit yang terdiri dari sensor kelembaban kapasitif dan termistor untuk mengukur suhu.

Dalam model kami, Arduino membaca pembacaan sensor dan menampilkan pembacaan tersebut di layar komputer.

Pelajaran 10. Menghubungkan keyboard matriks

Dalam pelajaran kursus kami ini, Anda akan belajar cara menghubungkan keyboard matriks ke papan Arduino, dan juga mengenal berbagai rangkaian menarik.

Keyboard matriks diciptakan untuk menyederhanakan koneksi sejumlah besar tombol. Perangkat semacam itu dapat ditemukan di mana-mana - di keyboard komputer, kalkulator, dan sebagainya.

Pelajaran 11. Menghubungkan modul jam real-time DS3231

Dalam pelajaran terakhir kursus kami, Anda akan mempelajari cara menghubungkan modul jam waktu nyata dari keluarga
DS ke board Arduino, dan juga berkenalan dengan berbagai rangkaian menarik.

Modul jam waktu nyata- ini adalah sirkuit elektronik yang dirancang untuk merekam data kronometrik (waktu saat ini, tanggal, hari dalam seminggu, dll.), dan merupakan sistem yang terdiri dari sumber daya otonom dan alat perekam.

Aplikasi. Bingkai siap pakai dan robot Arduino


Anda dapat mulai mempelajari Arduino tidak hanya dari papan itu sendiri, tetapi juga dengan membeli robot lengkap yang sudah jadi berdasarkan papan ini - robot laba-laba, robot mobil, robot penyu, dll. Seperti jalan Ini juga cocok untuk mereka yang tidak terlalu tertarik dengan rangkaian listrik.

Dengan membeli model robot yang berfungsi, mis. Faktanya, mainan berteknologi tinggi yang sudah jadi dapat membangkitkan minat pada desain independen dan robotika. Keterbukaan platform Arduino memungkinkan Anda membuat mainan baru dari komponen yang sama.

Pilihan lainnya adalah dengan membeli kerangka atau badan robot: platform di atas roda atau lintasan, humanoid, laba-laba, dll. Dalam hal ini, Anda harus mengisi robot sendiri.

Aplikasi. Direktori seluler


– asisten pengembang algoritme untuk platform Arduino, yang tujuannya adalah memberikan kesempatan kepada pengguna akhir untuk memiliki serangkaian perintah seluler (buku referensi).

Aplikasi ini terdiri dari 3 bagian utama:

  • Operator;
  • Data;
  • Fungsi.

Di mana membeli Arduino


perlengkapan Arduino

Kursus ini akan diperbarui dengan pelajaran tambahan. Ikuti kami

Simulator ini berfungsi paling baik di browser Chrome
Mari kita lihat lebih dekat Arduino.

Arduino bukanlah komputer besar yang dapat dihubungkan ke sirkuit eksternal. Arduino Uno menggunakan Atmega 328P
Ini adalah chip terbesar di papan. Chip ini menjalankan program yang tersimpan di memorinya. Anda dapat mendownload program melalui usb menggunakan Arduino IDE. Port USB juga memberikan daya ke Arduino.

Ada konektor daya terpisah. Papan ini memiliki dua pin berlabel 5v dan 3.3v, yang diperlukan untuk memberi daya pada berbagai perangkat. Anda juga akan menemukan pin bertanda GND, ini adalah pin ground (ground adalah 0V). Platform Arduino juga memiliki 14 pin digital, berlabel 0 hingga 13, yang terhubung ke node eksternal dan memiliki dua status, tinggi atau rendah (on atau off). Kontak ini dapat berfungsi sebagai keluaran atau masukan, mis. mereka dapat mengirimkan beberapa data dan mengontrol perangkat eksternal, atau menerima data dari perangkat. Pin berikutnya di papan diberi label A0-A5. Ini adalah input analog yang dapat menerima data dari berbagai sensor. Ini sangat berguna ketika Anda perlu mengukur rentang tertentu, seperti suhu. Input analog memiliki fungsi tambahan yang dapat diaktifkan secara terpisah.

Cara menggunakan papan pengembangan.

Papan tempat memotong roti diperlukan untuk menyambungkan bagian-bagiannya untuk sementara, memeriksa cara kerja perangkat, sebelum Anda menyolder semuanya.
Semua contoh berikut ini dirakit pada papan tempat memotong roti sehingga Anda dapat dengan cepat membuat perubahan pada sirkuit dan menggunakan kembali komponen tanpa harus repot menyolder.

Papan tempat memotong roti memiliki deretan lubang tempat Anda dapat memasukkan bagian dan kabel. Beberapa lubang ini terhubung secara elektrik satu sama lain.

Dua baris atas dan bawah dihubungkan dalam baris di sepanjang papan. Baris-baris ini digunakan untuk menyuplai daya ke sirkuit. Bisa jadi 5V atau 3.3V, tapi bagaimanapun, hal pertama yang perlu Anda lakukan adalah menghubungkan 5V dan GND ke papan tempat memotong roti seperti yang ditunjukkan pada gambar. Terkadang sambungan baris ini mungkin putus di tengah papan, kemudian jika perlu Anda dapat menyambungkannya seperti yang ditunjukkan pada gambar.








Sisa lubang yang terletak di tengah papan dikelompokkan menjadi kelompok yang terdiri dari lima lubang. Mereka digunakan untuk menghubungkan bagian-bagian sirkuit.


Hal pertama yang akan kita sambungkan ke mikrokontroler kita adalah LED. Diagram sambungan listrik ditunjukkan pada gambar.

Mengapa diperlukan resistor dalam suatu rangkaian? Dalam hal ini, ini membatasi arus yang melewati LED. Setiap LED dirancang untuk arus tertentu, dan jika arus ini lebih tinggi, LED akan mati. Anda dapat mengetahui nilai resistor yang seharusnya menggunakan hukum Ohm. Bagi yang belum tahu atau lupa, hukum Ohm mengatakan bahwa ada hubungan linier antara arus dan tegangan. Artinya, semakin banyak tegangan yang kita berikan pada resistor, semakin banyak arus yang mengalir melaluinya.
V=Saya*R
Di mana V- tegangan melintasi resistor
SAYA- arus melalui resistor
R- resistensi yang perlu ditemukan.
Pertama, kita harus mencari tegangan pada resistor. Kebanyakan LED 3mm atau 5mm yang akan Anda gunakan memiliki tegangan pengoperasian 3V. Artinya kita perlu mematikan 5-3 = 2V pada resistor.

Kami kemudian akan menghitung arus yang melewati resistor.
Kebanyakan LED 3mm dan 5mm menyala dengan kecerahan penuh pada 20mA. Arus yang lebih besar dari ini dapat menonaktifkannya, sedangkan arus dengan intensitas lebih rendah akan mengurangi kecerahannya tanpa menimbulkan bahaya apa pun.

Jadi kita ingin menghubungkan LED ke rangkaian 5V sehingga mengalirkan arus 20mA. Karena semua bagian termasuk dalam satu rangkaian, resistor juga akan memiliki arus 20mA.
Kami mengerti
2V = 20mA*R
2V = 0,02A*R
R = 100 Ohm

100 Ohm adalah resistansi minimum, lebih baik menggunakan lebih sedikit, karena LED memiliki beberapa variasi karakteristik.
Dalam contoh ini, resistor 220 ohm digunakan. Hanya karena penulis punya banyak: wink: .

Masukkan LED ke dalam lubang di tengah papan sehingga kabel panjangnya tersambung ke salah satu kabel resistor. Hubungkan ujung kedua resistor ke 5V, dan sambungkan ujung kedua LED ke GND. LED akan menyala.

Harap dicatat bahwa ada perbedaan dalam cara Anda menghubungkan LED. Arus mengalir dari terminal yang lebih panjang ke terminal yang lebih pendek. Pada diagram Anda dapat membayangkan bahwa arus mengalir searah dengan arah segitiga. Coba balikkan LED dan Anda akan melihat bahwa LED tidak menyala.

Tetapi cara Anda menghubungkan resistor tidak ada bedanya sama sekali. Anda dapat membaliknya atau mencoba menghubungkannya ke pin LED lain, ini tidak akan mempengaruhi pengoperasian rangkaian. Itu masih akan membatasi arus yang melalui LED.

Anatomi Sketsa Arduino.

Program untuk Arduino disebut sketsa. Mereka terdiri dari dua fungsi utama. Fungsi pengaturan dan fungsi lingkaran
Di dalam fungsi ini Anda akan mengatur semua pengaturan dasar. Pin mana yang akan berfungsi sebagai input atau output, perpustakaan mana yang akan dihubungkan, inisialisasi variabel. Fungsi Pengaturan() hanya dijalankan satu kali selama pembuatan sketsa, saat eksekusi program dimulai.
ini adalah fungsi utama yang dijalankan setelahnya pengaturan(). Faktanya, itu adalah program itu sendiri. Fungsi ini akan berjalan tanpa batas waktu hingga Anda mematikan daya.

Arduino berkedip LED



Dalam contoh ini, kita akan menghubungkan rangkaian LED ke salah satu pin digital Arduino dan menyalakan dan mematikannya menggunakan program, dan Anda juga akan mempelajari beberapa fungsi yang berguna.

Fungsi ini digunakan di pengaturan() bagian dari program dan berfungsi untuk menginisialisasi pin yang akan Anda gunakan sebagai input (MASUKAN) atau keluar (KELUARAN). Anda tidak akan dapat membaca atau menulis data dari pin sampai Anda mengaturnya masing-masing mode pin. Fungsi ini memiliki dua argumen: nomor pin adalah nomor pin yang akan Anda gunakan.

Mode-mengatur cara kerja pin. Di pintu masuk (MASUKAN) atau keluar (KELUARAN). Untuk menyalakan LED kita harus memberi sinyal DARI Arduino. Untuk melakukan ini, kami mengkonfigurasi pin keluaran.
- fungsi ini digunakan untuk mengatur keadaan (negara) pina (nomor pin). Ada dua negara bagian utama (sebenarnya 3 di antaranya), satu adalah TINGGI, akan ada 5V di pin, itu sesuatu yang lain Rendah dan pinnya akan menjadi 0v. Artinya untuk menyalakan LED kita perlu mengatur pin yang terhubung ke LED ke level tinggi TINGGI.

Menunda. Berfungsi untuk menunda pengoperasian program selama jangka waktu yang ditentukan dalam msec.
Di bawah ini adalah kode yang membuat LED berkedip.
//LED Blink int ledPin = 7;//Pin Arduino yang terhubung dengan LED void setup() ( pinMode(ledPin, OUTPUT);// menyetel pin sebagai OUTPUT) void loop() ( digitalWrite(ledPin, HIGH) ;// nyalakan penundaan LED (1000); // tunda 1000 ms (1 detik) digitalWrite (ledPin, LOW); // Matikan penundaan LED (1000); // tunggu 1 detik)

Penjelasan kecil tentang kodenya.
Baris yang dimulai dengan "//" adalah komentar dan diabaikan oleh Arduino.
Semua perintah diakhiri dengan titik koma; jika Anda lupa, Anda akan menerima pesan kesalahan.

pin led adalah sebuah variabel. Variabel digunakan dalam program untuk menyimpan nilai. Dalam contoh ini, variabel pin led nilainya ditetapkan ke 7, ini adalah nomor pin Arduino. Ketika program Arduino menemukan garis dengan variabel pin led, itu akan menggunakan nilai yang kita tentukan sebelumnya.
Jadi rekam pinMode(Pin led, KELUARAN) mirip dengan rekaman pinMode(7, KELUARAN).
Namun dalam kasus pertama, Anda hanya perlu mengubah variabel dan variabel tersebut akan berubah di setiap baris yang digunakan, dan dalam kasus kedua, untuk mengubah variabel, Anda harus melakukan perubahan secara manual di setiap perintah.

Baris pertama menunjukkan jenis variabel. Saat memprogram Arduino, penting untuk selalu mendeklarasikan tipe variabel. Untuk saat ini cukup bagi Anda untuk mengetahuinya INTI mengumumkan angka negatif dan positif.
Di bawah ini adalah simulasi sketsanya. Klik mulai untuk melihat rangkaian beraksi.

Seperti yang diharapkan, LED padam dan menyala kembali setelah satu detik. Coba ubah penundaan untuk melihat cara kerjanya.

Kontrol beberapa LED.

Dalam contoh ini, Anda akan mempelajari cara mengontrol beberapa LED. Untuk melakukan ini, pasang 3 LED lagi di papan dan sambungkan ke resistor dan pin Arduino seperti yang ditunjukkan di bawah ini.

Untuk menyalakan dan mematikan LED satu per satu, Anda perlu menulis program seperti ini:
//Multi LED Berkedip int led1Pin = 4; int led2Pin = 5; int led3Pin = 6; int led4Pin = 7; void setup() ( //atur pin sebagai OUTPUT pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); ) void loop() ( digitalWrite(led1Pin, HIGH );//nyalakan penundaan LED (1000);//tunda 1 detik digitalWrite(led1Pin, LOW);//matikan penundaan LED (1000);//tunda 1 detik //lakukan hal yang sama untuk 3 lainnya LED digitalWrite(led2Pin , HIGH);//menyalakan penundaan LED (1000);//menunda 1 detik digitalWrite(led2Pin, LOW);//mematikan penundaan LED (1000);//menunda 1 detik digitalWrite(led3Pin, HIGH) );//menyalakan penundaan LED (1000);// menunda 1 detik digitalWrite(led3Pin, LOW);//mematikan penundaan LED (1000);//menunda 1 detik digitalWrite(led4Pin, HIGH);//nyalakan penundaan LED (1000); // penundaan 1 detik digitalWrite (led4Pin, RENDAH); // pemadaman penundaan LED (1000); // penundaan 1 detik)

Program ini akan bekerja dengan baik, tetapi ini bukan solusi yang paling rasional. Kodenya perlu diubah. Agar program dapat bekerja berulang kali, kita akan menggunakan konstruksi yang disebut .
Perulangan berguna ketika Anda perlu mengulangi tindakan yang sama beberapa kali. Pada kode di atas kita mengulangi baris tersebut

DigitalWrite (led4Pin, TINGGI); penundaan(1000); digitalWrite(led4Pin, RENDAH); penundaan(1000);
kode sketsa lengkap dalam lampiran (unduhan: 1187)

Penyesuaian kecerahan LED

Terkadang Anda perlu mengubah kecerahan LED dalam program. Ini dapat dilakukan dengan menggunakan perintah analogTulis() . Perintah ini menyalakan dan mematikan LED dengan sangat cepat sehingga mata tidak dapat melihat kedipan tersebut. Jika LED dinyalakan separuh waktu dan dimatikan separuh waktu, secara visual akan terlihat bahwa LED bersinar dengan separuh kecerahannya. Ini disebut modulasi lebar pulsa (PWM atau PWM dalam bahasa Inggris). Shim cukup sering digunakan karena dapat digunakan untuk mengontrol komponen “analog” menggunakan kode digital. Tidak semua pin Arduino cocok untuk tujuan ini. Hanya kesimpulan-kesimpulan yang dekat dengan penunjukan seperti itu yang diambil " ~ ". Anda akan melihatnya di sebelah pin 3,5,6,9,10,11.
Hubungkan salah satu LED anda ke salah satu pin PWM (bagi penulis ini adalah pin 9). Sekarang jalankan sketsa LED yang berkedip, tetapi ubah perintahnya terlebih dahulu tulis digital() pada analogTulis(). analogTulis() memiliki dua argumen: yang pertama adalah nomor pin, dan yang kedua adalah nilai PWM (0-255), untuk LED ini adalah kecerahannya, dan untuk motor listrik kecepatan putarannya. Di bawah ini adalah contoh kode untuk kecerahan LED yang berbeda.
//Ubah kecerahan LED int ledPin = 9;//sebuah LED terhubung ke pin ini void setup() ( pinMode(ledPin, OUTPUT);// menginisialisasi pin ke output ) void loop() ( analogWrite( ledPin, 255);// kecerahan penuh (255/255 = 1) penundaan(1000);//jeda 1 detik digitalWrite(ledPin, LOW);//matikan penundaan LED(1000);//jeda 1 detik analogWrite( ledPin, 191);//kecerahan sebesar 3/4 (191/255 ~= 0,75) penundaan (1000);//jeda 1 detik digitalWrite(ledPin, LOW);//matikan penundaan LED (1000);// jeda 1 detik analogWrite(ledPin, 127); //setengah kecerahan (127/255 ~= 0,5) penundaan(1000);//jeda 1 detik digitalWrite(ledPin, RENDAH);//matikan penundaan LED(1000);/ /jeda 1 detik analogWrite(ledPin, 63); //kecerahan seperempat (63/255 ~= 0,25) penundaan(1000);//jeda 1 detik digitalWrite(ledPin, RENDAH);//matikan penundaan LED (1000) ;//jeda 1 detik)

Coba ubah nilai PWM pada perintah analogTulis() untuk melihat bagaimana hal ini memengaruhi kecerahan.
Selanjutnya, Anda akan mempelajari cara mengatur kecerahan dengan lancar dari penuh ke nol. Anda tentu saja dapat menyalin sepotong kode sebanyak 255 kali
analogWrite(ledPin, kecerahan); penundaan(5);//kecerahan penundaan singkat = kecerahan + 1;
Tapi, tahukah Anda, ini tidak praktis. Cara terbaik untuk melakukan ini adalah dengan menggunakan perulangan FOR yang kita gunakan sebelumnya.
Contoh berikut menggunakan dua loop, satu untuk mengurangi kecerahan dari 255 menjadi 0
for (int kecerahan=0;kecerahan=0;kecerahan--)( analogWrite(ledPin,kecerahan); penundaan(5); )
penundaan(5) digunakan untuk memperlambat kecepatan fade-in dan fade-out 5*256=1280ms=1,28detik)
Baris pertama menggunakan " kecerahan-" untuk membuat nilai kecerahan berkurang 1 setiap kali perulangan diulang. Perhatikan bahwa perulangan akan berjalan hingga kecerahan >=0.Mengganti tanda > pada tanda itu >= kami menyertakan 0 dalam rentang kecerahan. Sketsa ini dimodelkan di bawah ini. //mengubah kecerahan dengan lancar int ledPin = 9;//sebuah LED terhubung ke pin ini void setup() ( pinMode(ledPin, OUTPUT);// inisialisasi pin output) void loop() ( //meningkatkan kecerahan dengan lancar kecerahan (0 hingga 255 ) untuk (int kecerahan=0;kecerahan=0;kecerahan--)( analogWrite(ledPin,brightness); penundaan(5); ) penundaan(1000);//tunggu 1 detik //kurangi kecerahan secara perlahan (255 hingga 0) untuk (int kecerahan=255;kecerahan>=0;kecerahan--)( analogWrite(ledPin,brightness); penundaan(5); ) penundaan(1000);//tunggu 1 detik ) )
Memang tidak terlalu terlihat, tapi idenya jelas.

LED RGB dan Arduino

LED RGB sebenarnya adalah tiga LED berwarna berbeda dalam satu paket.

Dengan menyertakan LED berbeda dengan kecerahan berbeda, Anda dapat menggabungkannya untuk menciptakan warna berbeda. Untuk Arduino, dimana jumlah tingkat kecerahannya adalah 256, Anda akan mendapatkan 256^3=16581375 kemungkinan warna. Pada kenyataannya, tentu saja jumlahnya akan lebih sedikit.
LED yang akan kita gunakan adalah katoda common. Itu. ketiga LED secara struktural dihubungkan oleh katoda ke satu terminal. Kami akan menghubungkan pin ini ke pin GND. Pin yang tersisa, melalui resistor pembatas, harus dihubungkan ke pin PWM. Penulis menggunakan pin 9-11. Dengan cara ini setiap LED dapat dikontrol secara terpisah. Sketsa pertama menunjukkan cara menyalakan setiap LED satu per satu.



//LED RGB - uji //koneksi pin int merah = 9; int hijau = 10; int biru = 11; void setup())( pinMode(merah, OUTPUT); pinMode(biru, OUTPUT); pinMode(hijau, OUTPUT); ) void loop())( //menghidupkan/mematikan LED merah digitalWrite(merah, HIGH); delay(500) ; digitalWrite(merah, RENDAH); //menghidupkan/mematikan LED digitalWrite(hijau, TINGGI); digitalWrite(hijau, RENDAH); TINGGI); digitalWrite (biru, RENDAH);

Contoh berikut menggunakan perintah analogTulis() dan untuk mendapatkan nilai kecerahan acak yang berbeda untuk LED. Anda akan melihat berbagai warna berubah secara acak.
//LED RGB - warna acak //koneksi pin int merah = 9; int hijau = 10; int biru = 11; void setup())( pinMode(merah, OUTPUT); pinMode(biru, OUTPUT); pinMode(hijau, OUTPUT); ) void loop())( //pilih warna acak analogWrite(merah, acak(256)); analogWrite( biru, acak(256)); analogWrite(hijau, acak(256));

Acak (256)-mengembalikan nomor acak dalam rentang 0 hingga 255.
File terlampir berisi sketsa yang akan menunjukkan transisi warna yang mulus dari merah ke hijau, lalu ke biru, merah, hijau, dll. (unduhan: 326)
Contoh sketsa berfungsi, tetapi ada banyak kode duplikat. Anda dapat menyederhanakan kode dengan menulis fungsi pembantu Anda sendiri yang akan berubah dengan lancar dari satu warna ke warna lainnya.
Ini akan terlihat seperti ini: (unduhan: 365)
Mari kita lihat definisi fungsi sepotong demi sepotong. Fungsinya disebut memudar dan memiliki dua argumen. Setiap argumen dipisahkan dengan koma dan memiliki tipe yang dideklarasikan pada baris pertama definisi fungsi: batalkan fader(int warna1, int warna2). Anda melihat bahwa kedua argumen dinyatakan sebagai ke dalam, dan mereka diberi nama warna1 Dan warna2 sebagai variabel kondisi untuk mendefinisikan suatu fungsi. Ruang kosong berarti fungsi tersebut tidak mengembalikan nilai apa pun, ia hanya menjalankan perintah. Jika Anda harus menulis fungsi yang mengembalikan hasil perkalian, tampilannya akan seperti ini:
int pengali(int angka1, int angka2)( int produk = angka1*angka2; kembalikan produk; )
Perhatikan bagaimana kita mendeklarasikan Type ke dalam sebagai tipe pengembalian sebagai gantinya
ruang kosong.
Di dalam fungsinya terdapat perintah-perintah yang telah Anda gunakan pada sketsa sebelumnya, hanya nomor pin yang diganti warna1 Dan warna2. Fungsinya disebut memudar, argumennya dihitung sebagai warna1 = merah Dan warna2 = hijau. Arsip berisi sketsa lengkap menggunakan fungsi (unduhan: 272)

Tombol

Sketsa selanjutnya akan menggunakan tombol dengan kontak yang biasanya terbuka, tanpa kait.


Artinya ketika tombol tidak ditekan, tidak ada arus yang mengalir melaluinya, dan setelah dilepaskan, tombol kembali ke posisi semula.
Selain tombol, rangkaian ini menggunakan resistor. Dalam hal ini, ia tidak membatasi arus, tetapi “menarik” tombol ke 0V (GND). Itu. Sampai tombol ditekan, pin Arduino yang terhubung akan menjadi rendah. Resistor yang digunakan pada rangkaian ini adalah 10 kOhm.


//menentukan kapan tombol ditekan int buttonPin = 7; void setup())( pinMode(buttonPin, INPUT);//inisialisasi pin ke input Serial.begin(9600);//inisialisasi port serial) void loop())( if (digitalRead(buttonPin)==HIGH )(//jika tombol ditekan Serial.println("ditekan"); // tampilkan tulisan "ditekan" ) else ( Serial.println("ditekan");// jika tidak "ditekan" ) )
Ada beberapa perintah baru dalam sketsa ini.
-Perintah ini mengambil nilai Tinggi dan Rendah dari keluaran yang kita uji. Output ini harus dikonfigurasi terlebih dahulu sebagai input di setup().
; //di mana buttonPin adalah nomor pin tempat tombol dihubungkan.
Port serial memungkinkan Arduino untuk mengirim pesan ke komputer saat pengontrol itu sendiri menjalankan program. Ini berguna untuk men-debug suatu program, mengirim pesan ke perangkat atau aplikasi lain. Untuk mengaktifkan transfer data melalui port serial (juga disebut UART atau USART), Anda perlu menginisialisasinya di setup()

Serial.mulai() hanya memiliki satu argumen - ini adalah kecepatan transfer data antara Arduino dan komputer.
Sketsa menggunakan perintah untuk menampilkan pesan di layar di Arduino IDE (Tools >> Serial Monitor).
- desain memungkinkan Anda mengontrol kemajuan pelaksanaan program dengan menggabungkan beberapa pemeriksaan di satu tempat.
Jika digitalRead mengembalikan TINGGI, maka kata "ditekan" ditampilkan di monitor. Jika tidak (jika tidak), kata “dilepaskan” akan ditampilkan di monitor. Sekarang Anda dapat mencoba menyalakan dan mematikan LED dengan menekan sebuah tombol.
//deteksi penekanan tombol dengan output LED int buttonPin = 7; int pin led = 8; void setup())( pinMode(buttonPin, INPUT);//kali ini kita akan menyetel pin tombol sebagai INPUT pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin )= =TINGGI)( digitalWrite(ledPin,HIGH); Serial.println("ditekan"); ) else ( digitalWrite(ledPin,LOW); Serial.println("tidak ditekan"); ) )

Masukan analog.

analogBaca memungkinkan Anda membaca data dari salah satu pin analog Arduino dan menampilkan nilai dalam rentang dari 0 (0V) hingga 1023 (5V). Jika tegangan pada input analog adalah 2.5V, maka akan tercetak 2.5 / 5 * 1023 = 512
analogBaca hanya memiliki satu argumen - Ini adalah nomor input analog (A0-A5). Sketsa berikut menunjukkan kode pembacaan tegangan dari potensiometer. Untuk melakukan ini, sambungkan resistor variabel, terminal luar ke pin 5V dan GND, dan terminal tengah ke input A0.

Jalankan kode berikut dan lihat di monitor serial bagaimana nilainya berubah tergantung pada putaran kenop resistor.
//input analog int potPin = A0;//pin tengah potensiometer terhubung ke pin ini void setup())( //pin analog disertakan sebagai input secara default, jadi inisialisasi tidak diperlukan Serial.begin(9600 ); ) void loop())( int potVal = analogRead(potPin);//potVal adalah angka antara 0 dan 1023 Serial.println(potVal)
Sketsa berikut menggabungkan sketsa klik tombol dan sketsa kontrol kecerahan LED. LED akan menyala dari tombol, dan kecerahannya akan dikontrol oleh potensiometer.
//deteksi penekanan tombol dengan output LED dan intensitas variabel int buttonPin = 7; int pin led = 9; int potPin = A0; void setup())( pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); ) void loop())( if (digitalRead(buttonPin)==HIGH)(//jika tombol ditekan int analogVal = analogRead(potPin); int scaledVal = map(analogVal, 0, 1023, 0, 255); analogWrite(ledPin, scaledVal);//nyalakan led dengan intensitas yang diatur oleh pot Serial.println("ditekan"); ( digitalWrite(ledPin, LOW);//matikan jika tombol tidak ditekan Serial.println("unpressed"); ) )

Selamat siang, Habr. Saya meluncurkan serangkaian artikel yang akan membantu Anda mengenal Arduino. Namun bukan berarti jika Anda bukan orang baru dalam bisnis ini, Anda tidak akan menemukan sesuatu yang menarik untuk diri Anda sendiri.

Perkenalan

Merupakan ide bagus untuk memulai dengan mengenal Arduino. Arduino – perangkat keras dan perangkat lunak untuk membangun sistem otomasi dan robotika. Keuntungan utamanya adalah platform ini ditujukan untuk pengguna non-profesional. Artinya, siapa pun dapat membuat robotnya sendiri, terlepas dari pengetahuan pemrograman dan keterampilannya.

Awal

Pembuatan proyek di Arduino terdiri dari 3 tahap utama: penulisan kode, pembuatan prototipe (breadboarding) dan firmware. Untuk menulis kode dan kemudian mem-flash papan, kita memerlukan lingkungan pengembangan. Sebenarnya ada banyak sekali, tapi kami akan memprogramnya di lingkungan aslinya - Arduino IDE. Kami akan menulis kodenya sendiri dalam C++, diadaptasi untuk Arduino. Anda dapat mengunduhnya di situs resminya. Sketsa adalah program yang ditulis di Arduino. Mari kita lihat struktur kodenya:


main())( batal pengaturan())( ) batal loop())( ) )

Penting untuk dicatat bahwa prosesor Arduino menciptakan fungsi main(), yang diperlukan dalam C++. Dan hasil yang dilihat programmer adalah:


batalkan pengaturan() ( ) batalkan putaran() ( )

Mari kita lihat dua fungsi yang diperlukan. Fungsi setup() dipanggil hanya sekali ketika mikrokontroler dijalankan. Dialah yang mengatur semua pengaturan dasar. Fungsi loop() bersifat siklik. Ini dipanggil dalam loop tanpa akhir sepanjang waktu pengoperasian mikrokontroler.

Program pertama

Untuk lebih memahami prinsip pengoperasian platform, mari kita tulis program pertama. Kami akan menjalankan program paling sederhana ini (Blink) dalam dua versi. Satu-satunya perbedaan di antara mereka adalah perakitannya.


int Led = 13; // mendeklarasikan variabel Led pada pin 13 (output) void setup() ( pinMode(Led, OUTPUT); // mendefinisikan variabel ) void loop() ( digitalWrite(Led, HIGH); // memberikan tegangan ke pin 13 delay (1000 ); // tunggu 1 detik digitalWrite(Led, LOW); // jangan berikan tegangan ke pin 13 penundaan(1000);

Prinsip pengoperasian program ini cukup sederhana: LED menyala selama 1 detik dan padam selama 1 detik. Untuk opsi pertama, kita tidak perlu menyusun layout. Karena platform Arduino memiliki LED bawaan yang terhubung ke pin 13.

Firmware Arduino

Untuk mengunggah sketsa ke Arduino, pertama-tama kita perlu menyimpannya. Selanjutnya, untuk menghindari masalah saat memuat, Anda perlu memeriksa pengaturan programmer. Untuk melakukan ini, pilih tab “Alat” di panel atas. Di bagian “Pembayaran”, pilih pembayaran Anda. Bisa Arduino Uno, Arduino Nano, Arduino Mega, Arduino Leonardo atau lainnya. Juga di bagian “Port” Anda perlu memilih port koneksi Anda (port tempat Anda menghubungkan platform Anda). Setelah langkah-langkah ini, Anda dapat mengunggah sketsa tersebut. Untuk melakukan ini, klik panah atau pilih “Unduh” di tab “Sketsa” (Anda juga dapat menggunakan pintasan keyboard “Ctrl + U”). Firmware papan telah berhasil diselesaikan.

Pembuatan prototipe/tata letak

Untuk merakit papan tempat memotong roti, kita memerlukan elemen-elemen berikut: LED, resistor, kabel (jumper), papan tempat memotong roti. Agar tidak membakar apa pun, dan agar semuanya berfungsi dengan sukses, Anda perlu menangani LED. Ia memiliki dua "kaki". Pendek adalah nilai minus, panjang adalah nilai tambah. Kami akan menghubungkan ground (GND) dan resistor ke yang pendek (untuk mengurangi arus yang disuplai ke LED agar tidak membakarnya), dan kami akan mensuplai daya ke yang panjang (hubungkan ke pin 13). Setelah terhubung, unggah sketsa ke papan jika Anda belum pernah melakukannya. Kodenya tetap sama.


Ini adalah akhir dari bagian pertama. Terima kasih atas perhatian Anda.

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat