#ifndef LED_H #define LED_H /* * File Purpose * The purpose of this file is to create a simple interface for turning on and off an led * And for threading led function so that you can make an led blink for a specified amount of duty at any frequency */ #include #include #include "Runnable.h" class LED : public Runnable{ private: // Digital pin uint8_t pin; // Track state so the program knows if the LED is ON or OFF bool state; // Timing Variables float duration; float period; float duty; // Thread object std::thread *blinkThread; protected: // Runnable function that we need to implement void runTarget(void *arg); public: // Constructor/Destructor LED(uint8_t pin); ~LED(); // Turn on and off LED, volatile for threading use void turnOn() volatile; void turnOff() volatile; // Start thread that will last for duration void startBlinking(float duration, float period, float duty); }; #endif // LED_H