Dino 0.12.0 #34

wants to merge 99 commits into


None yet
6 participants

vickash commented Mar 26, 2013

New Features

  • Arduino Due support:
    • Up to 12-bit analog in and out. Pass a :bitsoption to Board#new(io, options)to set the resolution for both.
    • DAC support via standard analogWrite() function. Refer to DAC pins as DAC0, DAC1, just as labeled on the board.
    • Uses the native ARM serial port by default. More read throughput than 115200 baud.
  • WiFi shield support (untested)
  • Hitachi HD44780 LCD support
  • Seven segment display support
  • Shift register support
  • DHT11, DHT 21, DHT22 temperature and humidity temperature support
  • DS18B20 (Dallas OneWire) temperature sensor support. No full OneWire bus support yet.
  • HC-SR04 ultrasonic distance sensor support
  • SoftwareSerial: Use 2 of the Arduino pins as a secondary serial interface. (write only / experimental)

Minor Changes

  • Extended message syntax so the Arduino can receive arbitrary length strings.
  • Created Dino::Message class to compose messages before writing to the Arduino.
  • Moved CLI into it's own class, Dino::CLI.

To Do


  • IR blaster support
  • OneWire support

IR blaster and OneWire support will benefit from a better (probably binary), more symmetric message protocol. Moved to next version.


  • Use avrdude to upload sketches to the board straight from the command line

CLI outputs only the path to the sketch that needs compiling. User should handle it from there. Easy enough to integrate the dino command into shell scripts for advanced users, or just use the IDE for beginners.

This was referenced Mar 26, 2013

Awesome pull request, I'd love to see this merged, so I can adapt my LCD implementation to this


vickash commented Mar 26, 2013

@supherman I was just about to suggest that. You can branch off 0.12.0-wip and submit another pull request to this. I really like the approach you took in #32, but as you already said, you'll need to make some changes to get it to work with this version:

  • You'll want to send entire strings to the board, instead of one character at a time. Use the new :aux_message option of Dino::Message.encode for that. Handles up to 255 chars right now. You can let the Dino::LCD class split up messages > 255 into separate messages if you want, but the overhead involved with sending one char at a time is pointless.

  • Try not to put arbitrary data (like the LCD's cols and rows values) into message slots where pin and value should go. That feels like a hack. It should go into aux_message as well, and parse it inside your LCD lib. The general pattern should be something like:

    10..1.16,2\n would translate to lcd.begin(16,2)

    Assuming we use cmd == 10 to access your LCD library, val can correspond to the command in your library we want to acces. That's fine. Then the data for the command in your library gets stored in auxMsg. This pattern should work for anything where we're taking advantage of an Arduino library that needs more than just pin and value data.

  • See if you can figure out how to dynamically initialize the LCD. Not all shields have the same pins. I have one with some buttons on it that uses LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

vickash referenced this pull request Mar 26, 2013


LCD Shield example #31

I'm in for a chat discussion or something like that, I'm not an expert with arduino, but I'd like to see the progress in this project

I opened irc room on freenode.net calls #dino-rb because looks like #dino is reserved.

You can use online irc client: http://webchat.freenode.net/ or irssi.


vickash commented Mar 29, 2013

@supherman You should be able to just drop in your code from #39 now and it'll work. Couple changes I made:

  • Changed the class name to DinoLCD.
  • The Dino class doesn't need to know about the LiquidCrystal instance, so that's inside DinoLCD instead of Dino.
  • There's only one function on DinoLCD that gets called from Dino, dinoLCD.process(). You'll need to handle everything in there. It receives val and a pointer to auxMsg.
  • cmd for accessing DinoLCD is 10.

And the CLI includes the DinoLCD library files now, so it should build the sketch properly.

vickash referenced this pull request May 24, 2013


Lcd #32

vickash and others added some commits Jun 23, 2013

@vickash vickash Fix listeners on MEGA. Due support with default 12-bit analog read. d93c624
@vickash vickash Full Due support: 12bit IO, DACs, use native ARM serial port by default 7f522aa
@vickash vickash Fix a typo in the CLI uploader path 00c2e41
@vickash vickash Fix sketches not compiling for AVR boards f3d3ef4
@vickash vickash Simpler more reliable handshake 43a8fe9
@vickash vickash Make BaseInput#read block the main thread, add BaseInput#poll(interva…
…l, &block)
@cdcarter cdcarter failing attempt to bring softwareserial to dino 2c8e9db
@cdcarter cdcarter there's the dummy mistake. 25f1182
@cdcarter cdcarter Ignoring DS_Store files... 6bca623
@cdcarter cdcarter add the print and println methods, still untested 760cba4
@cdcarter cdcarter very preliminary SoftwareSerial writing, and it works. a32fd5d
@cdcarter cdcarter whoops, didn't need to define debug for the commit 7d50e3d
@cdcarter cdcarter initial component class for the softwareserial 4805ad2
@cdcarter cdcarter autoload the serial 1aefab5
@cdcarter cdcarter softwareserial should track the baud 5f7b950
@cdcarter cdcarter a spec for the current level of detail softserial has 0558f2c
@vickash vickash Merge pull request #53 from cdcarter/0.12.0-wip
SoftwareSerial, writer support
@vickash vickash Don't depend on rbenv 0891d2e
@vickash vickash Update readme for 0.12 b020a37
@vickash vickash Untested support for DHT11/DHT22 sensors bb51629
@vickash vickash Fix stupid mistake eb997ee
@vickash vickash Fix DHT sensor class and add an example. 3b4422d
@vickash vickash Leonardo support. Closes #65. Temporarily disable things that don’t w…
…ork on Due.
@vickash vickash Disable software serial for Due on ethernet and wifi 6da2977
@vickash vickash Refactor all the components… 0ae5261
@vickash vickash Merge branch '0.12.0-wip' of github.com:austinbv/dino into 0.12.0-wip 01bac6d
@vickash vickash Update some examples d05788e
@vickash vickash Fix broken component tests 313201f
@vickash vickash Make DHT sensors work with recent changes. a6fd739
@vickash vickash Model shift register as a drop-in replacement for Board class. Added …
…SSD example.
@vickash vickash Put back the 3 second sleep for windows c9f9d7f
@vickash vickash Quick and dirty Dallas temp sensor implementation d37e952

vickash added some commits Jan 3, 2015

@vickash vickash Switched from serialport to rubyserial dc38438
@vickash vickash Fix tests for rubyserial f6caf61
@vickash vickash Change mock to double for rspec c810478
@vickash vickash Merge pull request #80 from austinbv/rubyserial
Switched from serialport to rubyserial
@vickash vickash Merge pull request #72 from austinbv/ds18b20
DS18B20 (Dallas Temperature Sensor) Support
@vickash vickash Remove upload/compile. Too much scope. Use shell scripts instead. 4f8a522
@vickash vickash Update the readme for new command line options 0dce1e1
@vickash vickash Notify when the board is connected cc70a4d
@vickash vickash Use a mutex when modifying callbacks to avoid modifying hash while it…
…'s being enumerated
@vickash vickash Forgot to call super in initialize 4bb1809
@vickash vickash Use after_initalize instead 8c5724c
@vickash vickash Fix error leftover from cloning callbacks 7fcf387
@vickash vickash Include a C library for the Due to compile 55b4385
@vickash vickash Better behavior when using a shift register as a board proxy a0d923c
@vickash vickash Merge pull request #83 from austinbv/shift-register-modelling
Shift register modelling
@vickash vickash Test 2.0.0, 2.2.0 and jruby. Bare minimum work to get tests passing. 7fa7fca
@vickash vickash Better tests for Board. Move BoardNotFound into TxRx module. ee937d3
@vickash vickash Fix inheritance of initalize for callbacks module 1926aeb
@vickash vickash Merge branch 'master' into 0.12.0-wip
@vickash vickash Forgot to put back 5ms sleep in read thread to avoid high cpu usage
@vickash vickash Make the read thread abort on exception. No more silently failing cal…
@vickash vickash Separate Board#read for simpler testing
@vickash vickash Expect all pins to be integer after component init. Add #pin to fix M…
…ultiPin components.
@vickash vickash New rspec syntax for TxRx specs. Escape backslashes everywhere.
@vickash vickash allow instead of expect. Trying to get test passing on travis.
@vickash vickash Rspec 3.2 syntax for all tests
@vickash vickash Test the Callbacks mixin properly
@vickash vickash Don't need to #chop trailing \n from messages
@vickash vickash TCP lines need \n removed though
@vickash vickash Make sure one wire library gets copied when generating a sketch 8858b63
@vickash vickash Use latest version of one wire library 23921aa
@vickash vickash Small hack to avoid string -> char* conversion deprecation in latest …
…Arduino IDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment