+ various documentation
Esse commit está contido em:
@@ -0,0 +1,20 @@
|
||||
Copyright (c) 2011 Amperka Team, http://github.com/amperka/ino
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -0,0 +1,79 @@
|
||||
Ino is a command line toolkit for working with Arduino hardware.
|
||||
|
||||
It allows you to:
|
||||
|
||||
* Quickly create new projects
|
||||
* Build a firmware from multiple source files and libraries
|
||||
* Upload the firmware to a device
|
||||
* Perform serial communication with a device (aka serial monitor)
|
||||
|
||||
Ino may replace Arduino IDE UI if you prefer to work with command
|
||||
line and an editor of your choice or if you want to integrate Arduino
|
||||
build process to 3-rd party IDE.
|
||||
|
||||
Ino is based on ``make`` to perform builds. However Makefiles are
|
||||
generated automatically and you'll never see them if you don't want to.
|
||||
|
||||
Features
|
||||
========
|
||||
|
||||
* Simple. No build scripts are necessary.
|
||||
* Out-of-source builds. Directories with source files are not
|
||||
cluttered with intermediate object files.
|
||||
* Support for ``*.pde`` and ``*.ino`` sketches as well as
|
||||
raw ``*.c`` and ``*cpp``.
|
||||
* Automatic dependency tracking. Referred libraries are automatically
|
||||
included in the build process. Changes in ``*.h`` files lead
|
||||
to recompilation of sources which include them.
|
||||
* Pretty colorful output.
|
||||
* Support for all boards that are supported by Arduino IDE.
|
||||
* Fast. Discovered tool paths and other stuff is cached across runs.
|
||||
If nothing has changed, nothing is build.
|
||||
* Flexible. Support for simple ini-style config files to setup
|
||||
machine-specific info like used Arduino model, Arduino distribution
|
||||
path, etc just once.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
With python setup tools::
|
||||
|
||||
$ sudo pip install ino
|
||||
# ... or ...
|
||||
$ sudo easy_install ino
|
||||
|
||||
Or clone from GitHub::
|
||||
|
||||
$ git clone git://github.com/amperka/ino.git
|
||||
$ export PATH=`pwd`/ino/bin
|
||||
|
||||
Requirements
|
||||
============
|
||||
|
||||
* Python 2.6+
|
||||
* Arduino IDE distribution
|
||||
* ``make`` and ``avr-gcc`` for building
|
||||
* ``picocom`` for serial communication
|
||||
|
||||
Limitations
|
||||
===========
|
||||
|
||||
* As for current version, ino works only in Linux. However it was created
|
||||
with other platform users in mind, so it will eventually get
|
||||
cross-platform support. Help from Windows- and MacOS- developers is
|
||||
much appreciated.
|
||||
* Ino is not yet well tested with release candidate of upcoming Arduino 1.0
|
||||
software. Although it should be compatible.
|
||||
|
||||
Getting Help
|
||||
============
|
||||
|
||||
* Take a look at [Quick start tutorial].
|
||||
* Run ``ino --help``.
|
||||
* Post issues to GitHub.
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
If not stated otherwise ino is distributed in terms of MIT software license.
|
||||
See MIT-LICENSE.txt in the distribution for details.
|
||||
@@ -0,0 +1,230 @@
|
||||
|
||||
Quick start
|
||||
===========
|
||||
|
||||
Learn how to work with ino in few minutes.
|
||||
|
||||
Creating a project
|
||||
------------------
|
||||
|
||||
Let's create a simple project::
|
||||
|
||||
$ mkdir beep
|
||||
$ cd beep
|
||||
$ ino init -t blink
|
||||
|
||||
Here we've created a new directory for our project and initialized project
|
||||
skeleton with ``ino init`` command. We chose to use *blink* as a project
|
||||
template. That will create a simple sketch for LED blinking on pin 13.
|
||||
Lets see what we've got::
|
||||
|
||||
$ tree
|
||||
.
|
||||
├── lib
|
||||
└── src
|
||||
└── sketch.pde
|
||||
|
||||
$ cat src/sketch.pde
|
||||
|
||||
#define LED_PIN 13
|
||||
|
||||
void setup()
|
||||
{
|
||||
pinMode(LED_PIN, OUTPUT);
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
digitalWrite(LED_PIN, HIGH);
|
||||
delay(100);
|
||||
digitalWrite(LED_PIN, LOW);
|
||||
delay(900);
|
||||
}
|
||||
|
||||
Here we have two directories. ``src`` is a source directory where we can
|
||||
put our project's ``*.[c|cpp|pde|h|hpp]`` source files. ``sketch.pde``
|
||||
was created for us, so we have a starting point. ``lib`` is a directory
|
||||
where we may put 3-rd party libraries if we would want.
|
||||
|
||||
Building
|
||||
--------
|
||||
|
||||
Lets build it::
|
||||
|
||||
$ ino build
|
||||
Searching for Board description file (boards.txt) ... /usr/local/share/arduino/hardware/arduino/boards.txt
|
||||
Searching for Arduino core library ... /usr/local/share/arduino/hardware/arduino/cores/arduino
|
||||
Searching for Arduino standard libraries ... /usr/local/share/arduino/libraries
|
||||
Searching for Arduino lib version file (version.txt) ... /usr/local/share/arduino/lib/version.txt
|
||||
Detecting Arduino software version ... 22
|
||||
Searching for avr-gcc ... /usr/bin/avr-gcc
|
||||
Searching for avr-g++ ... /usr/bin/avr-g++
|
||||
Searching for avr-ar ... /usr/bin/avr-ar
|
||||
Searching for avr-objcopy ... /usr/bin/avr-objcopy
|
||||
Scanning dependencies of src
|
||||
src/sketch.cpp
|
||||
arduino/wiring_shift.c
|
||||
arduino/wiring.c
|
||||
arduino/WInterrupts.c
|
||||
arduino/wiring_digital.c
|
||||
arduino/wiring_pulse.c
|
||||
arduino/wiring_analog.c
|
||||
arduino/pins_arduino.c
|
||||
arduino/HardwareSerial.cpp
|
||||
arduino/WString.cpp
|
||||
arduino/main.cpp
|
||||
arduino/Print.cpp
|
||||
arduino/WMath.cpp
|
||||
arduino/Tone.cpp
|
||||
Linking libcore.a
|
||||
Linking firmware.elf
|
||||
Converting to firmware.hex
|
||||
|
||||
Whew! A lot of work has been done behind the scenes for a single command.
|
||||
It's at most about finding necessary tools and directories, and compiling
|
||||
the standard core library. Actually you shouldn't care. The consequence
|
||||
is that we've got ``firmware.hex``—ready to upload binary file.
|
||||
|
||||
Uploading
|
||||
---------
|
||||
|
||||
Lets upload it::
|
||||
|
||||
$ ino upload
|
||||
Searching for stty ... /bin/stty
|
||||
Searching for avrdude ... /usr/local/share/arduino/hardware/tools/avrdude
|
||||
Searching for avrdude.conf ... /usr/local/share/arduino/hardware/tools/avrdude.conf
|
||||
|
||||
avrdude: AVR device initialized and ready to accept instructions
|
||||
|
||||
Reading | ################################################## | 100% 0.00s
|
||||
|
||||
avrdude: Device signature = 0x1e950f
|
||||
avrdude: reading input file ".build/firmware.hex"
|
||||
avrdude: writing flash (428 bytes):
|
||||
|
||||
Writing | ################################################## | 100% 0.08s
|
||||
|
||||
avrdude: 428 bytes of flash written
|
||||
avrdude: verifying flash memory against .build/firmware.hex:
|
||||
avrdude: load data flash data from input file .build/firmware.hex:
|
||||
avrdude: input file .build/firmware.hex contains 428 bytes
|
||||
avrdude: reading on-chip flash data:
|
||||
|
||||
Reading | ################################################## | 100% 0.06s
|
||||
|
||||
avrdude: verifying ...
|
||||
avrdude: 428 bytes of flash verified
|
||||
|
||||
avrdude: safemode: Fuses OK
|
||||
|
||||
avrdude done. Thank you.
|
||||
|
||||
Again, quite much output, but the job is done. Arduino flashes with its
|
||||
buil-in LED on pin 13.
|
||||
|
||||
Serial communication
|
||||
--------------------
|
||||
|
||||
OK, now lets deal with serial communication a bit. With editor of your choice change
|
||||
``src/sketch.pde`` to::
|
||||
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(9600);
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
Serial.println(millis());
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
This should transmit number of milliseconds spent from power up every second via
|
||||
serial port. Lets build it::
|
||||
|
||||
$ ino build
|
||||
Scanning dependencies of src
|
||||
src/sketch.cpp
|
||||
Linking firmware.elf
|
||||
Converting to firmware.hex
|
||||
|
||||
As you can see much fewer of steps have been performed behind the scenes. It is
|
||||
because only things that have been changed are taken into account. This boosts
|
||||
up the build.
|
||||
|
||||
Lets upload it with ``ino upload``. When uploading is done lets connect to the
|
||||
device with serial monitor to see what it prints::
|
||||
|
||||
$ ino serial
|
||||
Searching for Serial monitor (picocom) ... /usr/bin/picocom
|
||||
picocom v1.4
|
||||
|
||||
port is : /dev/ttyACM0
|
||||
flowcontrol : none
|
||||
baudrate is : 9600
|
||||
parity is : none
|
||||
databits are : 8
|
||||
escape is : C-a
|
||||
noinit is : no
|
||||
noreset is : no
|
||||
nolock is : yes
|
||||
send_cmd is : ascii_xfr -s -v -l10
|
||||
receive_cmd is : rz -vv
|
||||
|
||||
Terminal ready
|
||||
0
|
||||
1000
|
||||
2004
|
||||
3009
|
||||
4014
|
||||
|
||||
That's what we want! Press Ctrl+A Ctrl+X to exit.
|
||||
|
||||
Tweaking parameters
|
||||
-------------------
|
||||
|
||||
All examples were done in assumption that you have Arduino Uno and it is
|
||||
available on default port. Now consider you have Arduino Mega 2560 and
|
||||
it is available on port ``/dev/ttyACM1``. We have to specify this for
|
||||
our build steps as command-line switches.
|
||||
|
||||
Board model may be set with ``--board-model`` or ``-m`` switch. Port
|
||||
is set with ``--serial-port`` or ``-p`` switch. So lets do it::
|
||||
|
||||
$ ino build -m mega2560
|
||||
$ ino upload -m mega2560 -p /dev/ttyACM1
|
||||
$ ino serial -p /dev/ttyACM1
|
||||
|
||||
It can be annoying to provide these switches over and over again. So
|
||||
you can save them in ``ino.ini`` file in project directory. Put
|
||||
following lines to the ``ino.ini``::
|
||||
|
||||
[build]
|
||||
board-model = mega2560
|
||||
|
||||
[upload]
|
||||
board-model = mega2560
|
||||
serial-port = /dev/ttyACM1
|
||||
|
||||
[serial]
|
||||
serial-port = /dev/ttyACM1
|
||||
|
||||
Now you can build, upload and communicate via serial not having to provide
|
||||
any parameters. Well, in most cases if you build for Mega 2560, you will
|
||||
want to upload to Mega 2560 as well. The same about serial port setting.
|
||||
So to don't repeat settings for different commands shared switches could
|
||||
be moved up to an unnamed section. So having just following lines in ``ino.ini``
|
||||
is enough::
|
||||
|
||||
board-model = mega2560
|
||||
serial-port = /dev/ttyACM1
|
||||
|
||||
Furthermore, if you have Mega 2560, it is likely that you have it for all
|
||||
projects you make. You can put a shared configuration file to either::
|
||||
|
||||
1. /etc/ino.ini
|
||||
2. ~/inorc
|
||||
|
||||
And it'll be used for setting default parameter values if they're not
|
||||
overriden by the local ``ino.ini`` or by explicit command-line switches.
|
||||
Referência em uma Nova Issue
Bloquear um usuário