//Ultrasonic sensor pins
#define PIN_TRIG 12
#define PIN_ECHO 11
//Analog Stick pins
#define SW_PIN 2
#define X_PIN A0
#define Y_PIN A1
//IR Sensor pins
#include <IRremote.h>
#define PIN_RECEIVER 6
IRrecv receiver(PIN_RECEIVER);
//led pins
const int led1 = 7;
const int led2 = 5;
const int rgbledr = 13;
const int rgbledg = 10;
const int rgbledb = 9;
void setup() {
//Ultrasonic sensor setup
//Serial.begin(115200);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
//Analog Stick setup
pinMode(SW_PIN, INPUT_PULLUP);
pinMode(X_PIN, INPUT);
pinMode(Y_PIN, INPUT);
Serial.begin(9600);
//IR Sensor setup
receiver.enableIRIn();
//Led setup
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(rgbledr, OUTPUT);
pinMode(rgbledg, OUTPUT);
pinMode(rgbledb, OUTPUT);
}
void loop() {
//Ultrasonic code
//Turns on an led when an object is closer than 100cm to the object
digitalWrite(PIN_TRIG, HIGH);
delay(10);
digitalWrite(PIN_TRIG, LOW);
int distance = pulseIn(PIN_ECHO, HIGH) / 58.4;
if(distance < 100) digitalWrite(led1, HIGH);
else digitalWrite(led1, LOW);
//Analog Stick
if(digitalRead(SW_PIN) == HIGH) digitalWrite(rgbledr, HIGH);
else digitalWrite(rgbledr, LOW);
int x = (analogRead(X_PIN) / 4.1);
analogWrite(rgbledg, x);
int y = (analogRead(Y_PIN) / 4.1);
analogWrite(rgbledb, y);
//IR Sensor
if(receiver.decode()) {
translateIR();
receiver.resume();
}
}
//Method to determine what the led should do when a button is pushed
void translateIR() {
int x;
switch(receiver.decodedIRData.command) {
case 162:
if(analogRead(led2) > 0) analogWrite(led2, 0);
else analogWrite(led2, 255);
break;
case 2:
x = analogRead(led2) + 10;
if(x > 255) {
analogWrite(led2, 255);
break;
}
else analogWrite(led2, x);
break;
case 224:
x = analogRead(led2) - 30;
if( x < 0) {
analogWrite(led2, 0);
break;
}
else analogWrite(led2, x);
break;
case 144:
x = analogRead(led2) + 30;
if( x > 255) {
analogWrite(led2, 255);
break;
}
else analogWrite(led2, x);
break;
case 104:
analogWrite(led2, 0);
break;
case 152:
x = analogRead(led2) - 10;
if( x < 0) {
analogWrite(led2, 0);
break;
}
else analogWrite(led2, x);
break;
case 176:
analogWrite(led2, 255);
break;
case 48:
analogWrite(led2, 28);
break;
case 24:
analogWrite(led2, 56);
break;
case 122:
analogWrite(led2, 84);
break;
case 16:
analogWrite(led2, 112);
break;
case 56:
analogWrite(led2, 140);
break;
case 90:
analogWrite(led2, 168);
break;
case 66:
analogWrite(led2, 196);
break;
case 74:
analogWrite(led2, 224);
break;
case 82:
analogWrite(led2, 252);
break;
}
}