Commit Graph

22 Commits

Author SHA1 Message Date
Gregg 5daaf3d0cf Added #pragma once to extras header files 2022-12-03 11:12:30 -06:00
Gregg dbe4c268f4 Modified folder structure for "extras"
This allows the "src.ino" test file to once again properly compile without requiring modifications to any existing HomeSpan sketches.  This was needed to ensure src.ino can find object code in "extras", which is now required to use the new statusDevice() method.  Since the Arduino IDE only copies files that are in "src" folders, "extras" needed to be moved to "src/extras".  For backwards compatibility with all other sketches, the "extras" directory now contains stubs for the ".h" include files.
2022-09-24 08:20:22 -05:00
Gregg 8b9487b9d4 Created homeSpan.setStatusPixel(float h=0, float s=100, float v=100)
This is now the official API method to set an RGB NeoPixel as the status LED.  It defaults to bright red unless an HSV color is specified.
2022-09-04 07:31:08 -05:00
Gregg 546c87e3ec Added setOnColor to Pixel
Allows user to set the color to be used for Blinker
2022-09-03 16:47:02 -05:00
Gregg 02d841390c Updated License Dates 2022-02-20 13:05:03 -06:00
Gregg facba4c02a Added Pixel.h and Pixel.cpp and implemented SK68XX Addressable LED Class
Also add getPin() to RFControl (which is used by SK68XX Class) as well as boolean operator overrides for both RFControl and PwmPin/ServoPin so that instances can be checked for validity.
2021-12-31 14:51:42 -06:00
Gregg 61a87ccc63 Clean up PWM - ready for testing
To do: Test RGB LED Examples with ESP32 and ESP32-S2 boards.

Next:  Re-work Remote Control routines to make compatible with S2 and C3
2021-09-19 13:53:20 -05:00
Gregg 0ccb1d34a0 More updates to PWM to ensure S2 and C3 compatibility
New IDF parameter in 2.0.0 for LEDC allows PWM signal to be inverted!  Need to ensure flags.output_inverted is set to 0!

Also:  Deleted old PWM class, which was saved for backwards compatibility.  This "breaks" HomeSpan for those using the old PWM class (instead of LedPin).

Also:  Added checks to ensure that frequency is achievable (for S2 and C3, the 14-bit duty resolution is insufficient to allow frequencies slower than 5 Hz - this is  not a practical limit when using LedPin to drive actual LEDs and lights).
2021-09-19 13:39:40 -05:00
Gregg 6c9bf39f54 Added PWM diagnostic messages and chip-specific maximum duty resolution 2021-09-14 21:09:58 -05:00
Gregg 3ea8f956a5 Converted initial level of LedPin from uint8_t to float 2021-09-13 06:02:20 -05:00
HomeSpan 60cb20f132 Completed update to PWM code
Should now work with ESP32-S2 and C3.  Allows for as many LEDs and Servos as there are channels and timers across low and high (esp32 only) modes. Allows LED to be set with floating point precession instead of just uint8.  Allows specification of LED frequency for each LED (1-65535 Hz).  Automatically provides maximum duty resolution for frequency chosen.
2021-09-12 15:17:27 -05:00
HomeSpan 0a0c536b6d Starting work on ServoPin update 2021-09-12 12:31:08 -05:00
HomeSpan a5d31b1ea5 Re-working PWM routines 2021-09-12 09:23:29 -05:00
Gregg d49bca9bbe Completed LedPin() and ServoPin()
Both classes check that total number of combined instantiations does not exceed 16.  ServoPin() has additional limit of only 8 instantiations.

DEPRECATED: PwmPin().  Keep for backwards compatibility only.
TO DO:  Update Tutorial Examples to replace PwmPin with LedPin, and update Extras.h documentations with LedPin and ServoPin.
2021-03-20 23:21:09 -05:00
Gregg 59e34fde05 Updated LedPin() 2021-03-20 17:19:47 -05:00
Gregg bc498c32e4 Created LedPin()
This is a replacement for PwmPin().   It keeps track of channel numbers internally, which greatly simplifies the user interface.  Starts by using the 8 Low Speed Timer channels and then moves to the 8 High Speed Timer channels if more than 8 LedPins are instantiated.  Throws a non-fatal error if more than 16 LedPins are instantiated, and ignores any attempts to set the duty cycle of those channels.
2021-03-20 17:14:19 -05:00
Gregg 65df97c563 Added ServoPin() class to PwmPin.h
Controls a 50-Hz servo motor using ESP32 built-in LED PWM.  Allows custom range for microseconds and degrees.
2021-03-20 12:20:43 -05:00
Gregg 61655845a9 Updated PWM
Removed need to include channel number in set() method.  Why was this ever there?  Need to update Examples and PwmPin docs.  But keep stub method that includes channel for backwards compatibility.
2021-03-19 06:38:41 -05:00
Gregg f2a5e5e4f5 Re-worked Examples 5-10
Updated to reflect use of getVal(), getNewVal(), and updated(), intead of directly accessing the underlying member variables.
2020-08-04 21:58:57 -05:00
Gregg 1fd493aa31 Completed Example 11
Transtioned to all getter methods: getVal(), getNewVal(), updated(), using templates for all floats.

Finalized templates for getVal and getNewVal, including making <int>  default so it does not have to be set for most getVal() and getNewVal() calls.  Works for booleans as well.  TO DO:  Re-work and check ALL prior examples to ensure they use getVal, etc., and DON'T access value, newValue, isUpdated, directly.
2020-08-04 07:56:53 -05:00
Gregg 1ebce9ab92 Created Example 11
And added static HSVtoRGB method to PwmPin
2020-08-02 11:12:53 -05:00
Gregg 57fef4b496 Create /extras folder
Created /extras folder and moved PwmPin and RFControl files from src into src/extras.
2020-07-25 20:47:05 -05:00