aboutsummaryrefslogtreecommitdiffstats
path: root/source/arduino/analogwrite.rst
diff options
context:
space:
mode:
Diffstat (limited to 'source/arduino/analogwrite.rst')
-rw-r--r--source/arduino/analogwrite.rst116
1 files changed, 116 insertions, 0 deletions
diff --git a/source/arduino/analogwrite.rst b/source/arduino/analogwrite.rst
new file mode 100644
index 0000000..64ecd5b
--- /dev/null
+++ b/source/arduino/analogwrite.rst
@@ -0,0 +1,116 @@
+.. _arduino-analogwrite:
+
+analogWrite()
+=============
+
+TODO
+
+In libmaple, analogWrite is just a convenience alias for
+:ref:`pwmWrite`. This is because PWM is not true analog output (i.e.,
+is not the output of a DAC), so the name was badly-chosen; however,
+for the sake of compatibility, the alias was provided.
+
+.. doxygenfunction:: pwmWrite
+
+Description
+-----------
+
+Writes an analog value
+(`PWM wave <http://arduino.cc/en/Tutorial/PWM>`_) to a pin. Can be
+used to light a LED at varying brightnesses or drive a motor at
+various speeds. After a call to **analogWrite()**, the pin will
+generate a steady square wave of the specified duty cycle until the
+next call to **analogWrite()** (or a call to **digitalRead()** or
+**digitalWrite()** on the same pin). The frequency of the PWM
+signal is approximately 490 Hz.
+
+
+
+On most Arduino boards (those with the ATmega168 or ATmega328),
+this function works on pins 3, 5, 6, 9, 10, and 11. On the Arduino
+Mega, it works on pins 2 through 13. Older Arduino boards with an
+ATmega8 only support analogWrite() on pins 9, 10, and 11. You do
+not need to call pinMode() to set the pin as an output before
+calling analogWrite().
+
+
+
+The *analogWrite* function has nothing whatsoever to do with the
+analog pins or the *analogRead* function.
+
+
+
+Syntax
+------
+
+analogWrite(pin, value)
+
+
+
+Parameters
+----------
+
+pin: the pin to write to.
+
+
+
+value: the duty cycle: between 0 (always off) and 255 (always on).
+
+
+
+Returns
+-------
+
+nothing
+
+
+
+Notes and Known Issues
+----------------------
+
+The PWM outputs generated on pins 5 and 6 will have
+higher-than-expected duty cycles. This is because of interactions
+with the millis() and delay() functions, which share the same
+internal timer used to generate those PWM outputs. This will be
+noticed mostly on low duty-cycle settings (e.g 0 - 10) and may
+result in a value of 0 not fully turning off the output on pins 5
+and 6.
+
+
+
+Example
+-------
+
+Sets the output to the LED proportional to the value read from the
+potentiometer.
+
+
+
+::
+
+
+ int ledPin = 9; // LED connected to digital pin 9
+ int analogPin = 3; // potentiometer connected to analog pin 3
+ int val = 0; // variable to store the read value
+
+ void setup()
+ {
+ pinMode(ledPin, OUTPUT); // sets the pin as output
+ }
+
+ void loop()
+ {
+ val = analogRead(analogPin); // read the input pin
+ analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
+ }
+
+
+
+See also
+--------
+
+
+- `analogRead <http://arduino.cc/en/Reference/AnalogRead>`_\ ()
+- `Tutorial: PWM <http://arduino.cc/en/Tutorial/PWM>`_
+
+