Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This sketch will read the FlightStatus.Armed field from the flight controller and show the arming state on the RGB LED. Green for Disarmed, blue for Arming, red for Armed.

Curcuit:

...

Image Added

(See on curcuits.io)

Sketch:

Code Block
languagecpp
themeEmacs
firstline1
titleCustomArmingLED
linenumberstrue
collapsetrue
#include <SoftwareSerial.h>
#include "FlightStatus.h"
#include "LibrePilotSerial.h"

SoftwareSerial mySerial(2, 3);  // RX, TX
LibrePilotSerial lps(&mySerial);

int ledPinr = 9;
int ledPing = 8;
int ledPinb = 7;

void setup() {
  // initialize serial monitor:
  Serial.begin(57600);
  //initialize LibrePilotSerial Object
  lps.serial->begin(57600);  
}

void loop() {

  lps.request(FLIGHTSTATUS_OBJID); //request object

  //watch the telemetry stream for 200ms. 
  //Store object if it is received and return true. If not, return false.
  boolean ok = lps.receive(FLIGHTSTATUS_OBJID, FlightStatusDataUnion.arr, 200);	
  Serial.print(" Result fs: ");
  Serial.println(FlightStatusDataUnion.data.Armed);   
  
  if(ok) {
    if(FlightStatusDataUnion.data.Armed == FLIGHTSTATUS_ARMED_DISARMED) {
      analogWrite(ledPinr, 0);
      analogWrite(ledPing, 255);
      analogWrite(ledPinb, 0);
    } else if (FlightStatusDataUnion.data.Armed == FLIGHTSTATUS_ARMED_ARMING) {
      analogWrite(ledPinr, 0);
      analogWrite(ledPing, 0);
      analogWrite(ledPinb, 255);
    } else if (FlightStatusDataUnion.data.Armed == FLIGHTSTATUS_ARMED_ARMED) {
      analogWrite(ledPinr, 255);
      analogWrite(ledPing, 0);
      analogWrite(ledPinb, 0);
    }
  }

  delay(500);
}

...