head 1.1;
branch 1.1.1;
access ;
symbols micropython-1-5-2-base:1.1.1.1 MICROPYTHON:1.1.1;
locks ; strict;
comment @# @;
1.1
date 2016.01.14.01.38.49; author agc; state Exp;
branches 1.1.1.1;
next ;
commitid Q8liT0v6zMF95QQy;
1.1.1.1
date 2016.01.14.01.38.49; author agc; state Exp;
branches ;
next ;
commitid Q8liT0v6zMF95QQy;
desc
@@
1.1
log
@Initial revision
@
text
@The AMP audio skin
==================
Soldering and using the AMP audio skin.
.. image:: img/skin_amp_1.jpg
:alt: AMP skin
:width: 250px
.. image:: img/skin_amp_2.jpg
:alt: AMP skin
:width: 250px
The following video shows how to solder the headers, microphone and speaker onto the AMP skin.
.. raw:: html
For circuit schematics and datasheets for the components on the skin see :ref:`hardware_index`.
Example code
------------
The AMP skin has a speaker which is connected to ``DAC(1)`` via a small
power amplifier. The volume of the amplifier is controlled by a digital
potentiometer, which is an I2C device with address 46 on the ``IC2(1)`` bus.
To set the volume, define the following function::
import pyb
def volume(val):
pyb.I2C(1, pyb.I2C.MASTER).mem_write(val, 46, 0)
Then you can do::
>>> volume(0) # minimum volume
>>> volume(127) # maximum volume
To play a sound, use the ``write_timed`` method of the ``DAC`` object.
For example::
import math
from pyb import DAC
# create a buffer containing a sine-wave
buf = bytearray(100)
for i in range(len(buf)):
buf[i] = 128 + int(127 * math.sin(2 * math.pi * i / len(buf)))
# output the sine-wave at 400Hz
dac = DAC(1)
dac.write_timed(buf, 400 * len(buf), mode=DAC.CIRCULAR)
You can also play WAV files using the Python ``wave`` module. You can get
the wave module `here `__ and you will also need
the chunk module available `here `__. Put these
on your pyboard (either on the flash or the SD card in the top-level directory). You will need an
8-bit WAV file to play, such as `this one `_,
or to convert any file you have with the command::
avconv -i original.wav -ar 22050 -codec pcm_u8 test.wav
Then you can do::
>>> import wave
>>> from pyb import DAC
>>> dac = DAC(1)
>>> f = wave.open('test.wav')
>>> dac.write_timed(f.readframes(f.getnframes()), f.getframerate())
This should play the WAV file.
@
1.1.1.1
log
@Import micropython version 1.5.2 into othersrc.
Micropython is a python3 implementation that has been optimised for
micro-controllers and small embedded systems. It also has a "unix"
port. It has an MIT license.
This is version 1.5.2 of micropython.
MicroPython implements the entire Python 3.4 syntax (including
exceptions, "with", "yield from", etc.). The following core
datatypes are provided: str (including basic Unicode
support), bytes, bytearray, tuple, list, dict, set, frozenset,
array.array, collections.namedtuple, classes and instances.
Builtin modules include sys, time, and struct. Note that only
subset of Python 3.4 functionality implemented for the data
types and modules.
This is the standard micropython source (version v1.5.2), which has been
adapted to use reachover infrastructure. At the present time, libffi
(from pkgsrc) is used. Alternative locations for libffi can be set
using the PKGSRC_PREFIX definition to make.
In the whole scheme of things, micropython is quite small:
% size bin/micropython
text data bss dec hex filename
393495 1624 2208 397327 6100f bin/micropython
%
and runs much as expected:
% bin/micropython
MicroPython v1.5.2 on 2016-01-13; linux version
Use Ctrl-D to exit, Ctrl-E for paste mode
>>> print("hello world")
hello world
>>> list(5 * x + y for x in range(10) for y in [4, 2, 1])
[4, 2, 1, 9, 7, 6, 14, 12, 11, 19, 17, 16, 24, 22, 21, 29, 27, 26, 34, 32, 31, 39, 37, 36, 44, 42, 41, 49, 47, 46]
>>>
% python2.7
Python 2.7.10 (default, Oct 17 2015, 17:55:29)
[GCC 4.8.5] on netbsd7
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hello world")
hello world
>>> list(5 * x + y for x in range(10) for y in [4, 2, 1])
[4, 2, 1, 9, 7, 6, 14, 12, 11, 19, 17, 16, 24, 22, 21, 29, 27, 26, 34, 32, 31, 39, 37, 36, 44, 42, 41, 49, 47, 46]
>>> ^D
%
This (reachover) version runs all the tests which the gmake version does.
% make t
cd bin && make t
cd /home/agc/local/micropython/bin/../dist/unix/../tests && env MICROPY_MICROPYTHON=/home/agc/local/micropython/bin/micropython ./run-tests
pass basics/0prelim.py
pass basics/andor.py
pass basics/array1.py
pass basics/array_add.py
pass basics/array_construct.py
pass basics/array_construct2.py
...
pass unix/ffi_callback.py
pass unix/ffi_float.py
pass unix/ffi_float2.py
474 tests performed (15812 individual testcases)
474 tests passed
5 tests skipped: cmd_showbc cmd_verbose machine1 machine_mem extra_coverage
%
The sources are available from github:
https://github.com/micropython/micropython
micropython release at:
https://github.com/micropython/micropython/releases
Sources for 1.5.2 taken from:
https://github.com/micropython/micropython/archive/v1.5.2.tar.gz
Alistair Crooks
agc@@netbsd.org
Wed Jan 13 17:15:30 PST 2016
@
text
@@