summaryrefslogtreecommitdiffstatshomepage
path: root/docs/library/pyb.ADC.rst
blob: 64848d577965e8c89d36062c508aaf5c9a307c82 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
.. _pyb.ADC:

class ADC -- analog to digital conversion: read analog values on a pin
======================================================================

.. only:: port_pyboard

    Usage::
    
        import pyb
    
        adc = pyb.ADC(pin)              # create an analog object from a pin
        val = adc.read()                # read an analog value
    
        adc = pyb.ADCAll(resolution)    # creale an ADCAll object
        val = adc.read_channel(channel) # read the given channel
        val = adc.read_core_temp()      # read MCU temperature
        val = adc.read_core_vbat()      # read MCU VBAT
        val = adc.read_core_vref()      # read MCU VREF

.. only:: port_wipy

    Usage::
    
       import pyb

       adc = pyb.ADC(channel)          # create an analog object on one of the 4 ADC channels
       val = adc.read()                # read an analog value

Constructors
------------

.. only:: port_pyboard

    .. class:: pyb.ADC(pin)
    
       Create an ADC object associated with the given pin.
       This allows you to then read analog values on that pin.

.. only:: port_wipy

    .. class:: pyb.ADC(channel)
    
       Create an ADC object on the given channel. Each channel is associated
       to a specific pin. For more info check the `pinout and alternate functions
       table. <https://raw.githubusercontent.com/wipy/wipy/master/docs/PinOUT.png>`_ 
       This allows you to then read analog values on that pin.
       
       .. warning:: 
       
          ADC pin input range is 0-1.4V (being 1.8V the absolute maximum that it 
          can withstand). When GPIO2, GPIO3, GPIO4 or GPIO5 are remapped to the 
          ADC block, 1.8 V is the maximum. If these pins are used in digital mode, 
          then the maximum allowed input is 3.6V.

Methods
-------

.. method:: adc.read()

   Read the value on the analog pin and return it.  The returned value
   will be between 0 and 4095.

.. only:: port_pyboard

    .. method:: adc.read_timed(buf, freq)
    
       Read analog values into the given buffer at the given frequency. Buffer
       can be bytearray or array.array for example. If a buffer with 8-bit elements
       is used, sample resolution will be reduced to 8 bits.
       
       Example::
       
           adc = pyb.ADC(pyb.Pin.board.X19)    # create an ADC on pin X19
           buf = bytearray(100)                # create a buffer of 100 bytes
           adc.read_timed(buf, 10)             # read analog values into buf at 10Hz
                                               #   this will take 10 seconds to finish
           for val in buf:                     # loop over all values
               print(val)                      # print the value out
       
       This function does not allocate any memory.

.. only:: port_wipy

   .. method:: adc.enable()

      Enable the ADC channel.

   .. method:: adc.disable()

      Disable the ADC channel.