Proyek ini akan memungkinkan Anda memanfaatkan kekuatan gerakan Anda untuk mengontrol LED RGB. Anda akan membutuhkan Sparkfun APDS-9960 dan CATHODE umum, bukan anoda, LED RGB. Pastikan untuk menggunakan papan Arduino 5v dengan resistor 4.7k Ohm, karena sensor ini menggunakan protokol I2C. Kemudian hubungkan seperti dalam skema. Dari sana Anda dapat menambahkan warna khusus dalam kode. Saya telah menempatkan 6 sudah. Kontrol default adalah:geser ke atas untuk menyalakannya, geser ke bawah untuk mematikannya, geser ke kanan untuk maju ke warna berikutnya, dan kiri untuk mundur. Kode ini juga dapat disesuaikan agar sesuai dengan banyak jenis proyek lainnya! Jangan ragu untuk bereksperimen dan membuat proyek yang lebih mengagumkan. Selamat membuat!
Kode
Kode ArduinoC/C++
Salin dan Tempel#include #include // Pin#define APDS9960_INT 2 // Perlu pin interupsi// Constantsint red_pin =A0;int green_pin =A1;int blue_pin =A2;int onOff_flag =0;//Buat array untuk mengulang melaluiint colorNumber =0;// Variabel GlobalSparkFun_APDS9960 apds =SparkFun_APDS9960();int isr_flag =0;void setup() { // Atur pin interupsi sebagai input pinMode(APDS9960_INT, MEMASUKKAN); // Inisialisasi port Serial Serial.begin(9600); Serial.println(); Serial.println(F("--------------------------------")); Serial.println(F("SparkFun APDS-9960 - Tes Gestur")); Serial.println(F("--------------------------------")); // Inisialisasi rutin layanan interupsi attachInterrupt(0, interruptRoutine, FALLING); // Inisialisasi APDS-9960 (konfigurasi I2C dan nilai awal) if ( apds.init() ) { Serial.println(F("APDS-9960 inisialisasi selesai")); } else { Serial.println(F("Ada yang tidak beres selama APDS-9960 init!")); } // Mulai jalankan mesin sensor gerakan APDS-9960 if ( apds.enableGestureSensor(true) ) { Serial.println(F("Sensor gerakan sekarang berjalan")); } else { Serial.println(F("Ada yang salah saat sensor gerakan init!")); } pinMode(A0, OUTPUT); pinMode(A1, OUTPUT); pinMode(A2, OUTPUT); analogWrite(A0, 0); analogWrite(A1, 0); analogWrite(A2, 0);}void loop() { if( isr_flag ==1 ) { detachInterrupt(0); handleGesture(); isr_flag =0; attachInterrupt(0, interruptRoutine, FALLING); } if (onOff_flag ==1){ switch (colorNumber){ case 0:Serial.println("red"); analogWrite(pin_merah, 255); analogWrite(pin_hijau, 0); analogWrite(blue_pin, 0); merusak; kasus 1:Serial.println("biru muda"); analogWrite(pin_merah, 255); analogWrite(pin_hijau, 153); analogWrite(blue_pin, 204); merusak; kasus 2:Serial.println("biru tua"); analogWrite(pin_merah, 100); analogWrite(pin_hijau, 0); analogWrite(blue_pin, 170); merusak; kasus 3:Serial.println("hijau"); analogWrite(pin_merah, 0); analogWrite(pin_hijau, 255); analogWrite(blue_pin, 0); merusak; kasus 4:Serial.println("biru"); analogWrite(pin_merah, 0); analogWrite(pin_hijau, 0); analogWrite(blue_pin, 255); merusak; kasus 5:Serial.println("ungu"); analogWrite(pin_merah, 191); analogWrite(pin_hijau, 0); analogWrite(blue_pin, 255); merusak; }}else if(onOff_flag ==0){ analogWrite(red_pin, 0); analogWrite(pin_hijau, 0); analogWrite(blue_pin, 0);}delay(1000);}void interruptRoutine() { isr_flag =1;}void handleGesture() { if ( apds.isGestureAvailable() ) { switch ( apds.readGesture() ) { case DIR_UP:Serial.println("NAIK"); onOff_flag =1; merusak; kasus DIR_DOWN:Serial.println("BAWAH"); onOff_flag =0; merusak; kasus DIR_LEFT:Serial.println("LEFT"); if(onOff_flag ==1){ if(colorNumber>0){ colorNumber -=1; Serial.println(nomorwarna); } else if(colorNumber <1){ colorNumber =5; Serial.println(nomorwarna); } } merusak; kasus DIR_KANAN:Serial.println("KANAN"); if(onOff_flag ==1){ if(colorNumber <5){ colorNumber +=1; Serial.println(nomorwarna); } else if(colorNumber> 4){ colorNumber =0; Serial.println(nomorwarna); } } merusak; kasus DIR_NEAR:Serial.println("DEKAT"); merusak; kasus DIR_FAR:Serial.println("JAUH"); merusak; bawaan:Serial.println("TIDAK ADA"); } }}
Skema
Hubungkan apa adanya.