-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6d07b28
commit fe6c361
Showing
3 changed files
with
153 additions
and
0 deletions.
There are no files selected for viewing
24 changes: 24 additions & 0 deletions
24
libraries/03_PWM/examples/LedParlaklikAyari - analogWrite/LedParlaklikAyari.ino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
#include "deneyap.h" | ||
#include "analogWrite.h" | ||
|
||
#define LED_PIN LEDB // Led pini (PWM cikis pini) | ||
|
||
uint8_t brightness = 0; // Ledin parlaklik ayari (0-255) | ||
uint8_t brightStep = 5; // Parlaklik degisim adimi | ||
|
||
void setup() { | ||
analogWriteChannel(LED_PIN); // PWM pin ayari | ||
} | ||
|
||
void loop() { | ||
brightness += brightStep; // Parlaklik kademesi degistiriliyor | ||
|
||
if ( brightness == 0 || brightness == 255 ) // Sinir degerlerde parlaklik yonu degistiriliyor | ||
{ | ||
brightStep = -brightStep; | ||
} | ||
|
||
analogWrite(LED_PIN, brightness); // Parlaklik degeri pin ile iliskilendiriliyor | ||
|
||
delay(50); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
#include "analogWrite.h" | ||
|
||
analog_write_channel_t _analog_write_channels[16] = { | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}, | ||
{-1, 5000, 13}}; | ||
|
||
int analogWriteChannel(uint8_t pin) | ||
{ | ||
int channel = -1; | ||
|
||
// Check if pin already attached to a channel | ||
for (uint8_t i = 0; i < 16; i++) | ||
{ | ||
if (_analog_write_channels[i].pin == pin) | ||
{ | ||
channel = i; | ||
break; | ||
} | ||
} | ||
|
||
// If not, attach it to a free channel | ||
if (channel == -1) | ||
{ | ||
for (uint8_t i = 0; i < 16; i++) | ||
{ | ||
if (_analog_write_channels[i].pin == -1) | ||
{ | ||
_analog_write_channels[i].pin = pin; | ||
channel = i; | ||
ledcSetup(channel, _analog_write_channels[i].frequency, _analog_write_channels[i].resolution); | ||
ledcAttachPin(pin, channel); | ||
break; | ||
} | ||
} | ||
} | ||
|
||
return channel; | ||
} | ||
|
||
void analogWriteFrequency(double frequency) | ||
{ | ||
for (uint8_t i = 0; i < 16; i++) | ||
{ | ||
_analog_write_channels[i].frequency = frequency; | ||
} | ||
} | ||
|
||
void analogWriteFrequency(uint8_t pin, double frequency) | ||
{ | ||
int channel = analogWriteChannel(pin); | ||
|
||
// Make sure the pin was attached to a channel, if not do nothing | ||
if (channel != -1 && channel < 16) | ||
{ | ||
_analog_write_channels[channel].frequency = frequency; | ||
} | ||
} | ||
|
||
void analogWriteResolution(uint8_t resolution) | ||
{ | ||
for (uint8_t i = 0; i < 16; i++) | ||
{ | ||
_analog_write_channels[i].resolution = resolution; | ||
} | ||
} | ||
|
||
void analogWriteResolution(uint8_t pin, uint8_t resolution) | ||
{ | ||
int channel = analogWriteChannel(pin); | ||
|
||
// Make sure the pin was attached to a channel, if not do nothing | ||
if (channel != -1 && channel < 16) | ||
{ | ||
_analog_write_channels[channel].resolution = resolution; | ||
} | ||
} | ||
|
||
void analogWrite(uint8_t pin, uint32_t value, uint32_t valueMax) | ||
{ | ||
int channel = analogWriteChannel(pin); | ||
|
||
// Make sure the pin was attached to a channel, if not do nothing | ||
if (channel != -1 && channel < 16) | ||
{ | ||
uint8_t resolution = _analog_write_channels[channel].resolution; | ||
uint32_t levels = pow(2, resolution); | ||
uint32_t duty = ((levels - 1) / valueMax) * min(value, valueMax); | ||
|
||
// write duty to LEDC | ||
ledcWrite(channel, duty); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#ifndef _ESP32_ANALOG_WRITE_ | ||
#define _ESP32_ANALOG_WRITE_ | ||
|
||
#include <Arduino.h> | ||
|
||
typedef struct analog_write_channel | ||
{ | ||
int8_t pin; | ||
double frequency; | ||
uint8_t resolution; | ||
} analog_write_channel_t; | ||
|
||
int analogWriteChannel(uint8_t pin); | ||
|
||
void analogWriteFrequency(double frequency); | ||
void analogWriteFrequency(uint8_t pin, double frequency); | ||
|
||
void analogWriteResolution(uint8_t resolution); | ||
void analogWriteResolution(uint8_t pin, uint8_t resolution); | ||
|
||
void analogWrite(uint8_t pin, uint32_t value, uint32_t valueMax = 255); | ||
|
||
#endif |