analogWrite.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * analogWrite.cpp
  3. *
  4. * Created on: Sep 17, 2018
  5. * Author: Harry-Laptop
  6. */
  7. #include "analogWrite.h"
  8. #include "ESP32PWM.h"
  9. void analogWrite(uint8_t APin, uint16_t AValue) {
  10. if(APin== 25 ||APin==26){
  11. dacWrite(APin, AValue);
  12. return;
  13. }
  14. ESP32PWM* chan = pwmFactory(APin);
  15. if (AValue == 0) {
  16. if ((chan != NULL) && chan->attached()) {
  17. chan->detachPin(APin);
  18. delete chan;
  19. pinMode(APin, OUTPUT);
  20. }
  21. digitalWrite(APin, 0);
  22. } else if (AValue >= 255) {
  23. if ((chan != NULL) && chan->attached()) {
  24. chan->detachPin(APin);
  25. delete chan;
  26. pinMode(APin, OUTPUT);
  27. }
  28. digitalWrite(APin, 1);
  29. } else
  30. {
  31. if (chan == NULL) {
  32. chan = new ESP32PWM();
  33. }
  34. if(!chan->attached()){
  35. chan->attachPin(APin,1000, 8); // This adds the PWM instance to the factory list
  36. //Serial.println("Attaching AnalogWrite : "+String(APin)+" on PWM "+String(chan->getChannel()));
  37. }
  38. chan->write(AValue);
  39. // Serial.print( "ledcWrite: " ); Serial.print( CESP32PWMPinMap[ APin ] - 1 ); Serial.print( " " ); Serial.println( AValue );
  40. }
  41. }