Perubahan halus dalam kecerahan LED Arduino. Mengontrol kecerahan LED eksternal menggunakan resistor. Apa yang Anda perlukan untuk proyek tersebut

Dalam percobaan ini, kami menambahkan sebagian kecerahan pada LED dengan satu tombol dan menguranginya dengan tombol lainnya.

DAFTAR BAGIAN UNTUK EKSPERIMEN

- 1 papan Arduino Uno;

- 1 papan tempat memotong roti tanpa solder;

- 2 tombol jam;

- 1 resistor dengan nilai nominal 220 Ohm;

- 1 LED;

- 7 kabel male-male.

DIAGRAM RANGKAIAN

DIAGRAM DI PAPAN ROTI

HARAP DICATAT

  • Jika Anda mengerjakan ulang rangkaian dari percobaan sebelumnya, perhatikan bahwa kali ini kita perlu menghubungkan LED ke port yang mendukung PWM.

SKETSA

unduh sketsa untuk Arduino IDE
#define PLUS_BUTTON_PIN 2 #define MINUS_BUTTON_PIN 3 #define LED_PIN 9 int kecerahan = 100; boolean plusUp = benar; boolean minusUp = benar; void setup() ( pinMode(LED_PIN, OUTPUT); pinMode(PLUS_BUTTON_PIN, INPUT_PULLUP); pinMode(MINUS_BUTTON_PIN, INPUT_PULLUP); ) void loop() ( analogWrite(LED_PIN, kecerahan); // merespons klik menggunakan fungsi yang kita tulis plusUp = handleClick(PLUS_BUTTON_PIN, plusUp, +35); minusUp = handleClick(MINUS_BUTTON_PIN, minusUp, -35); // Fungsi sendiri dengan 3 parameter: nomor pin dengan tombol // (buttonPin), keadaan sebelum diperiksa (wasUp) dan gradasi // kecerahan saat Anda mengklik tombol (delta). Fungsi ini mengembalikan // (Bahasa Inggris return) keadaan tombol yang baru dan terkini boolean handleClick(int buttonPin, boolean wasUp, int delta) ( boolean isUp = digitalRead(buttonPin); if (wasUp && !isUp) ( delay(10) ; isUp = digitalRead(buttonPin); // jika ada klik, ubah kecerahan dari 0 menjadi 255 if (!isUp) kecerahan = constrain(brightness + delta, 0, 255 ) kembalikan isUp; kode penelepon)

PENJELASAN KODE

  • Kita tidak hanya dapat menggunakan fungsi bawaan, tetapi juga membuatnya sendiri. Hal ini dibenarkan ketika kita perlu mengulangi tindakan yang sama di tempat berbeda dalam kode atau, misalnya, kita perlu melakukan tindakan yang sama pada data yang berbeda, seperti dalam kasus ini: memproses sinyal dari port digital 2 dan 3.
  • Anda dapat menentukan fungsi Anda sendiri di mana saja dalam kode di luar kode fungsi lainnya. Dalam contoh kita, kita mendefinisikan suatu fungsi setelahnya lingkaran .
  • Untuk mendefinisikan fungsi kita sendiri, kita perlu:
    • Deklarasikan tipe data apa yang akan dikembalikan. Dalam kasus kami, memang demikian boolean. Jika fungsi hanya melakukan beberapa tindakan dan tidak mengembalikan nilai apa pun, gunakan kata kunci ruang kosong
    • Tetapkan fungsi tersebut dengan nama - pengidentifikasi. Aturan yang sama berlaku di sini seperti saat memberi nama variabel dan konstanta. Fungsi diberi nama dengan gaya yang sama seperti Variabel .
    • Dalam tanda kurung, cantumkan parameter yang diteruskan ke fungsi, yang menunjukkan jenis masing-masing parameter. Ini adalah deklarasi variabel yang terlihat di dalam fungsi yang baru dibuat, dan hanya di dalamnya. Misalnya saja pada percobaan kali ini kita mencoba mengakses sudah bangun atau sudah habis dari lingkaran() Kami akan menerima pesan kesalahan dari kompiler. Begitu pula dengan variabel yang dideklarasikan di lingkaran, tidak terlihat oleh fungsi lain, tetapi nilainya dapat diteruskan sebagai parameter.
    • Di antara sepasang kurung kurawal, tulis kode yang dieksekusi oleh fungsi tersebut
    • Jika fungsi harus mengembalikan suatu nilai, gunakan kata kunci kembali tentukan nilai apa yang akan dikembalikan. Nilai ini harus dari tipe yang kami deklarasikan
  • Yang disebut variabel global, yaitu. Variabel yang dapat diakses dari fungsi apa pun biasanya dideklarasikan di awal program. Dalam kasus kami, ini adalah kecerahan .
  • Di dalam fungsi yang kami buat menanganiKlik Hal yang sama terjadi seperti pada percobaan.
  • Karena dengan langkah peningkatan kecerahan 35, setelah tidak lebih dari delapan klik berturut-turut pada salah satu tombol, nilai ekspresi kecerahan + delta akan keluar dari interval . Menggunakan fungsi memaksa kami membatasi nilai yang diperbolehkan untuk variabel kecerahan batas interval yang ditentukan.
  • Dalam ekspresi plusUp = handleClick(PLUS_BUTTON_ PIN , plusUp, +35) kita mengakses variabel tersebut plusUp dua kali. Karena = menempatkan nilai operan kanan ke operan kiri, terlebih dahulu menghitung apa yang akan dikembalikan menanganiKlik. Jadi saat kita memberikannya plusUp sebagai parameter, ia masih memiliki nilai lama yang dihitung pada panggilan terakhir menanganiKlik .
  • Di dalam menanganiKlik kami menghitung nilai kecerahan LED baru dan menuliskannya ke variabel global kecerahan, yang pada setiap iterasi lingkaran baru saja diteruskan ke analogWrite .

PERTANYAAN UNTUK MENGUJI DIRI SENDIRI

  1. Apa arti kata kuncinya? ruang kosong ?
  2. Bagaimana suatu program berperilaku ketika satu variabel disebutkan dari sisi yang berbeda dari operator penugasan = ?

TUGAS UNTUK SOLUSI INDEPENDEN

  1. Ubah kode sehingga langkah perubahan kecerahan disesuaikan di satu tempat.
  2. Buat fungsi lain dan kerjakan ulang kodenya sehingga satu fungsi bertanggung jawab untuk melacak penekanan tombol, dan fungsi lainnya bertanggung jawab untuk menghitung kecerahan LED dan mengembalikannya ke analogWrite .

Bagaimana program dilahirkan

Ini akan menjadi artikel yang sedikit tidak biasa, di dalamnya saya akan mencoba tidak hanya menunjukkan kode siap pakai yang melakukan sesuatu, tetapi saya akan menunjukkan bagaimana perangkat dan firmware untuk itu lahir. Kita akan melihat logika program dan bagaimana membangun logika ini.

Hari ini kita akan menyelesaikan masalah berikut: ada 2 LED, mereka harus terhubung ke Arduino dan kemampuan untuk mengatur kecerahan pencahayaannya harus diwujudkan.

Mari kita mulai!

Pertama-tama, kita perlu memikirkan seperti apa tampilan perangkat kita dan apa yang kita perlukan untuk mengimplementasikannya. Kita memerlukan sesuatu untuk menyesuaikan kecerahan LED dan melihat dalam mode apa LED sedang beroperasi perisai yang kita bahas di artikel terakhir sangat bagus.

Sekarang kita hanya perlu menghubungkan LED, yang disebut Bradboard sangat bagus untuk ini, itu adalah benda plastik (saya tidak tahu harus menyebutnya apa lagi) di mana Anda dapat menghubungkan kabel dari Arduino dan komponen elektronik lainnya tanpa menyolder, yang sangat nyaman ketika Anda tidak tahu persis bagaimana jadinya. Perangkat atau sirkuit yang sudah jadi hanya perlu beberapa peluncuran agar terlihat seperti itu. Cina memukau sejumlah besar varietasnya, saya pribadi menggunakan yang ini:

Untuk memudahkan memahami cara kerja di dalamnya, saya akan melampirkan diagram koneksi internal:

Menghubungkan LED keArduino

Sekarang banyak yang akan berkata: apa susahnya menyambungkan LED, itu bola lampu! Dan mereka salah, LED bukanlah bola lampu sederhana, melainkan perangkat penerangan semikonduktor. Yang tidak ditenagai oleh tegangan seperti bola lampu biasa, tetapi oleh arus, dan jika arus melebihi nilai yang diizinkan, LED akan mulai menurun, kecerahannya akan berkurang, yang akan terlihat setelah beberapa waktu, tergantung pada kekuatan dari arusnya tertusuk, atau bahkan terbakar seketika.

Bagaimana cara menghindari kerusakan LED karena arus tinggi? Semuanya sangat sederhana: Anda perlu menggunakan resistor pembatas arus, yang harus dihitung untuk setiap LED tergantung pada karakteristiknya. Menghitung resistor untuk LED adalah topik untuk artikel terpisah, dan hari ini kami tidak akan mempelajari topik ini karena kemungkinan besar Anda tidak mengetahui karakteristik LED yang Anda temukan di suatu tempat. Dalam hal ini, saya menggunakan aturan kecil: jika LED tidak terang, maka saya menyalakannya melalui resistor dengan resistansi 220 hingga 400 ohm, tergantung resistor mana yang ada. Hal utama yang perlu diingat adalah lebih banyak lebih baik daripada lebih sedikit. Dengan resistansi yang lebih besar dari yang dibutuhkan LED, lampu akan menyala lebih redup dari biasanya.

Sekarang kita perlu memutuskan bagaimana mengatur kecerahan LED; untuk ini Anda dapat menggunakan resistor variabel, yang pada prinsipnya akan menghilangkan penyesuaian interaktif dan oleh karena itu kami tidak akan menggunakan metode ini dalam artikel ini. Kami akan menggunakan PWM yang diimplementasikan pada papan Arduino.

Apa itu PWM

PWM (modulasi lebar pulsa) adalah perubahan siklus kerja suatu sinyal selama periode waktu tertentu. Sinyal shim memiliki bentuk sebagai berikut dibandingkan dengan sinyal konstan:

Pada gambar ini, 100% siklus kerja adalah tidak adanya PWM, sinyal tidak berubah, seolah-olah outputnya hanya dihubungkan ke 5 volt.

Siklus kerja 0% adalah tidak adanya sinyal apa pun, seolah-olah kabel tidak terhubung ke mana pun.

Mode pengoperasian lainnya adalah peralihan mode pengoperasian dengan cepat, yang membuat LED berkedip dengan kecepatan tinggi tidak terlihat oleh mata manusia (100 kali per detik), yang menyebabkannya menyala dengan kecerahan yang tidak mencukupi. Arduino, tergantung pada versi chip yang digunakan, memiliki jumlah output PWM yang berbeda-beda, di papan ditandai dengan tanda ~ dari artikel sebelumnya kita mengetahui bahwa ada 6 output 3, 5, 6, 9, 10, dan 11, kita akan menggunakan pin 10 dan 11.

Akhirnya mari kita sambungkan LED ke papan. Kami memasang pelindung LCD kami di Arduino dan merakit sirkuit berikut yang kami memerlukan papan otak, 2 LED, 2 resistor 250 ohm, dan 3-4 kabel jantan-jantan. Diagramnya akan terlihat seperti ini:

Dan jangan lupa bahwa LED mempunyai polaritas, kaki LED yang panjang atau bengkok (seperti pada diagram) merupakan nilai plus yang dihubungkan melalui resistor.

Di sinilah saya mungkin akan menyelesaikan bagian pertama artikel ini; di bagian kedua kita akan membahas logika kerja dan penulisan kode program. Semoga sukses!

Fungsi analogWrite() digunakan untuk melemahkan LED dan menyalakannya secara bertahap.

AnalogWrite menggunakan Modulasi Lebar Pulsa (PWM), yang memungkinkan pin digital menyala/mematikan dengan kecepatan tinggi, menghasilkan efek redaman.

Apa yang Anda perlukan untuk proyek tersebut

  • papan Arduino
  • Papan tempat memotong roti
  • DIPIMPIN
  • resistor 220 ohm

Diagram koneksi LED ke Arduino

Hubungkan anoda (kaki positif yang lebih panjang) dari LED ke pin digital 9 papan Arduino melalui resistor 220 ohm. Hubungkan katoda (kaki yang lebih pendek dan bermuatan negatif) ke ground.

Diagram rangkaian LED yang terhubung ke Arduino


Opsi pelindung dengan LED untuk Arduino

Deskripsi program untuk Arduino

Setelah mendeklarasikan pin 9 sebagai ledPin, isi fungsi setup() tidak perlu diisi.

Fungsi analogWrite() yang akan Anda gunakan dalam loop utama memerlukan dua argumen: satu untuk menentukan pin tujuan penulisan dan satu lagi untuk menampilkan nilai PWM yang sedang ditulis.

Untuk menyalakan dan mematikan LED secara bertahap, tingkatkan nilai PWM secara bertahap dari 0 menjadi 255, lalu kembali ke 0 untuk menyelesaikan siklus. Pada sketsa di bawah, nilai PWM digunakan untuk variabel yang disebut kecerahan. Setiap kali perulangan selesai, nilai variabel akan bertambah.

Jika kecerahan mencapai nilai batasnya (0 atau 255), fadeAmount mengubah nilainya menjadi negatif. Dengan kata lain, jika fadeAmount adalah 5, nilainya berubah menjadi -5. Pada iterasi berikutnya, hal ini menyebabkan variabel kecerahan berubah.

analogWrite() memungkinkan nilai PWM berubah dengan cepat, sehingga penundaan di akhir sketsa mengontrol laju peluruhan. Coba ubah nilai penundaan penundaan dan lihat bagaimana kinerja program.

Sketsa untuk Arduino IDE

Contoh ini menunjukkan cara memberikan redaman pada pin 9 menggunakan fungsi analogWrite().

int dipimpin = 9; // pin yang terhubung dengan LED

int kecerahan = 0; // Kecerahan LED

int jumlah pudar = 5; // berapa banyak untuk meningkatkan kecerahan LED

// fungsi setup berjalan satu kali setelah board di-boot ulang:

// mendeklarasikan pin 9 sebagai keluaran:

pinMode(led, KELUARAN);

// perulangan berulang tanpa henti:

// mengatur kecerahan pin 9:

analogWrite(led, kecerahan);

// ubah kecerahan pada iterasi berikutnya menggunakan loop:

kecerahan = kecerahan + jumlah pudar;

// mengubah nilai atenuasi menjadi nilai serupa dengan tanda berlawanan pada nilai batas:

jika (kecerahan == 0 || kecerahan == 255) (

fadeAmount = -fadeAmount ;

// penundaan 30 untuk melacak efek pudar

Dan mari kita coba menyelesaikan tugas baru. Saya rasa semua orang telah melihat karangan bunga tampilan Tahun Baru di mana LED berkedip dengan lancar. Katakanlah kita ingin melakukan sesuatu seperti ini.
Kita telah melihat fungsi digitalWrite() dan mengetahui bahwa nilai yang ditulisnya dapat terdiri dari dua pilihan - tinggi atau rendah. Dalam hal ini, fungsi analogWrite() akan membantu kita. “Rumusan” fungsinya hanya berbeda pada awalan awal saja, sehingga mudah diingat.

Fungsi analogWrite(), seperti digitalWrite(), berisi dua argumen dalam tanda kurung dan bekerja berdasarkan prinsip verbal yang sama: “di mana, apa”. Perbedaan utamanya adalah kemampuan untuk mencatat rentang nilai yang luas, bukan LOW atau HIGH yang biasa. Ini akan memungkinkan kita untuk mengatur kecerahan LED. Catatan utama yang perlu diingat adalah fitur ini hanya berfungsi pada kontak tertentu. Pin ini ditandai dengan simbol "~". Simbol ini menunjukkan bahwa ini adalah kontak PWM. PWM (modulasi lebar pulsa) terdengar seperti PWM (modulasi lebar pulsa) dalam bahasa Rusia. Prinsip operasinya didasarkan pada perubahan durasi pulsa. Secara grafis dapat digambarkan seperti ini:

Mari kita coba mencari tahu cara kerjanya dengan melihat contoh sederhana. Untuk melakukan ini, Anda perlu menghubungkan LED ke kontak PWM melalui resistor 150 Ohm dan “menghubungkan” program sederhana ke Arduino. Diagram koneksi dan kode sketsa disajikan di bawah ini:


batalkan pengaturan()
{
pinMode(led, KELUARAN);
}

lingkaran kosong()
{
untuk(int saya=0; saya<=255; i++)
{
analogWrite(led,i);
penundaan(10);
}
untuk(int i=255; i>=0; i--)
{
analogWrite(led,i);
penundaan(10);
}
}


Saya pikir kodenya secara umum jelas, tetapi kita perlu sedikit memperhatikan loop for(). Ada yang namanya izin. Karena kita bekerja dengan resolusi 8-bit (ini akan dibahas nanti), nilai minimumnya adalah 0, dan nilai maksimumnya adalah 255. Di akhir setiap iterasi, kami menyetel waktu tunda menjadi 10 ms.

Mari kita kembali ke diagram dari pelajaran sebelumnya dan mencoba membuat karangan bunga serupa menggunakan fungsi analogWrite().


int tombolPin = 2;
int pin = (3,5,6,9,10,11);

boolean lastButton = RENDAH;
boolean currentButton = RENDAH;
boolean aktifkan = salah;

batalkan pengaturan()
{
pinMode(tombolPin, INPUT);
untuk(int mode = 0; mode<= 5; mode++) pinMode(pins, OUTPUT);
}

boolean debounce (boolean terakhir)
{
arus boolean = digitalRead(buttonPin);
jika(terakhir != saat ini)
{
penundaan(5);
saat ini = digitalRead(buttonPin);
}
kembali saat ini;
}

lingkaran kosong()
{
currentButton = debounce(lastButton);
if(lastButton == RENDAH && currentButton == TINGGI)
{
aktifkan = !aktifkan;
}

Jika(aktifkan == benar)
{
untuk (int i=0; i<=5; i++)
{
untuk (int kecerahan = 0; kecerahan<= 255; brightness++)
{
penundaan(1);
}
penundaan(40);
}
untuk (int i=0; i<=5; i++)
{
untuk (int kecerahan = 255; kecerahan >= 0; kecerahan--)
{
analogWrite(pin[i], kecerahan);
penundaan(1);
}
penundaan(40);
}
}

Jika(aktifkan == salah)
{
untuk(int saya = 0; saya<= 5; i++) digitalWrite(pins[i], LOW);
}

Tombol Terakhir = Tombol saat ini;
}


Secara visual sketsanya menjadi lebih rumit. Faktanya, semuanya sederhana di sini dan mari kita cari tahu. Kita perlu mengidentifikasi semua LED yang terhubung, tetapi alih-alih menggunakan LED int biasa, kita menggunakan array, yang setiap elemennya merupakan pin PWM di Arduino. Di bagian isi fungsi void setup(), kami juga bertindak dengan cara yang licik. Kami mempercayakan "daftar" semua kontak ke loop for(), dengan setiap iterasi yang kontak terkait dikonfigurasi pada OUTPUT. Mari beralih ke fungsi void loop(). Fungsi debounce() dan kondisi awal if() tetap tidak berubah. Kami masih memeriksa level dua variabel: nilai sebelumnya (awalnya LOW) dan status tombol saat ini. Ketika kondisi ini terpenuhi, nilai variabel aktifkan dibalik. Dengan mengingat hal ini, kami telah menambahkan dua kondisi if() yang lebih sederhana. Jika aktifkan = benar, maka karangan bunga dihidupkan, kelancaran “aliran” yang dikendalikan oleh loop for(). Jika aktifkan = salah, maka semua LED mati. Di akhir kondisi, variabel lastButton mengambil status tombol saat ini.
Saat menguji program kami, kami melihat bahwa semuanya tidak berjalan sesuai harapan. Ingat, di pelajaran terakhir kita membuat perubahan bahwa jika waktu tundanya besar, tombol akan aktif setelah habis masa berlakunya? Pada contoh sebelumnya, saat karangan bunga dihidupkan, total penundaan di badan fungsi void loop() adalah 85ms. Hal ini memberi kami kesempatan untuk “sampai di sana” dalam jangka waktu tertentu. Dalam sketsa ini, dalam kondisi yang sama, penundaannya berbeda beberapa kali. Mungkin, jika Anda ingin mematikan karangan bunga, kata “interupsi” muncul dengan sendirinya. Ini akan menjadi solusi untuk masalah ini!

Saya harap artikel ini bermanfaat bagi Anda. Dalam tutorial selanjutnya kita akan melihat interupsi di Arduino dan mencapai hasil yang diinginkan.

Sekarang mari kita lihat LED multiwarna, yang sering disingkat: LED RGB. RGB adalah singkatan dari: Merah - merah, Hijau - hijau, Biru - biru. Artinya, tiga LED terpisah ditempatkan di dalam perangkat ini. Tergantung pada jenisnya, LED RGB mungkin memiliki katoda umum atau anoda umum.

1. Mencampur warna

Mengapa LED RGB lebih baik daripada tiga LED konvensional? Ini semua tentang kemampuan penglihatan kita untuk mencampurkan cahaya dari berbagai sumber yang ditempatkan berdekatan satu sama lain. Misalnya, jika kita menempatkan LED biru dan merah bersebelahan, maka pada jarak beberapa meter cahayanya akan menyatu dan mata akan melihat satu titik ungu. Dan jika kita juga menambahkan warna hijau, titik tersebut akan tampak putih bagi kita. Beginilah cara kerja monitor komputer, televisi, dan layar luar ruangan. Matriks TV terdiri dari titik-titik individual dengan warna berbeda. Jika Anda mengambil kaca pembesar dan melihatnya pada monitor yang menyala, Anda dapat dengan mudah melihat titik-titik ini. Namun pada layar luar ruangan, titik-titik tersebut tidak ditempatkan terlalu padat, sehingga dapat dibedakan dengan mata telanjang. Namun dari jarak beberapa puluh meter titik-titik tersebut tidak dapat dibedakan. Ternyata semakin dekat titik-titik warna-warni satu sama lain, semakin sedikit jarak yang dibutuhkan mata untuk mencampurkan warna-warna tersebut. Oleh karena itu kesimpulannya: tidak seperti tiga LED terpisah, pencampuran warna LED RGB sudah terlihat pada jarak 30-70 cm, kinerja LED RGB dengan lensa matte bahkan lebih baik.

2. Menghubungkan LED RGB ke Arduino

Karena LED multiwarna terdiri dari tiga LED biasa, kami akan menghubungkannya secara terpisah. Setiap LED terhubung ke pinnya sendiri dan memiliki resistor tersendiri. Dalam tutorial ini kita menggunakan LED RGB dengan katoda umum, jadi hanya akan ada satu kabel ke ground. Diagram skematik
Penampilan tata letak

3. Program untuk mengendalikan LED RGB

Mari kita buat program sederhana yang akan menerangi ketiga warna tersebut secara bergantian.<3; i++) pinMode(rgbPins[i], OUTPUT); } void loop() { digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); digitalWrite(rgbPins, LOW); digitalWrite(rgbPins, HIGH); delay(500); }

const byte rPin = 3; konstan byte gPin = 5; const byte bPin = 6; void setup() ( pinMode(rPin, OUTPUT); pinMode(gPin, OUTPUT); pinMode(bPin, OUTPUT); ) void loop() ( // matikan biru, nyalakan merah digitalWrite(bPin, LOW); digitalWrite( rPin, HIGH); penundaan(500); // matikan merah, nyalakan digitalWrite(rPin, LOW); digitalWrite(gPin, HIGH); // matikan hijau, nyalakan digitalWrite(gPin, bPin , HIGH); delay(500); Muat program ke Arduino dan amati hasilnya. Browser Anda tidak mendukung tag video. Mari kita optimalkan programnya sedikit: alih-alih variabel rPin, gPin dan bPin, kita akan menggunakan array. Ini akan membantu kami dalam tugas selanjutnya.

const byte rgbPins = (3,5,6); batal pengaturan() ( untuk(bita i=0; i
  • 4. Tujuh warna pelangi
  • Sekarang mari kita coba menyalakan dua warna sekaligus. Mari kita program urutan warna berikut:
  • merah
  • hijau + biru = biru muda
  • biru
  • biru + merah = ungu
Kami menghilangkan warna oranye untuk kesederhanaan. Jadi ternyata ada enam warna pelangi 🙂 const byte rgbPins = (3,5,6); const byte pelangi = ( (1,0,0), // merah (1,1,0), // kuning (0,1,0), // hijau (0,1,1), // biru ( 0,0,1), // biru (1,0,1), // ungu ); batal pengaturan() ( untuk(bita i=0; i<3; i++) pinMode(rgbPins[i], OUTPUT); } void loop() { // перебираем все шесть цветов for(int i=0; i<6; i++){ // перебираем три компоненты каждого из шести цветов for(int k=0; k<3; k++){ digitalWrite(rgbPins[k], rainbow[i][k]); } delay(1000); } } В результате работы программы получается: Your browser does not support the video tag.

5. Perubahan warna halus

Bukan tanpa alasan kami menghubungkan LED RGB ke pin 3, 5 dan 6. Seperti yang Anda ketahui, pin ini memungkinkan Anda menghasilkan sinyal PWM dengan siklus kerja yang berbeda. Dengan kata lain, kita tidak bisa hanya menyalakan atau mematikan LED, tetapi mengontrol level tegangan di dalamnya. Ini dilakukan dengan menggunakan fungsi tersebut analogWrite. Mari kita pastikan bahwa LED kita akan bertransisi di antara warna pelangi tidak secara tiba-tiba, tetapi dengan lancar.<3; i++){ pinMode(rgbPins[i], OUTPUT); } // начальное состояние - горит красный цвет analogWrite(rgbPins, 255); analogWrite(rgbPins, 0); analogWrite(rgbPins, 0); } void loop() { // гасим красный, параллельно разжигаем зеленый for(int i=255; i>const byte rgbPins = (3,5,6); int redup = 1; batal pengaturan() ( untuk(bita i=0; i

=0; i--)( analogWrite(rgbPins, i/dim); analogWrite(rgbPins, (255-i)/dim); delay(10); ) // matikan hijau, nyalakan biru secara paralel for(int i=255 ; i> =0; i--)( analogWrite(rgbPins, i/dim); analogWrite(rgbPins, (255-i)/dim); delay(10); ) // matikan biru, nyalakan merah secara paralel for(int i=255 ; i>=0; i--)( analogWrite(rgbPins, i/dim); analogWrite(rgbPins, (255-i)/dim); delay(10); ) ) Variabel redup menentukan kecerahan cahayanya. Pada redup = 1 kita memiliki kecerahan maksimum. Muat program ke Arduino. Browser Anda tidak mendukung tag video.

  1. Pencarian
  2. Indikator suhu. Mari tambahkan termistor ke rangkaian dan sambungkan ke input analog. LED akan berubah warnanya tergantung pada suhu termistor. Semakin rendah suhunya, warnanya semakin biru, dan semakin tinggi suhunya, semakin merah.
  • Lampu RGB dengan pengatur. Mari tambahkan tiga resistor variabel ke rangkaian dan sambungkan ke input analog. Program harus terus membaca nilai resistor dan mengubah warna komponen LED RGB yang sesuai.

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