BlazeX / AR8000

Description: Remote Control 8 Channel Reading PPM via InterruptIn and Timer Offer Controls, TrimParameters, Failsafe, State

Files at this revision

API Documentation at this revision

Comitter:
user BlazeX
Date:
Sat Apr 14 10:08:55 2012 +0000
Parent:
1:a5bfae540999
Child:
3:6ccc5c3acee1
Commit message:

Changed in this revision

AR8000.cpp Show annotated file Show diff for this revision Revisions of this file
AR8000.h Show annotated file Show diff for this revision Revisions of this file
--- a/AR8000.cpp	Fri Mar 23 15:59:47 2012 +0000
+++ b/AR8000.cpp	Sat Apr 14 10:08:55 2012 +0000
@@ -39,6 +39,23 @@
 //Update-Methode
 void AR8000::Update()
 {
-    for(int i= 0; i < 8; i++)
-        Pos[i]= dTime[i]-1000;
+    //Steuerbefehle berechnen
+    Throttle= float(dTime[0]-1000) * 0.001;
+    Aileron= float(dTime[1]-1500) * 0.002;
+    Elevator= float(dTime[2]-1500) * 0.002;
+    Rudder= float(dTime[3]-1500) * 0.002;
+    
+    TrimL= float(dTime[6]-1500) * 0.002;
+    TrimR= float(dTime[7]-1500) * 0.002;
+    if(dTime[5] < 1500)
+    {
+        ControlActive= 0;
+        TrimK= float(dTime[5]-1250) * 0.004;
+    }
+    else
+    {
+        ControlActive= 1;
+        TrimK= float(dTime[5]-1750) * 0.004;
+    }
+    State= dTime[4] < 1200 ? 0 : dTime[4] < 1700 ? 1 : 2;
 }
\ No newline at end of file
--- a/AR8000.h	Fri Mar 23 15:59:47 2012 +0000
+++ b/AR8000.h	Sat Apr 14 10:08:55 2012 +0000
@@ -1,6 +1,3 @@
-//TODO:
-//- Ein Timer reicht. Mit read_us() kann zu jeder Zeit die Zeit festgestellt werden
-
 #pragma once
 
 //Interrupt-Callback Vorlage
@@ -34,8 +31,19 @@
     volatile int dTime[8];          //Pulsdauer in us [1000...2000]
     
 public:
-    //Das Ergebnis [0...1000], kann nach dem Update "gelesen werden"
-    int Pos[8];
+    //Die Steuerbefehle
+    float Throttle;     //0=Aus, 1=Vollgas
+    float Aileron;      //-1=Links, 0=Nichts, +1=Rechts
+    float Elevator;     //-1=Sinken, 0=Nichts, +1=Steigen
+    float Rudder;       //-1=Links, 0=Nichts, +1=Rechts
+    
+    float TrimL;        //-1...+1 Left Trim
+    float TrimR;        //-1...+1 Right Trim
+    float TrimK;        //-1...+1 Knob
+    
+    int ControlActive;  //0=Failsafe, 1=Empfang vorhanden
+    int State;          //0, 1, 2
+        
     
     //Initialisieren
     AR8000();