tommasta

Sparkfun EL Sequencer Code w/ Spektrum AR600 Remote Control

Apr 16th, 2012
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.10 KB | None | 0 0
  1.     /*This is code for my Sparkfun EL Sequencer with 6 strands
  2.     of EL wire.  The inputs are radio inputs from a Spektrum
  3.     AR600 Receiver, coupled to a Spektrum DX5e transmitter for
  4.     R/C airplanes to remotely control the system.  It was built
  5.     for a rock opera put on by the Albany Symphony for a piece
  6.     composed by Chris Kapica, to be worn by the
  7.     dancer/choreographer.  I was able to build this code
  8.     with the help of and using components from 'Eight':
  9.     http://www.64ox.com/2010/11/28/read-rc-rx-with-an-arduino/
  10.     and 'dianaeng':
  11.     http://blog.makezine.com/2010/04/27/programming-el-wire-fashion/
  12.      
  13.     Enjoy! -Tom Nasca */
  14.  
  15.  
  16. #include <avr/io.h>
  17. #include <avr/interrupt.h>
  18. #include <util/delay.h>
  19.  
  20. void elSegment(byte num, boolean value) {      // Turns a given EL wire segment on or off.
  21. }                                              //'num' is the segment (0-7 as A-H).
  22.                                                //'value' is true or false (as 'on' or 'off').
  23.  
  24. int rx1 = 0;                   //Throttle on DX5e
  25. int rx2 = 0;                   //Aileron " " "
  26. int rx3 = 0;                   //Elevation " " "
  27. int rx4 = 0;                   //Rudder " " "
  28. int rx5 = 0;                   //AUX " " "
  29. int rx6 = 0;                   //Trainer " " "
  30. void setup() {
  31.  
  32.   byte i;                      //Sets up the EL wire segment pins.
  33.   for (i = 2; i < 10; i++) {   //Segments 0-7 correspond to A-H
  34.     pinMode(i, OUTPUT);        //on the Sparkfun EL Sequencer.
  35.     digitalWrite(i, LOW);      //
  36.   }                            //
  37.  
  38.   Serial.begin(115200);        //Open the serial port at 115200bps.
  39. }                              //Lower values produced ASCII characters.
  40.  
  41.  
  42. // control how long each segment is turned on by changing the delay
  43. // delete the code that is not being used EL wire segments
  44. void loop(){
  45.   rx1=pulseIn(A2,HIGH,20000);  //Assign name and read values of
  46.   rx2=pulseIn(A3,HIGH,20000);  //pins with a 20ms timeout, print
  47.   rx3=pulseIn(A4,HIGH,20000);  //values to Serial Monitor for
  48.   rx4=pulseIn(A5,HIGH,20000);  //viewing.  Lower timeout values
  49.   rx5=pulseIn(A6,HIGH,20000);  //produced ocassional dropped
  50.   rx6=pulseIn(A7,HIGH,20000);  //readings.
  51.   Serial.print(rx1);           //
  52.   Serial.print("\t");          //
  53.   Serial.print(rx2);           //
  54.   Serial.print("\t");          //
  55.   Serial.print(rx3);           //
  56.   Serial.print("\t");          //
  57.   Serial.print(rx4);           //
  58.   Serial.print("\t");          //
  59.   Serial.print(rx5);           //
  60.   Serial.print("\t");          //
  61.   Serial.print(rx6);           //
  62.   Serial.print("\t");          //
  63.   Serial.println("\t");        //
  64.  
  65.   {
  66.   if (rx2 < 1400){            //Lights whole left arm
  67.       elSegment(5, true);     //
  68.       elSegment(6, true);     //
  69.       elSegment(7, true);}    //
  70.    else{                      //
  71.       elSegment(5, false);    //
  72.       elSegment(6, false);    //
  73.       elSegment(7, false);}   //
  74.   }
  75.   {
  76.   if (rx3 < 1400){            //Lights whole right arm
  77.       elSegment(0, true);     //
  78.       elSegment(1, true);     //
  79.       elSegment(2, true);}    //
  80.    else{                      //
  81.       elSegment(2, false);    //
  82.       elSegment(1, false);    //
  83.       elSegment(0, false);}   //
  84.   }
  85.   {
  86.    if (rx4 < 1400){           //Lights both arms
  87.       elSegment(0, true);     //
  88.       elSegment(1, true);     //
  89.       elSegment(2, true);     //
  90.       elSegment(5, true);     //
  91.       elSegment(6, true);     //
  92.       elSegment(7, true);}    //
  93.    else{                      //
  94.       elSegment(2, false);    //
  95.       elSegment(1, false);    //
  96.       elSegment(0, false);    //
  97.       elSegment(5, false);    //
  98.       elSegment(6, false);    //
  99.       elSegment(7, false);}   //
  100.   }
  101.   {
  102.   if (rx5 <1400){             //Left arm cycle up
  103.       elSegment(5, true);     //
  104.       delay(rx1 - 1000);      //
  105.       elSegment(6, true);     //
  106.       delay(rx1 - 1000);      // <-- The delay here is variable
  107.       elSegment(7, true);     //     based on the value of
  108.       delay(rx1 - 1000); }    //     input rx1.
  109.   else{                       //
  110.       elSegment(5, false);    //
  111.       elSegment(6, false);    //
  112.       elSegment(7, false);}   //
  113.   }
  114.   {
  115.   if (rx6 <1400){             //Random
  116.       elSegment(5, true);     //
  117.       delay(rx1 - 1000);      //
  118.       elSegment (5, false);   //
  119.       elSegment(1, true);     //
  120.       delay(rx1 - 1000);      //
  121.       elSegment (1, false);   //
  122.       elSegment(2, true);     //
  123.       delay(rx1 - 1000);      //
  124.       elSegment (2, false);   //
  125.       elSegment(7, true);     //
  126.       delay(rx1 - 1000);      //
  127.       elSegment (7, false);   //
  128.       elSegment(6, true);     //
  129.       delay(rx1 - 1000);      //
  130.       elSegment (6, false);   //
  131.       elSegment(0, true);     //
  132.       delay(rx1 - 1000);      //
  133.       elSegment (0, false);}  //
  134.   else{                       //
  135.       elSegment(2, false);    //
  136.       elSegment(1, false);    //
  137.       elSegment(0, false);    //
  138.       elSegment(5, false);    //
  139.       elSegment(6, false);    //
  140.       elSegment(7, false);}   //
  141.   }    
  142. }
Advertisement
Add Comment
Please, Sign In to add comment