Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00019
00034
00035 class LED : public Module
00036 {
00037 DECLARE_MODULE(LED,Module)
00038
00039
00040
00041 LED()
00042 {
00043
00044
00045
00046 AddSocket("LED.FlashRate", &m_rate);
00047
00048 m_rate = 100;
00049 m_sequence = 0;
00050
00051
00052 AddSocket("MaxInt",&m_maxInt);
00053 AddSocket("MinInt",&m_minInt);
00054 m_minInt = 32767;
00055 }
00056
00057
00058
00059
00060 virtual void ParamChanged(Socket * param)
00061 {
00062
00063
00064 if (param == &m_rate)
00065 {
00066 SetInterval(m_rate);
00067 }
00068 }
00069
00070
00071
00072 virtual void Init()
00073 {
00074 m_flightMode.Connect("FlightMode.Status");
00075 SetInterval(m_rate);
00076 SetPriority(5);
00077 for (int ct=0; ct< LED_OUTPUTS; ct++)
00078 {
00079 pinMode (ledPins[ct], OUTPUT);
00080 digitalWrite(ledPins[ct], LOW);
00081 }
00082 m_state = false;
00083 }
00084
00085 virtual void Loop(const unsigned long& interval)
00086 {
00087 float i = interval / 1000;
00088
00089 if(i > m_maxInt)
00090 {
00091 m_maxInt = i;
00092 }
00093 if(i < m_minInt)
00094 {
00095 m_minInt = i;
00096 }
00097 const byte * outputs = ledSequence[m_flightMode][m_sequence];
00098 for (int ct=0; ct< LED_OUTPUTS; ct++)
00099 {
00100 digitalWrite(ledPins[ct], *outputs);
00101 outputs++;
00102 }
00103 m_sequence ++;
00104 if (m_sequence >= LED_SEQ_LENGTH)
00105 {
00106 m_sequence = 0;
00107 }
00108 }
00109
00110 private:
00111 Parameter16 m_rate;
00112 bool m_state;
00113 byte m_sequence;
00114 Plug8 m_flightMode;
00115
00116 SocketF m_maxInt;
00117 SocketF m_minInt;
00118
00119
00120 };
00121
00122 LED g_LED;
00123
00124