Advertisement
Al_Ninyo

IRremote_ledcube3x

Jan 11th, 2015
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.89 KB | None | 0 0
  1. #include <IRremote.h>
  2.  
  3. int RECV_PIN = 4;
  4. IRrecv irrecv(RECV_PIN);
  5. decode_results results;
  6.  
  7. // Initalize our LED columns (positive)
  8. int LEDPin[] = {5,8,11,6,9,12,7,10,13};
  9. // Initalize the LED layers (ground)
  10. int LayerPin[] = {A3,A4,A5};
  11. int count = 0;
  12. int pin = 0;
  13. int layer = 0;
  14. boolean PinState = 0;
  15.  
  16. int LPin = 0;
  17.  
  18. void LayersOff() { // функция для выключения всех слоёв
  19.   for(int layer = 0; layer < 3; layer++){
  20.     digitalWrite(LayerPin[layer], LOW);
  21.   }
  22. }
  23.  
  24. void LayersOn() { // функция для включения всех слоёв
  25.   for(int layer = 0; layer < 3; layer++){
  26.     digitalWrite(LayerPin[layer], HIGH);
  27.   }
  28. }
  29.  
  30. void PinOnOff() {
  31.     PinState = !PinState;
  32.     digitalWrite(LEDPin[pin],PinState);
  33. }
  34.  
  35. void LayerUP(int layer) { // включаем на 1 слой выше
  36.     for (LPin = 0; LPin < layer; LPin++){
  37.     digitalWrite(LayerPin[LPin],HIGH);
  38.     }
  39. }
  40.  
  41. void setup() {
  42. //  pinMode(ButPin, INPUT);    // Задаем как вход
  43.   Serial.begin(9600);
  44. //  pinMode(IRpin, INPUT);
  45.   irrecv.enableIRIn(); // Start the receiver
  46.  
  47.   // Set up LED columns as output
  48.   for(int pin = 0; pin < 10 ; pin++ ){
  49.     pinMode(LEDPin[pin],OUTPUT);
  50.     digitalWrite(LEDPin[pin],LOW);
  51.   }
  52.   // Set up LED Layers as output
  53.   for(int layer = 0; layer < 3; layer++){
  54.     pinMode(LayerPin[layer], OUTPUT);
  55.   }
  56.   LayersOff();
  57.  
  58. }
  59.  
  60. void loop() {
  61.   if (irrecv.decode(&results)) {
  62.     Serial.println(results.value);  
  63.     switch (results.value)  {
  64.       case 0xFF6897: // button 0
  65.         Serial.println("pin 0");
  66.         pin = 0;
  67.         PinOnOff();
  68.         break;
  69.       case 0xFF30CF: // button 1
  70.         Serial.println("pin 1");
  71.         pin = 1;
  72.         PinOnOff();
  73.         break;
  74.       case 0xFF18E7: // button 2
  75.         Serial.println("pin 2");
  76.         pin = 2;
  77.         PinOnOff();
  78.         break;
  79.       case 0xFF7A85: // button 3
  80.         Serial.println("pin 3");
  81.         pin = 3;
  82.         PinOnOff();
  83.         break;
  84.       case 0xFF10EF: // button 4
  85.         Serial.println("pin 4");
  86.         pin = 4;
  87.         PinOnOff();
  88.         break;
  89.       case 0xFF38C7: // button 5
  90.         Serial.println("pin 5");
  91.         pin = 5;
  92.         PinOnOff();
  93.         break;
  94.       case 0xFF5AA5: // button 6
  95.         Serial.println("pin 6");
  96.         pin = 6;
  97.         PinOnOff();
  98.         break;
  99.       case 0xFF42BD: // button 7
  100.         Serial.println("pin 7");
  101.         pin = 7;
  102.         PinOnOff();
  103.         break;
  104.       case 0xFF4AB5: // button 8
  105.         Serial.println("pin 8");
  106.         pin = 8;
  107.         PinOnOff();
  108.         break;
  109.       case 0xFF52AD: // button 9
  110.         Serial.println("All is UP!");
  111.           PinState = !PinState;
  112.           for(int pin = 0; pin < 10 ; pin++ ){
  113.             digitalWrite(LEDPin[pin],PinState);
  114.           }
  115.         break;
  116.       case 0xFFE01F: //vol-
  117.         if (pin < 0) {
  118.           pin = 8;
  119.             int count = 0;
  120.             while (count < 3) {
  121.               PinOnOff();
  122.               delay(50);
  123.               count++;
  124.             }
  125.         } else {
  126.             PinOnOff();
  127.             pin = pin--;
  128.           }
  129.         PinOnOff();
  130.         Serial.print("pin - | ");
  131.         Serial.println(pin);
  132.         break;
  133.       case 0xFFA857: //vol+
  134.         Serial.print("pin + | ");
  135.         Serial.println(pin);
  136.         if (pin > 8) {
  137.           pin = 8;
  138.             int count = 0;
  139.             while (count < 3) {
  140.               PinOnOff();
  141.               delay(50);
  142.               count++;
  143.             }
  144.         } else {
  145.             PinOnOff();
  146.             pin = ++pin;
  147.           }
  148.         PinOnOff();
  149.         break;
  150.       case 0xFFA25D: //CH-
  151.         if (layer < 0) {
  152.           layer = 0;
  153.           LayersOff();
  154.           int count = 0;
  155.             while (count < 3) {
  156.               LayersOn();
  157.               delay(50);
  158.               LayersOff();
  159.               delay(50);
  160.               count++;
  161.             }
  162.         } else {
  163.             digitalWrite(LayerPin[layer],LOW);
  164.             layer = layer--;
  165.         }
  166.         Serial.print("layer - | ");
  167.         Serial.println(layer);
  168.         break;
  169.       case 0xFFE21D: //CH+
  170.         if (layer > 2) {
  171.           layer = 3;
  172.           int count = 0;
  173.             while (count < 3) {
  174.               LayersOff();
  175.               delay(50);
  176.               LayersOn();
  177.               delay(50);
  178.               count++;
  179.             }
  180.         } else {
  181.             layer = layer++;
  182.         }
  183.         LayerUP(layer);
  184.         Serial.print("layer + | ");
  185.         Serial.println(layer);
  186.         break;
  187.       case 0xFF22DD: // PREV
  188.         LayersOff();
  189.           if (layer == 0) {
  190.             layer = 2;
  191.           }
  192.             else {
  193.               layer = layer--;
  194.             }
  195.             digitalWrite(LayerPin[layer],HIGH);
  196.         Serial.print("prev layer | ");
  197.         Serial.println(layer);
  198.         break;
  199.       case 0xFF02FD: // NEXT
  200.         LayersOff();
  201.         if (layer >= 2) {
  202.           layer = 0;
  203.           }
  204.             else {
  205.               layer = layer++;
  206.               }
  207.             digitalWrite(LayerPin[layer],HIGH);
  208.         Serial.print("next layer | ");
  209.         Serial.println(layer);
  210.         break;
  211.       case 0xFF629D: //CH
  212.         Serial.println("Layers Off");
  213.         LayersOff();
  214.         layer = -1;
  215.         break;
  216.       case 0xFFC23D: //PAUSE
  217.         Serial.println("Layers On");
  218.         LayersOn();
  219.         break;
  220.       case 0xFF906F: // EQ
  221.         Serial.print("pin = ");
  222.         Serial.println(pin);
  223.         Serial.print("layer = ");
  224.         Serial.println(layer);
  225.         count = 0;
  226.   while(count < 5){
  227.     for(int layer = 0; layer < 3; layer++){
  228.     digitalWrite(LayerPin[layer],HIGH);
  229.     digitalWrite(LEDPin[4],HIGH);  
  230.       for(pin = 0; pin < 5; pin++ ){
  231.       digitalWrite(LEDPin[(2*pin)],HIGH);
  232.       }
  233.       delay(75);
  234.       for(pin = 0; pin < 5; pin++ ){
  235.       digitalWrite(LEDPin[(2*pin)],LOW);
  236.       }
  237.      
  238.     digitalWrite(LEDPin[4],HIGH);
  239.      
  240.       for(pin = 0; pin < 4; pin++ ){
  241.       digitalWrite(LEDPin[(2*pin+1)],HIGH);
  242.       }
  243.       delay(75);
  244.       for(pin = 0; pin < 4; pin++ ){
  245.       digitalWrite(LEDPin[(2*pin+1)],LOW);
  246.       }
  247.      delay(75);
  248.      digitalWrite(LayerPin[layer],LOW);
  249.     }
  250.    
  251.     digitalWrite(LayerPin[1],HIGH);
  252.  
  253.     digitalWrite(LEDPin[4],HIGH);
  254.      
  255.       for(pin = 0; pin < 5; pin++ ){
  256.       digitalWrite(LEDPin[(2*pin)],HIGH);
  257.       }
  258.       delay(75);
  259.       for(pin = 0; pin < 5; pin++ ){
  260.       digitalWrite(LEDPin[(2*pin)],LOW);
  261.       }
  262.      
  263.     digitalWrite(LEDPin[4],HIGH);
  264.      
  265.       for(pin = 0; pin < 4; pin++ ){
  266.       digitalWrite(LEDPin[(2*pin+1)],HIGH);
  267.       }
  268.       delay(75);
  269.       for(pin = 0; pin < 4; pin++ ){
  270.       digitalWrite(LEDPin[(2*pin+1)],LOW);
  271.       }
  272.      delay(75);
  273.      digitalWrite(LayerPin[1],LOW);
  274.  
  275.     count++;
  276.     }
  277.         break;
  278.      }
  279.     irrecv.resume(); // Receive the next value
  280.   }  
  281. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement