Tutorial ini menunjukkan jumlah maksimal LED yang dapat dikontrol secara langsung menggunakan pin digital Arduino (UNO). Dan apakah semua LED dapat menyala bersamaan?
KEBUTUHAN PERANGKAT
Arduino (uno)
LED (12 buah)
Resistor 220 ohm maks 1 kilo-ohm (12 buah)
kabel jumper (warna-warni)
SIRKUIT
Untuk menghubungkan 1 buah LED ke arduino, silakan lihat tutorial Blinking LED. Silakan duplikat rangkaian LED tsb hingga berjumlah 12 buah rangkaian. Masing2 kaki positif-nya dihubungkan ke pin digital D2 hingga D13. Pin D0 dan D1 tidak dapat digunakan sebagai output dikarenakan sudah memiliki fungsi khusus sebagai RX dan TX.
SKEMATIK
Lihat rangkaian skematik di Blinking LED.
KODE
Setelah membuat rangkaian sirkuitnya:
sambungkan Arduino ke komputer
jalankan Arduino Software (IDE). Jika belum terinstal, silakan didownload disini.
masukkan kode berikut:
//#define _CDEBUG_ // uncomment for DEBUGGING #define LED_NUM 12 int aLedPin[LED_NUM] = {13,12,11,10,9,8,7,6,5,4,3,2}; // PIN D0 & D1 can not be set as OUTPUT because of dedicated function as RX & TX int i = 0, iPos = 0; int iDir = 1; void setup() { // put your setup code here, to run once: Serial.begin(9600); for (i=0; i<LED_NUM; i++) { pinMode(aLedPin[i], OUTPUT); digitalWrite(aLedPin[i], LOW); } } void loop() { // test all LEDs are blinking simulatenously? //LEDAllBlinks(); // uncomment to display blinking 12-LEDs // knight rider led LEDKnightRider(); // uncomment to display Knight Rider LED (using 12 LEDs) } void LEDKnightRider() { #ifdef _CDEBUG_ Serial.println(iPos); #endif digitalWrite(aLedPin[iPos], HIGH); delay(50); digitalWrite(aLedPin[iPos], LOW); iPos = iPos + iDir; if ((iPos == LED_NUM - 1) || (iPos == 0)) { iDir = iDir * -1; } } void LEDAllBlinks() { for (i=0; i<LED_NUM; i++) { digitalWrite(aLedPin[i], HIGH); } delay(1000); for (i=0; i<LED_NUM; i++) { digitalWrite(aLedPin[i], LOW); } delay(1000); }
Mengontrol arduino via handphone (android /iOS) sepertinya sih keren ya. Tapi susah gak sih? Mesti develop aplikasi di android/iOS secara khusus? Cara komunikasinya pake apa? Lama dong?
Pertanyaan-pertanyaan seperti itu pasti terlintas. Tak jarang, keraguan yang akhirnya juga dapat menjadi motif urungnya melanjutkan niatan diatas.
Dengan menggunakan BLYNK yang menyediakan dashboard berisi bermacam-macam widget, hal itu tidak lagi jadi masalah, bahkan tidak sampe 1 menit (seperti iklan video-nya), kita sudah dapat mengontrol Arduino via handphone (android/iOS).
Untuk kali ini, saya akan mencoba mengontrol arduino saya dengan rangkaian yang saya buat di artikel saya sebelumnya.
Install BLYNK di handphone. Download BLYNK (android/iOS). Buat account di BLYNK atau login dengan account facebook.
Setelah berhasil login, buat proyek baru di BLYNK dan tambahkan widget Button dan Value. Silakan tambahkan widget lainnya sesuai kebutuhan. Yang perlu diingat adalah BLYNK free-version menyediakan sejumlah saldo nilai energi, dimana 1 widget seharga nilai energi tertentu. Klo saldo nilai energi ini, habis atau tidak mencukupi, maka kita tidak akan bisa menambahkan widget ke proyek. Jangan lupa mengirimkan AUTH TOKEN (yg ada di kotak merah) ke e-mail anda. AUTH TOKEN ini nantinya diperlukan untuk dimasukkan ke kode program ARDUINO-nya sebagai pengenal proyek ini.
BLYNK: Project Settings
BLYNK: Project view
BLYNK: Widgets
BLYNK: Widget Button Settings
BLYNK: Widget Value Display Settings
BLYNK juga sudah menyediakan in-app purchase untuk tambahan sejumlah nilai energi tertentu dengan harga tertentu.
Download BLYNK library. Saya menggunakan library yang ini.
Ekstrak file .zip dan copy-paste-kan semua folder ke folder {instalasi arduino}/libraries.
Masukkan AUTH TOKEN ke kode arduino (lihat di bagian kode di bawah)
Upload kode ke Arduino
Buka console windows, dan pindah ke folder {instalasi arduino}/libraries/Blynk/scripts
edit file blynk-ser.bat. Ubah nilai serial COM. Sesuaikan dengan nomor port serial Arduino Anda. Untuk kasus saya, COM8 adalah port serial Arduino saya.
Jalankan file blynk-ser.bat
Dan kini, Andapun sudah dapat mengontrol LED di Arduino dan menampilkan jarak yang dideteksi ULTRASONIC SENSOR secara online-realtime.
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor. #define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor. #define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
int distance = 0; SimpleTimer timer; NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "AUTH_TOKEN_PROYEK_ANDA"; void myTimerEvent() { // You can send any value at any time. // Please don't send more that 10 values per second. distance = sonar.ping_cm(); Blynk.virtualWrite(V1, distance); Blynk.virtualWrite(V2, distance); Blynk.virtualWrite(V3, distance); } void setup() { // Debug console DebugSerial.begin(9600); // Blynk will work through Serial Serial.begin(9600); Blynk.begin(auth, Serial); // Setup a function to be called every second timer.setInterval(1000L, myTimerEvent); } void loop() { Blynk.run(); timer.run(); // Initiates SimpleTimer }
TIPS: masukkan AUTH TOKEN proyek Anda menggantikan teks AUTH_TOKEN_PROYEK_ANDA.
Jika Anda pecinta mokit/gunpla maupun figure statue yang memiliki LED, mungkin proyek ini cocok bagi Anda yang menghendaki LED menyala secara otomatis jika ada orang yang mendekati mokit/gunpla maupun figure statue Anda, dan secara otomatis pula LED akan mati untuk periode waktu tertentu (dan tentunya LED akan tetap menyala jika orang tersebut tetap terdeteksi berada di sekitar objek tersebut). Nah, jika Anda menghendaki mekanisme deteksi yang akan digunakan adalah jarak orang dengan objek, maka kita dapat menggunakan sensor jarak berbasis ULTRASONIC.
KEBUTUHAN PERANGKAT
Arduino (uno)
sensor ultrasonic (HC-SR04)
kabel jumper (warna-warni)
mokit/gunpla/figure statue. Dalam tutorial ini, penulis menggunakan figure statue bust ironman yang memiliki LED di MATA dan ARC REACTOR-nya. Figure statue yang digunakan ini sudah memiliki rangkaian internal yang menggunakan tenaga batere yang secara terus-menerus akan menyala jika sudah di-ON-kan. Tapi kalo hanya seperti itu, kurang menarik kan? Selain itu juga tidak hemat energi.
SIRKUIT
TIPS: Untuk menghubungkan titik satu ke titik lainnya yang berjauhan, silakan gunakan kabel jumper dengan warna kesukaanmu. Akan tetapi, sebaiknya gunakan warna tertentu untuk membedakan arus positif dan negatif.
SKEMATIK
KODE
Setelah membuat rangkaian sirkuitnya:
sambungkan Arduino ke komputer
jalankan Arduino Software (IDE). Jika belum terinstal, silakan didownload disini.
masukkan kode berikut:
// --------------------------------------------------------------------------- // LED-ON using Sonar // --------------------------------------------------------------------------- #include <NewPing.h> #define LED_PIN 13 // Arduino pin tied to trigger pin on LED. #define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor. #define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor. #define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm. #define REQUIRE_DISTANCE 20 // // cm - maximal required distance to triger LED #define MAX_INTERVAL_ON 5000 // ms - change this value for LED interval bool bON = false; int distance = 0; unsigned long ulFirstCT = 0; unsigned long ulCT = 0; NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. void setup() { while (!Serial) delay(1); Serial.begin(9600); pinMode(LED_PIN, OUTPUT); DoLED(LOW); } void loop() { // sonar distance = sonar.ping_cm(); //Serial.println("d = " + String(distance)); // uncomment for DEBUGGING if (distance > 0 && distance <= REQUIRE_DISTANCE) { if (!bON) { // light-UP DoLED(HIGH); ulFirstCT = millis(); } bON = true; } else { // not in range bON = false; }