Ini adalah kelanjutan dari artikel sebelum nya dengan topik yang sama yaitu menyalakan lampu dengan gerakan tangan. Kalau kamu belum sempat belajar bagian pertama, kamu bisa masuk ke link berikut :
Link Part 1
Dalam part 2 ini kita akan belajar bagaimana rangkaian sebelum nya dan dengan program sebelum nya dengan sedikit modifikasi dapat kita gunakan untuk menyalakan sebuah lampu LED hanya dengan gerakan tangan.
Yang perlu kalian tambahkan disini adalah LED dan juga resistor sebagai pembatas arus. Jumlah LED yang bisa kalian pasang tergantung dari keinginan kalian, tapi karena disini saya akan mengendalikan 2 arah gerakan tangan maka saya hanya akan memasang 2 buah LED saja untuk ujicoba.
Nilai resistor yang digunakan pada LED bisa menggunakan 560 Ohm sampai 1k Ohm.
Untuk dapat merangkai arduino dan juga led nya kalian memerlukan sebuah breadboard atau bisa juga menggunakan protoshield seperti yang saya gunakan pada video di artikel ini.
Untuk coding yang perlu kita tambahkan pada list program sebelum nya adalah coding untuk menyalakan dan mematikan LED yang sudah kita pasang. Coding ini serupa dengan sample coding yang ada pada example code software arduino IDE itu sendiri.
Example code untuk program LED blink atau LED berkedip
int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Pada coding example diatas, baris coding yang berperan untuk menyalakan dan mematikan LED adalah baris coding yang mengandung kata digitalWrite.
Karena baris coding tersebut memiliki arti untuk menuliskan atau memberikan signal digital baik itu menyala atu didefinisikan dengan HIGH atau padam yang didefinisikan dengan signal LOW.
Lalu dimanakah akan kita letakkan perintah untuk menyalakan dan mematikan tersebut?
Tentunya sebelum meletakkan coding tersebut, pertama kita perlu menentukan pin LED yang akan kita pakai. Seperti pada example coding diatas yaitu int led =13; dengan disertai coding pinMode(led,OUTPUT) pada bagian void setup() itu artinya pin yang digunakan untuk mengubungkan led ada pada pin digital 13 arduino dan pin tersebut digunakan sebagai OUTPUT atau pin keluaran.
[ads1]
Setelah kita tentukan pin yang kita gunakan maka saat nya untuk menuliskan coding menyalakan dan mematikan pin led tersebut pada bagian coding yang akan mencetak karakter RIGHT, LEFT, UP dan DOWN tergantung dari gerakan yang akan kalian inginkan untuk menyalakan LED tersebut.
Berikut ini adalah list program lengkap nya dan kalian bisa langsung terapkan di arduino kalian.
[sociallocker id=2480]
/************************************************** *! * @file 3D_GestureTest.ino * @brief * this procedure to achieve 3D gesture recognition can be achieved in 3-dimensional * space,up, down, left,right,Counterclockwise circle recognition and Clockwise circle recognition * @n [Get the module here](https://www.dfrobot.com/wiki/index.php?title=3D_Gesture_Sensor_mini_SKU:SEN0202) * @n [Connection and Diagram](https://www.dfrobot.com/wiki/index.php?title=3D_Gesture_Sensor_mini_SKU:SEN0202) * * @copyright [DFRobot](http://www.dfrobot.com), 2016 * @copyright GNU Lesser General Public License * * @author [Carl](lei.wu@dfrobot.com) * @version V1.0 * @date 2016-09-9 Hardware Connections: Arduino Pin 3D Gesture Sensor-mini Board Function GND GND Ground 3.3V-5V VCC Power A5 SCL I2C Clock A4 SDA I2C Data D7 D Digital port ***************************************************/ #include <DFRobot_Gesture.h> #include <Wire.h> int testPin= 7; unsigned char cmd; int led=8; int led2=9; DFRobot_Gesture myGesture; void setup() { pinMode(led,OUTPUT); pinMode(led2,OUTPUT); Wire.begin(); // join i2c bus (address optional for master) Serial.begin(9600); // start serial for output pinMode(testPin, INPUT); Serial.write("3D Gesture sensor is now running....\r\n"); } void loop() { if(digitalRead(testPin)==0) { myGesture.I2C1_MasterRead(md.buf,26,0x42); //The address is:0x42 cmd = myGesture.mgcProcMsg(); //process the message if(cmd != GI_NOGESTURE ) { switch(cmd) { case GI_FLICK_R: Serial.println("RIGHT"); digitalWrite(led2,HIGH); break; case GI_FLICK_L: Serial.println("LEFT"); digitalWrite(led2,LOW); break; case GI_FLICK_D: Serial.println("DOWN"); digitalWrite(led,LOW); break; case GI_FLICK_U: Serial.println("UP"); digitalWrite(led,HIGH); break; case GI_AIRWHEEL_CW://Clockwise in circles Serial.println("CW"); break; case GI_AIRWHEEL_CCW://Counterclockwise circles Serial.println("CCW"); break; default: break; } } } else {}; }
[/sociallocker]