This pull request fixes various issues that were broken in the AVR build
The rotary encoder code for the Leonardo was broken
Implements the OneWire search_triplet for OneWirePin class. This makes it compatible with the OneWire class as a driver. Removed all code in OneWirePin that is implemented in the higher level class or is for other platforms.
To make the display work on AVR: fixed the init sequence to first init tempcontrol and then update the display and moved DisplayImpl.h to platform dir.
Updated the Arduino core files, which seems to fix unreliable communication between an arduino Leonardo and a raspberry pi.
Changed OneWireTempSensor init to detect when the sensor has just been connected and wait for conversion. This ensures that the first read value is valid. This was not visible on the Spark, due to the connectedDevices manager requesting conversions.
Tested:
Building for Uno, Leonardo and Spark Core
Programmed all 3 platforms and tested enumerating devices in device manager, installing sensors and toggling pins.
Verified with hardware debugging that waitForConversion is only called in first device enumeration when reading values in device manager. When unplugging and re-plugging a temp sensor, the next enumeration waits for conversion, but it is skipped in the next.
Arduino Leo encountered missing characters in serial communication with a Raspberry Pi. It was easy to reproduce when refreshing devices. Since updating Arduino core files, the problem seems to have gone away.
Verified that devices with 5V line disconnected are hidden in device manager and do not cause warnings that interrupt the enumeration
This pull request fixes various issues that were broken in the AVR build
Tested: