tommasta

Alt-level Control Rainbowduino Slave *Needs work*

Apr 27th, 2012
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.83 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <Rainbowduino.h>
  3. char bx1 = 0;
  4. char bx2 = 0;
  5. char bx3 = 0;
  6. char bx4 = 0;
  7. char bx5 = 0;
  8. char bx6 = 0;
  9. int rx1 = 0;  //throttle
  10. int rx2 = 0;  //aileron
  11. int rx3 = 0;  //elevation
  12. int rx4 = 0;  //rudder
  13. int rx5 = 0;  //AUX
  14. int rx6 = 0;  //Trainer
  15.  
  16. unsigned char RED[64] = {
  17.   255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,171,154,137,119,102,85,
  18.   68,51,34,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,35,52};
  19.  
  20. unsigned char GREEN[64] = {
  21.   0,17,34,51,68,85,102,119,136,153,170,187,204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,
  22.   255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,221,204,188,170,154,136,120,102,86,68,52,34,18,0,0,0,0};
  23.  
  24. unsigned char BLUE[64] = {
  25.   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,34,52,68,86,102,120,136,154,170,188,
  26.   204,221,238,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255};
  27.  
  28. unsigned char plasma[8][8];
  29.  
  30. void setup()
  31. {
  32.   Rb.init();
  33.   Wire.begin(2);    //Join I2C bus with address #2
  34.   noInterrupts();
  35.   Wire.onReceive(expansionReceive); //Register event
  36.   interrupts();
  37.   Serial.begin(38400);
  38.   for(unsigned char x = 0; x < 8; x++)
  39.   {
  40.     for(unsigned char y = 0; y < 8; y++)
  41.     {
  42.       int color = int(32.0 + (32.0 * sin(x / 4.0)) + 32.0 + (32.0 * sin(y / 4.0))) / 2;
  43.       plasma[x][y] = color;      
  44.     }
  45.   }
  46. }
  47. unsigned char x,y,z,colorshift=0;
  48.  
  49. void loop()
  50. {
  51.   {
  52.     Serial.print(rx1);
  53.     Serial.print("\t");
  54.     Serial.print(rx2);
  55.     Serial.print("\t");
  56.     Serial.print(rx3);
  57.     Serial.print("\t");
  58.     Serial.print(rx4);
  59.     Serial.print("\t");
  60.     Serial.print(rx5);
  61.     Serial.print("\t");
  62.     Serial.print(rx6);
  63.     Serial.println("\t");
  64.   }
  65.  
  66.   //Alternate Command -
  67.   if (rx2 > 150){
  68.     if (rx6 > 150){
  69.       for(z=0; z<64 ;z++)
  70.       {
  71.         for(x=0;x<8;x++)
  72.         {
  73.           for(y=0;y<8;y++)
  74.           {
  75.             //Paint random colors
  76.             //Rb.setPixelZXY(z,x,y,RED[i],GREEN[i],BLUE[i]); //uses R, G and B color bytes
  77.             Rb.setPixelXY(x,y,RED[z],GREEN[z],BLUE[z]); //uses R, G and B color bytes
  78.           }
  79.         }
  80.         if (rx6 <= 150){
  81.           break;
  82.           delay(rx1);
  83.         }
  84.  
  85.         for(z=63; z > 0 ;z--)
  86.         {
  87.           for(x=0;x<8;x++)
  88.           {
  89.             for(y=0;y<8;y++)
  90.             {
  91.               //Paint random colors
  92.               //Rb.setPixelZXY(z,x,y,RED[i],GREEN[i],BLUE[i]); //uses R, G and B color bytes
  93.               Rb.setPixelXY(x,y,RED[z],GREEN[z],BLUE[z]); //uses R, G and B color bytes
  94.             }
  95.           }
  96.           if (rx6 <= 150){
  97.             break;
  98.             delay(rx1);
  99.           }
  100.         }
  101.       }
  102.     }
  103.     else if(rx6 < 150){
  104.       Rb.blankDisplay();
  105.     }
  106.   }
  107.   //Standard Command - Solid White with Brightness Control
  108.   else /*if(rx2 < 150)*/{
  109.  
  110.     if (rx6 > 150){
  111.  
  112.       if (rx1 > 220){
  113.         for(x=0;x<8;x++)
  114.         {
  115.           for(y=0;y<8;y++)
  116.           {
  117.             Rb.setPixelXY(x,y,0x88FFBB);
  118.           }
  119.         }
  120.       }
  121.  
  122.       else if (rx1 > 190){
  123.         for(x=0;x<8;x++)
  124.         {
  125.           for(y=0;y<8;y++)
  126.           {
  127.             Rb.setPixelXY(x,y,0x66DD99);
  128.           }
  129.         }
  130.       }
  131.  
  132.       else if (rx1 > 160){
  133.         for(x=0;x<8;x++)
  134.         {
  135.           for(y=0;y<8;y++)
  136.           {
  137.             Rb.setPixelXY(x,y,0x44AA77);
  138.           }
  139.         }
  140.       }
  141.  
  142.       else if (rx1 > 130){
  143.         for(x=0;x<8;x++)
  144.         {
  145.           for(y=0;y<8;y++)
  146.           {
  147.             Rb.setPixelXY(x,y,0x227755);
  148.           }
  149.         }
  150.       }
  151.  
  152.       else if (rx1 > 100){
  153.         for(x=0;x<8;x++)
  154.         {
  155.           for(y=0;y<8;y++)
  156.           {
  157.             Rb.setPixelXY(x,y,0x115533);
  158.           }
  159.         }
  160.       }
  161.  
  162.       else if (rx1 > 70){    
  163.         for(x=0;x<8;x++)
  164.         {
  165.           for(y=0;y<8;y++)
  166.           {
  167.             Rb.setPixelXY(x,y,0x053311);
  168.           }
  169.         }
  170.       }
  171.  
  172.       else if (rx1 > 40){
  173.         for(x=0;x<8;x++)
  174.         {
  175.           for(y=0;y<8;y++)
  176.           {
  177.             Rb.setPixelXY(x,y,0x020503);
  178.           }
  179.         }
  180.       }
  181.  
  182.       else if (40 > rx1){
  183.         for(x=0;x<8;x++)
  184.         {
  185.           for(y=0;y<8;y++)
  186.           {
  187.             Rb.setPixelXY(x,y,0x010301);
  188.           }
  189.         }
  190.       }  
  191.     }
  192.     else{
  193.       Rb.blankDisplay();
  194.     }
  195.   }
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.   //Twinkling Pastels
  203.   {
  204.     if (rx5 > 150){
  205.       for(x=0;x<8;x++)
  206.       {
  207.         for(y=0;y<8;y++)
  208.         {
  209.           Rb.setPixelXY(x,y,random(0xFF),random(0xFF),random(0xFF)); //uses R, G and B bytes
  210.         }
  211.       }
  212.       delay(rx1 + 62);
  213.     }
  214.   }
  215.  
  216.   //Diagonal Color Fade
  217.   {
  218.     if (rx4 > 150){
  219.       for(x=0;x<8;x++)
  220.       {
  221.         for(y=0;y<8;y++)
  222.         {
  223.           Rb.setPixelXY(x,y,(RED[plasma[x][y] + colorshift]) % 256,(GREEN[plasma[x][y] + colorshift]) % 256,(BLUE[plasma[x][y] + colorshift]) % 256); //uses R, G and B color bytes
  224.         }
  225.       }
  226.       delay(rx1);
  227.       colorshift=  colorshift + 1;
  228.     }
  229.   }
  230.  
  231.   //Back Lines, purple and yella
  232.   {
  233.     while (rx3 > 150){
  234.       Rb.blankDisplay();
  235.       Rb.setPixelXY(0,1,0xBCFF00);
  236.       Rb.setPixelXY(1,1,0xBCFF00);
  237.       Rb.setPixelXY(2,1,0xBCFF00);
  238.       Rb.setPixelXY(3,1,0xBCFF00);
  239.       Rb.setPixelXY(4,6,0x6600FF);
  240.       Rb.setPixelXY(5,6,0x6600FF);
  241.       Rb.setPixelXY(6,6,0x6600FF);
  242.       Rb.setPixelXY(7,6,0x6600FF);
  243.       delay(rx1*2);
  244.       Rb.blankDisplay();
  245.       if (rx3 <= 150){
  246.         break;
  247.       }
  248.       Rb.setPixelXY(0,2,0xBCFF00);
  249.       Rb.setPixelXY(1,2,0xBCFF00);
  250.       Rb.setPixelXY(2,2,0xBCFF00);
  251.       Rb.setPixelXY(3,2,0xBCFF00);
  252.       Rb.setPixelXY(4,5,0x6600FF);
  253.       Rb.setPixelXY(5,5,0x6600FF);
  254.       Rb.setPixelXY(6,5,0x6600FF);
  255.       Rb.setPixelXY(7,5,0x6600FF);
  256.       delay(rx1*2);
  257.       Rb.blankDisplay();
  258.       if (rx3 <= 150){
  259.         break;
  260.       }
  261.       Rb.setPixelXY(0,3,0xBCFF00);
  262.       Rb.setPixelXY(1,3,0xBCFF00);
  263.       Rb.setPixelXY(2,3,0xBCFF00);
  264.       Rb.setPixelXY(3,3,0xBCFF00);
  265.       Rb.setPixelXY(4,4,0x6600FF);
  266.       Rb.setPixelXY(5,4,0x6600FF);
  267.       Rb.setPixelXY(6,4,0x6600FF);
  268.       Rb.setPixelXY(7,4,0x6600FF);
  269.       delay(rx1*2);  
  270.       Rb.blankDisplay();
  271.       if (rx3 <= 150){
  272.         break;
  273.       }
  274.       Rb.setPixelXY(0,4,0xBCFF00);
  275.       Rb.setPixelXY(1,4,0xBCFF00);
  276.       Rb.setPixelXY(2,4,0xBCFF00);
  277.       Rb.setPixelXY(3,4,0xBCFF00);
  278.       Rb.setPixelXY(4,3,0x6600FF);
  279.       Rb.setPixelXY(5,3,0x6600FF);
  280.       Rb.setPixelXY(6,3,0x6600FF);
  281.       Rb.setPixelXY(7,3,0x6600FF);
  282.       delay(rx1*2);  
  283.       Rb.blankDisplay();
  284.       if (rx3 <= 150){
  285.         break;
  286.       }
  287.       Rb.setPixelXY(0,5,0xBCFF00);
  288.       Rb.setPixelXY(1,5,0xBCFF00);
  289.       Rb.setPixelXY(2,5,0xBCFF00);
  290.       Rb.setPixelXY(3,5,0xBCFF00);
  291.       Rb.setPixelXY(4,2,0x6600FF);
  292.       Rb.setPixelXY(5,2,0x6600FF);
  293.       Rb.setPixelXY(6,2,0x6600FF);
  294.       Rb.setPixelXY(7,2,0x6600FF);
  295.       delay(rx1*2);
  296.       Rb.blankDisplay();
  297.       if (rx3 <= 150){
  298.         break;
  299.       }
  300.       Rb.setPixelXY(0,6,0xBCFF00);
  301.       Rb.setPixelXY(1,6,0xBCFF00);
  302.       Rb.setPixelXY(2,6,0xBCFF00);
  303.       Rb.setPixelXY(3,6,0xBCFF00);
  304.       Rb.setPixelXY(4,1,0x6600FF);
  305.       Rb.setPixelXY(5,1,0x6600FF);
  306.       Rb.setPixelXY(6,1,0x6600FF);
  307.       Rb.setPixelXY(7,1,0x6600FF);
  308.       delay(rx1*2);
  309.       Rb.blankDisplay();
  310.       if (rx3 <= 150){
  311.         break;
  312.       }
  313.  
  314.       Rb.setPixelXY(0,5,0xBCFF00);
  315.       Rb.setPixelXY(1,5,0xBCFF00);
  316.       Rb.setPixelXY(2,5,0xBCFF00);
  317.       Rb.setPixelXY(3,5,0xBCFF00);
  318.       Rb.setPixelXY(4,2,0x6600FF);
  319.       Rb.setPixelXY(5,2,0x6600FF);
  320.       Rb.setPixelXY(6,2,0x6600FF);
  321.       Rb.setPixelXY(7,2,0x6600FF);
  322.       delay(rx1*2);  
  323.       Rb.blankDisplay();
  324.       if (rx3 <= 150){
  325.         break;
  326.       }
  327.       Rb.setPixelXY(0,4,0xBCFF00);
  328.       Rb.setPixelXY(1,4,0xBCFF00);
  329.       Rb.setPixelXY(2,4,0xBCFF00);
  330.       Rb.setPixelXY(3,4,0xBCFF00);
  331.       Rb.setPixelXY(4,3,0x6600FF);
  332.       Rb.setPixelXY(5,3,0x6600FF);
  333.       Rb.setPixelXY(6,3,0x6600FF);
  334.       Rb.setPixelXY(7,3,0x6600FF);
  335.       delay(rx1*2);  
  336.       Rb.blankDisplay();
  337.       if (rx3 <= 150){
  338.         break;
  339.       }
  340.       Rb.setPixelXY(0,3,0xBCFF00);
  341.       Rb.setPixelXY(1,3,0xBCFF00);
  342.       Rb.setPixelXY(2,3,0xBCFF00);
  343.       Rb.setPixelXY(3,3,0xBCFF00);
  344.       Rb.setPixelXY(4,4,0x6600FF);
  345.       Rb.setPixelXY(5,4,0x6600FF);
  346.       Rb.setPixelXY(6,4,0x6600FF);
  347.       Rb.setPixelXY(7,4,0x6600FF);
  348.       delay(rx1*2);  
  349.       Rb.blankDisplay();   
  350.       if (rx3 <= 150){
  351.         break;
  352.       }
  353.       Rb.setPixelXY(0,2,0xBCFF00);
  354.       Rb.setPixelXY(1,2,0xBCFF00);
  355.       Rb.setPixelXY(2,2,0xBCFF00);
  356.       Rb.setPixelXY(3,2,0xBCFF00);
  357.       Rb.setPixelXY(4,5,0x6600FF);
  358.       Rb.setPixelXY(5,5,0x6600FF);
  359.       Rb.setPixelXY(6,5,0x6600FF);
  360.       Rb.setPixelXY(7,5,0x6600FF);
  361.       delay(rx1*2);
  362.  
  363.     }
  364.   }
  365.  
  366.  
  367. }
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374. void expansionReceive(int howMany)
  375. {
  376.   //  int port = Wire.read();    // receive byte as an integer
  377.   unsigned char bx1 = Wire.read();   // receives the byte with the value
  378.   unsigned char bx2 = Wire.read();
  379.   unsigned char bx3 = Wire.read();
  380.   unsigned char bx4 = Wire.read();
  381.   unsigned char bx5 = Wire.read();
  382.   unsigned char bx6 = Wire.read();
  383.   rx1 = int(bx1);
  384.   rx1 = constrain (rx1, 1, 100);
  385.   rx1 = map(rx1, 1, 100, 1, 250);
  386.   rx2 = int(bx2);
  387.   rx2 = constrain (rx2, 1, 100);
  388.   rx2 = map(rx2, 1, 100, 1, 250);
  389.   rx3 = int(bx3);
  390.   rx3 = constrain (rx3, 1, 100);
  391.   rx3 = map(rx3, 1, 100, 1, 250);
  392.   rx4 = int(bx4);
  393.   rx4 = constrain (rx4, 1, 100);
  394.   rx4 = map(rx4, 1, 100, 1, 250);
  395.   rx5 = int(bx5);
  396.   rx5 = constrain (rx5, 1, 100);
  397.   rx5 = map(rx5, 1, 100, 1, 250);
  398.   rx6 = int(bx6);
  399.   rx6 = constrain (rx6, 1, 100);
  400.   rx6 = map(rx6, 1, 100, 1, 250);
  401.   //  analogWrite(port,value);         // sets the pin to the desired value
  402. }
Advertisement
Add Comment
Please, Sign In to add comment