/* * Copyright 2010 Reef Angel / Roberto Imai * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * Updated by: Curt Binder * Updates Released under Apache License, Version 2.0 */ #ifndef __RA_PWM_H__ #define __RA_PWM_H__ #include #include class RA_PWMClass { public: RA_PWMClass(); byte DaylightPWMOverride; byte ActinicPWMOverride; #ifdef RA_STAR byte DaylightPercentage; byte ActinicPercentage; byte Daylight2Percentage; byte Actinic2Percentage; byte Daylight2PWMOverride; byte Actinic2PWMOverride; #endif // RA_STAR void inline SetActinicRaw(int value) { ActinicPWMValue = value; }; void inline SetDaylightRaw(int value) { DaylightPWMValue = value; }; void inline SetActinic(byte value) { ActinicPWMValue = (int)value*40.95; }; void inline SetDaylight(byte value) { DaylightPWMValue = (int)value*40.95; }; void inline SetActinicOverride(byte value) { if (value>100) value=255; ActinicPWMOverride = value; }; void inline SetDaylightOverride(byte value) { if (value>100) value=255; DaylightPWMOverride = value; }; byte GetActinicValue(); byte GetDaylightValue(); int GetActinicValueRaw(); int GetDaylightValueRaw(); byte inline GetActinicOverrideValue() { return ActinicPWMOverride; }; byte inline GetDaylightOverrideValue() { return DaylightPWMOverride; }; void ActinicPWMSlope(int MinuteOffset); void DaylightPWMSlope(int MinuteOffset); void ActinicPWMSlope(int PreMinuteOffset, int PostMinuteOffset); void DaylightPWMSlope(int PreMinuteOffset, int PostMinuteOffset); void ActinicPWMSlope(); void DaylightPWMSlope(); void ActinicPWMParabola(int MinuteOffset); void DaylightPWMParabola(int MinuteOffset); void ActinicPWMParabola(int PreMinuteOffset, int PostMinuteOffset); void DaylightPWMParabola(int PreMinuteOffset, int PostMinuteOffset); void ActinicPWMParabola(); void DaylightPWMParabola(); void ActinicPWMSmoothRamp(int MinuteOffset); void DaylightPWMSmoothRamp(int MinuteOffset); void ActinicPWMSmoothRamp(int PreMinuteOffset, int PostMinuteOffset); void DaylightPWMSmoothRamp(int PreMinuteOffset, int PostMinuteOffset); void ActinicPWMSmoothRamp(); void DaylightPWMSmoothRamp(); void ActinicPWMSigmoid(int MinuteOffset); void DaylightPWMSigmoid(int MinuteOffset); void ActinicPWMSigmoid(int PreMinuteOffset, int PostMinuteOffset); void DaylightPWMSigmoid(int PreMinuteOffset, int PostMinuteOffset); void ActinicPWMSigmoid(); void DaylightPWMSigmoid(); void StandardActinic(); void StandardDaylight(); void StandardActinic(int MinuteOffset); void StandardDaylight(int MinuteOffset); void StandardActinic(int PreMinuteOffset, int PostMinuteOffset); void StandardDaylight(int PreMinuteOffset, int PostMinuteOffset); void Override(byte Channel, byte Value); #if defined RA_STAR || defined RA_TOUCHDISPLAY || defined(__SAM3X8E__) void inline SetActinic2Raw(int value) { Actinic2PWMValue = value; }; void inline SetDaylight2Raw(int value) { Daylight2PWMValue = value; }; void inline SetActinic2(byte value) { Actinic2PWMValue = (int)value*40.95; }; void inline SetDaylight2(byte value) { Daylight2PWMValue = (int)value*40.95; }; void inline SetActinic2Override(byte value) { if (value>100) value=255; Actinic2PWMOverride = value; }; void inline SetDaylight2Override(byte value) { if (value>100) value=255; Daylight2PWMOverride = value; }; byte GetActinic2Value(); byte GetDaylight2Value(); int GetActinic2ValueRaw(); int GetDaylight2ValueRaw(); byte inline GetActinic2OverrideValue() { return Actinic2PWMOverride; }; byte inline GetDaylight2OverrideValue() { return Daylight2PWMOverride; }; void Actinic2PWMSlope(int MinuteOffset); void Daylight2PWMSlope(int MinuteOffset); void Actinic2PWMSlope(int PreMinuteOffset, int PostMinuteOffset); void Daylight2PWMSlope(int PreMinuteOffset, int PostMinuteOffset); void Actinic2PWMSlope(); void Daylight2PWMSlope(); void Actinic2PWMParabola(int MinuteOffset); void Daylight2PWMParabola(int MinuteOffset); void Actinic2PWMParabola(int PreMinuteOffset, int PostMinuteOffset); void Daylight2PWMParabola(int PreMinuteOffset, int PostMinuteOffset); void Actinic2PWMParabola(); void Daylight2PWMParabola(); void Actinic2PWMSmoothRamp(int MinuteOffset); void Daylight2PWMSmoothRamp(int MinuteOffset); void Actinic2PWMSmoothRamp(int PreMinuteOffset, int PostMinuteOffset); void Daylight2PWMSmoothRamp(int PreMinuteOffset, int PostMinuteOffset); void Actinic2PWMSmoothRamp(); void Daylight2PWMSmoothRamp(); void Actinic2PWMSigmoid(int MinuteOffset); void Daylight2PWMSigmoid(int MinuteOffset); void Actinic2PWMSigmoid(int PreMinuteOffset, int PostMinuteOffset); void Daylight2PWMSigmoid(int PreMinuteOffset, int PostMinuteOffset); void Actinic2PWMSigmoid(); void Daylight2PWMSigmoid(); void StandardActinic2(); void StandardDaylight2(); void StandardActinic2(int MinuteOffset); void StandardDaylight2(int MinuteOffset); void StandardActinic2(int PreMinuteOffset, int PostMinuteOffset); void StandardDaylight2(int PreMinuteOffset, int PostMinuteOffset); #endif #ifdef PWMEXPANSION byte ExpansionPercentage[PWM_EXPANSION_CHANNELS]; int ExpansionChannel[PWM_EXPANSION_CHANNELS]; byte ExpansionChannelOverride[PWM_EXPANSION_CHANNELS]; void inline SetChannelRaw(byte Channel, int Value) { if (Channel100) Value=255; if (Channel100) Value=255; if (Channel