Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * by zer044 arduino account holder
- * 13/08/2011
- * adaptions of Ken Sherriff IrLibary Example code.
- * http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
- **/
- //ir reciver bit
- #include <IRremote.h>
- // define codes
- #define OFF 0xFFA25D // ON/OFF button on remote
- #define Button_1 0xFF30CF // 1 on remote
- #define Button_2 0xFF18E7 // 2 on remote
- #define Button_3 0xFF7A85 // 3 on remote
- int RECV_PIN = 11;
- IRrecv irrecv(RECV_PIN);
- decode_results results;
- //led cube bit
- int levelPins[] = {
- 22,23,24};
- int colPins[] = {
- 30,31,32,33,34,35,36,37,38};
- int x=0; // A COUNTER
- int c=0; // JUST ANOTHER COUNTER
- int pressed1=0;
- // check if another is pressed
- void setup () {
- //ir receiver bit
- Serial.begin(9600);
- irrecv.enableIRIn(); // Start the receiver
- //led cube bit
- //set all output
- for (int i=0; i<3; i++) {
- pinMode(levelPins[i], OUTPUT);
- }
- for (int j=0; j<9; j++) {
- pinMode(colPins[j], OUTPUT);
- }
- }
- void loop () {
- //ir receiver bit
- if (irrecv.decode(&results)) {
- switch (results.value) {
- case Button_1:
- Serial.write("Button 1 pressed\n");
- pressed1 = 1;
- break;
- case Button_2:
- Serial.write("Button 2 pressed\n");
- pressed1 = 2;
- break;
- case Button_3:
- Serial.write("Button 3 pressed\n");
- pressed1 = 3;
- break;
- case OFF:
- Serial.write("ON/OFF pressed\n");
- pressed1 = 0;
- allOff();
- break;
- default :
- Serial.println(results.value, HEX);
- }
- irrecv.resume(); // Receive the next value
- }
- // led cube bit
- if (pressed1 == 1) {scrollthroughled ();}
- else if (pressed1 == 2) {scrollupanddown ();}
- else if (pressed1 == 3) {spinthroughlayers ();}
- }
- // all functions start here..
- /**
- * list of current functions
- * scrollthroughled ();
- * scrollupanddown ();
- * spinthroughlayers ();
- **/
- // function turns all leds off
- void allOff () {
- for (int j=0; j<9; j++) {
- digitalWrite(colPins[j], LOW);
- }
- for (int i=0; i<3; i++) {
- digitalWrite(levelPins[i], HIGH);
- }
- }
- //function to turn an LED on.
- int ledOn (int x, int y, int t) {
- digitalWrite(levelPins[x], LOW);
- digitalWrite(colPins[y], HIGH);
- delay(t);
- digitalWrite(colPins[y], LOW);
- digitalWrite(levelPins[x], HIGH);
- }
- void scrollthroughled () {
- for(int i=0; i<3; i++) {
- for(int j=0; j<9; j++) {
- ledOn(i,j,30);
- delay(150);
- }
- }
- }
- void spinthroughlayers () {
- //middle layer
- while(x<30) {
- ledOn(0,3,4);
- ledOn(1,3,4);
- ledOn(2,3,4);
- ledOn(1,4,4);
- ledOn(0,4,4);
- ledOn(2,4,4);
- ledOn(0,5,4);
- ledOn(1,5,4);
- ledOn(2,5,4);
- x++;
- }
- delay(50);
- x=0;
- //second layer
- while(x<30) {
- ledOn(0,6,4);
- ledOn(1,6,4);
- ledOn(2,6,4);
- ledOn(1,4,4);
- ledOn(0,4,4);
- ledOn(2,4,4);
- ledOn(0,2,4);
- ledOn(1,2,4);
- ledOn(2,2,4);
- x++;
- }
- delay(50);
- x=0;
- // third layer
- while(x<30) {
- ledOn(0,7,4);
- ledOn(1,7,4);
- ledOn(2,7,4);
- ledOn(1,4,4);
- ledOn(0,4,4);
- ledOn(2,4,4);
- ledOn(0,1,4);
- ledOn(1,1,4);
- ledOn(2,1,4);
- x++;
- }
- delay(50);
- x=0;
- // forth layer
- while(x<30) {
- ledOn(0,8,4);
- ledOn(1,8,4);
- ledOn(2,8,4);
- ledOn(1,4,4);
- ledOn(0,4,4);
- ledOn(2,4,4);
- ledOn(0,0,4);
- ledOn(1,0,4);
- ledOn(2,0,4);
- x++;
- }
- delay(50);
- x=0;
- }
- void scrollupanddown () {
- for (int d=0; d<3; d++) {
- while(x < 30) {
- ledOn(d,0,4);
- ledOn(d,1,4);
- ledOn(d,2,4);
- ledOn(d,3,4);
- ledOn(d,4,4);
- ledOn(d,5,4);
- ledOn(d,6,4);
- ledOn(d,7,4);
- ledOn(d,8,4);
- x++;
- }
- delay(30);
- x=0;
- }
- for (int d=2; d>-1; d--) {
- while(x < 30) {
- ledOn(d,0,4);
- ledOn(d,1,4);
- ledOn(d,2,4);
- ledOn(d,3,4);
- ledOn(d,4,4);
- ledOn(d,5,4);
- ledOn(d,6,4);
- ledOn(d,7,4);
- ledOn(d,8,4);
- x++;
- }
- x=0;
- delay(30);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement