This commit is contained in:
Wolfgang Hottgenroth 2016-03-02 17:30:46 +01:00
commit 13124ac90b
24 changed files with 5107 additions and 0 deletions

75
.cproject Normal file
View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="it.baeyens.arduino.core.toolChain.release.1898938335">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="it.baeyens.arduino.core.toolChain.release.1898938335" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="it.baeyens.arduino.core.toolChain.release.1898938335" name="Release" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="it.baeyens.arduino.core.toolChain.release.1898938335.234065437" name="/" resourcePath="">
<toolChain id="it.baeyens.arduino.core.toolChain.release.696514450" name="Arduino Toolchain" superClass="it.baeyens.arduino.core.toolChain.release">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="it.baeyens.arduino.targetplatform.1277984405" name="Arduino Target" osList="all" superClass="it.baeyens.arduino.targetplatform"/>
<builder buildPath="${workspace_loc:/MqttMonitor}/Release" id="it.baeyens.arduino.sketch.builder.1238209556" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Arduino sketch builder" superClass="it.baeyens.arduino.sketch.builder"/>
<tool id="it.baeyens.arduino.tool.sketch.compiler.cpp.1105246056" name="Arduino C++ Compiler" superClass="it.baeyens.arduino.tool.sketch.compiler.cpp">
<option id="it.baeyens.arduino.compiler.cpp.sketch.option.incpath.660768886" name="Include Paths (-I)" superClass="it.baeyens.arduino.compiler.cpp.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/arduino/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/arduino/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/Adafruit-GFX}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/TFTLCD}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/Touch-Screen}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/Libraries/Ethernet}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/Libraries/Ethernet/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/Libraries/SPI}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/MQTT}&quot;"/>
</option>
<inputType id="it.baeyens.arduino.compiler.cpp.sketch.input.505756577" name="CPP source files" superClass="it.baeyens.arduino.compiler.cpp.sketch.input"/>
</tool>
<tool id="it.baeyens.arduino.tool.compiler.c.145614910" name="Arduino C Compiler" superClass="it.baeyens.arduino.tool.compiler.c">
<option id="it.baeyens.arduino.compiler.c.sketch.option.incpath.2126801261" name="Include Paths (-I)" superClass="it.baeyens.arduino.compiler.c.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/arduino/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/arduino/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/Adafruit-GFX}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/TFTLCD}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/Touch-Screen}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/Libraries/Ethernet}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/Libraries/Ethernet/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/Libraries/SPI}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/MqttMonitor/MQTT}&quot;"/>
</option>
<inputType id="it.baeyens.arduino.compiler.c.sketch.input.575652065" name="C Source Files" superClass="it.baeyens.arduino.compiler.c.sketch.input"/>
</tool>
<tool id="it.baeyens.arduino.tool.sketch.compiler.s.2035859172" name="Arduino Assembler" superClass="it.baeyens.arduino.tool.sketch.compiler.s"/>
<tool id="it.baeyens.arduino.tool.ar.1735903555" name="Arduino archiver" superClass="it.baeyens.arduino.tool.ar"/>
<tool id="it.baeyens.arduino.tool.combine.1915545184" name="Arduino combiner" superClass="it.baeyens.arduino.tool.combine"/>
<tool id="it.baeyens.arduino.tool.objcopy.eep.1786257532" name="Arduino tool Create eeprom" superClass="it.baeyens.arduino.tool.objcopy.eep"/>
<tool id="it.baeyens.arduino.tool.objcopy.flash.1768320109" name="Arduino tool Create hex" superClass="it.baeyens.arduino.tool.objcopy.flash"/>
<tool id="it.baeyens.arduino.tool.size.232303691" name="Arduino tool Print Size" superClass="it.baeyens.arduino.tool.size"/>
</toolChain>
</folderInfo>
<sourceEntries>
<entry excluding="MQTT|Touch-Screen|TFTLCD|Adafruit-GFX|Libraries/*/?xamples|Libraries/*/?xtras" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="Adafruit-GFX"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="MQTT"/>
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="TFTLCD"/>
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="Touch-Screen"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="MqttMonitor.null.423915883" name="MqttMonitor"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
</cproject>

64
.project Normal file
View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>MqttMonitor</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>it.baeyens.arduinonature</nature>
</natures>
<linkedResources>
<link>
<name>Libraries/Ethernet</name>
<type>2</type>
<locationURI>ArduinoLibPath/Ethernet</locationURI>
</link>
<link>
<name>Libraries/SPI</name>
<type>2</type>
<locationURI>ArduinoHardwareLibPath/SPI</locationURI>
</link>
<link>
<name>arduino/core</name>
<type>2</type>
<locationURI>ArduinoPlatformPath/arduino</locationURI>
</link>
<link>
<name>arduino/variant</name>
<type>2</type>
<locationURI>ArduinoPinPath/ethernet</locationURI>
</link>
</linkedResources>
<variableList>
<variable>
<name>ArduinoHardwareLibPath</name>
<value>file:/C:/Program%20Files%20(x86)/Arduino/hardware/arduino/avr/libraries</value>
</variable>
<variable>
<name>ArduinoPinPath</name>
<value>file:/C:/Program%20Files%20(x86)/Arduino/hardware/arduino/avr/variants</value>
</variable>
<variable>
<name>ArduinoPlatformPath</name>
<value>file:/C:/Program%20Files%20(x86)/Arduino/hardware/arduino/avr/cores</value>
</variable>
</variableList>
</projectDescription>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="it.baeyens.arduino.core.toolChain.release.1898938335" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider class="it.baeyens.arduino.toolchain.ArduinoLanguageProvider" console="false" env-hash="-1594108237331115536" id="it.baeyens.arduino.languageSettingsProvider" keep-relative-paths="false" name="Arduino Compiler Settings" parameter="${COMMAND} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
</extension>
</configuration>
</project>

View File

@ -0,0 +1,522 @@
eclipse.preferences.version=1
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.ARCHITECTURE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.ARCHITECTURE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.ARCHITECTURE/value=AVR
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.ARCHIVE_FILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.ARCHIVE_FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.ARCHIVE_FILE/value=arduino.ar
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOARD/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOARD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOARD/value=ethernet
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.EXTENDED_FUSES/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.EXTENDED_FUSES/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.EXTENDED_FUSES/value=0x05
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.FILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.FILE/value=optiboot/optiboot_atmega328.hex
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.HIGH_FUSES/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.HIGH_FUSES/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.HIGH_FUSES/value=0xde
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.LOCK_BITS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.LOCK_BITS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.LOCK_BITS/value=0x0F
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.LOW_FUSES/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.LOW_FUSES/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.LOW_FUSES/value=0xff
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.TOOL/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.TOOL/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.TOOL/value=avrdude
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.UNLOCK_BITS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.UNLOCK_BITS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BOOTLOADER.UNLOCK_BITS/value=0x3F
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.ARCH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.ARCH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.ARCH/value=AVR
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.BOARD/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.BOARD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.BOARD/value=AVR_ETHERNET
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.CORE.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.CORE.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.CORE.PATH/value=${A.RUNTIME.PLATFORM.PATH}/cores/${A.BUILD.CORE}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.CORE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.CORE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.CORE/value=${JANTJE.BUILD_CORE}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.EXTRA_FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.EXTRA_FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.EXTRA_FLAGS/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.F_CPU/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.F_CPU/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.F_CPU/value=16000000L
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.MCU/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.MCU/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.MCU/value=atmega328p
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.PATH/value=${ProjDirPath}/${ConfigName}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.PROJECT_NAME/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.PROJECT_NAME/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.PROJECT_NAME/value=${ProjName}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.USB_FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.USB_FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.USB_FLAGS/value=-DUSB_VID\=${A.BUILD.VID} -DUSB_PID\=${A.BUILD.PID} -DUSB_MANUFACTURER\=\\"${A.BUILD.USB_MANUFACTURER}\\" -DUSB_PRODUCT\=\\"${A.BUILD.USB_PRODUCT}\\"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.USB_MANUFACTURER/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.USB_MANUFACTURER/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.USB_MANUFACTURER/value="Unknown"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.USE_ARCHIVER/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.USE_ARCHIVER/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.USE_ARCHIVER/value=true
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.VARIANT.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.VARIANT.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.VARIANT.PATH/value=${A.RUNTIME.PLATFORM.PATH}/variants/${A.BUILD.VARIANT}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.VARIANT/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.VARIANT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.VARIANT/value=${JANTJE.BUILD_VARIANT}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.WARN_DATA_PERCENTAGE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.WARN_DATA_PERCENTAGE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.BUILD.WARN_DATA_PERCENTAGE/value=75
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CMD.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CMD.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CMD.PATH/value=${A.TOOLS.AVRDUDE.CMD.PATH}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CMD/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CMD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CMD/value=${A.TOOLS.AVRDUDE.CMD}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.AR.CMD/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.AR.CMD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.AR.CMD/value=avr-ar
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.AR.EXTRA_FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.AR.EXTRA_FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.AR.EXTRA_FLAGS/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.AR.FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.AR.FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.AR.FLAGS/value=rcs
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.CMD/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.CMD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.CMD/value=avr-gcc
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.ELF.CMD/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.ELF.CMD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.ELF.CMD/value=avr-gcc
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.ELF.EXTRA_FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.ELF.EXTRA_FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.ELF.EXTRA_FLAGS/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.ELF.FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.ELF.FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.ELF.FLAGS/value=${A.COMPILER.WARNING_FLAGS} -Os -Wl,--gc-sections
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.EXTRA_FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.EXTRA_FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.EXTRA_FLAGS/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.C.FLAGS/value=-c -g -Os ${A.COMPILER.WARNING_FLAGS} -ffunction-sections -fdata-sections -MMD
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.CPP.CMD/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.CPP.CMD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.CPP.CMD/value=avr-g++
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.CPP.EXTRA_FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.CPP.EXTRA_FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.CPP.EXTRA_FLAGS/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.CPP.FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.CPP.FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.CPP.FLAGS/value=-c -g -Os ${A.COMPILER.WARNING_FLAGS} -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.ELF2HEX.CMD/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.ELF2HEX.CMD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.ELF2HEX.CMD/value=avr-objcopy
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.ELF2HEX.EXTRA_FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.ELF2HEX.EXTRA_FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.ELF2HEX.EXTRA_FLAGS/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.ELF2HEX.FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.ELF2HEX.FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.ELF2HEX.FLAGS/value=-O ihex -R .eeprom
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.LDFLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.LDFLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.LDFLAGS/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.OBJCOPY.CMD/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.OBJCOPY.CMD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.OBJCOPY.CMD/value=avr-objcopy
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.OBJCOPY.EEP.FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.OBJCOPY.EEP.FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.OBJCOPY.EEP.FLAGS/value=-O ihex -j .eeprom --set-section-flags\=.eeprom\=alloc,load --no-change-warnings --change-section-lma .eeprom\=0
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.PATH/value=${A.RUNTIME.TOOLS.AVR-GCC.PATH}/bin/
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.S.EXTRA_FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.S.EXTRA_FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.S.EXTRA_FLAGS/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.S.FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.S.FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.S.FLAGS/value=-c -g -x assembler-with-cpp
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.SIZE.CMD/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.SIZE.CMD/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.SIZE.CMD/value=avr-size
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.ALL/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.ALL/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.ALL/value=-Wall -Wextra
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.DEFAULT/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.DEFAULT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.DEFAULT/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.MORE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.MORE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.MORE/value=-Wall
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.NONE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.NONE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS.NONE/value=-w
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.COMPILER.WARNING_FLAGS/value=-w
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONFIG.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONFIG.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONFIG.PATH/value=${A.TOOLS.AVRDUDE.CONFIG.PATH}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.ERROR.FILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.ERROR.FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.ERROR.FILE/value=stderr.txt
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.LENGTH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.LENGTH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.LENGTH/value=500
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.LINES/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.LINES/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.LINES/value=4
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.OUTPUT.FILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.OUTPUT.FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.CONSOLE.OUTPUT.FILE/value=stdout.txt
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.DIVIDER.SIZE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.DIVIDER.SIZE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.DIVIDER.SIZE/value=2
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.FONT/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.FONT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.FONT/value=Monospaced,plain,12
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.LANGUAGES.CURRENT/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.LANGUAGES.CURRENT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.LANGUAGES.CURRENT/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.TABS.SIZE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.TABS.SIZE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.TABS.SIZE/value=2
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.HEIGHT.DEFAULT/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.HEIGHT.DEFAULT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.HEIGHT.DEFAULT/value=600
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.HEIGHT.MIN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.HEIGHT.MIN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.HEIGHT.MIN/value=290
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.WIDTH.DEFAULT/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.WIDTH.DEFAULT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.WIDTH.DEFAULT/value=500
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.WIDTH.MIN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.WIDTH.MIN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EDITOR.WINDOW.WIDTH.MIN/value=400
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.DTS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.DTS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.DTS/value=0
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.LOCAL/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.LOCAL/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.LOCAL/value=1456935069
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.UTC/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.UTC/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.UTC/value=1456931469
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.ZONE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.ZONE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.EXTRA.TIME.ZONE/value=3600
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.LAST.IDE.1.6.5.DATERUN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.LAST.IDE.1.6.5.DATERUN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.LAST.IDE.1.6.5.DATERUN/value=1456917226
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.LAST.IDE.1.6.5.HARDWAREPATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.LAST.IDE.1.6.5.HARDWAREPATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.LAST.IDE.1.6.5.HARDWAREPATH/value=C\:\\Program Files (x86)\\Arduino\\hardware
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.LAST.SKETCH.COUNT/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.LAST.SKETCH.COUNT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.LAST.SKETCH.COUNT/value=0
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.NAME/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.NAME/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.NAME/value=Arduino Ethernet
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.PATH/value=${A.TOOLS.AVRDUDE.PATH}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.PREPROC.IMPORTS.LIST/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.PREPROC.IMPORTS.LIST/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.PREPROC.IMPORTS.LIST/value=java.applet.*,java.awt.Dimension,java.awt.Frame,java.awt.event.MouseEvent,java.awt.event.KeyEvent,java.awt.event.FocusEvent,java.awt.Image,java.io.*,java.net.*,java.text.*,java.util.*,java.util.zip.*,java.util.regex.*
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.PROGRAMMER/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.PROGRAMMER/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.PROGRAMMER/value=arduino\:avrispmkii
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.AR.PATTERN.1/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.AR.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.AR.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.AR.CMD}" ${A.COMPILER.AR.FLAGS} ${A.COMPILER.AR.EXTRA_FLAGS} "${A.BUILD.PATH}/${A.ARCHIVE_FILE}"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.AR.PATTERN.2/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.AR.PATTERN.2/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.AR.PATTERN.2/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.AR.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.AR.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.AR.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.AR.CMD}" ${A.COMPILER.AR.FLAGS} ${A.COMPILER.AR.EXTRA_FLAGS} "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" "${A.OBJECT_FILE}"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.COMBINE.PATTERN.1/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.COMBINE.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.COMBINE.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.C.ELF.CMD}" ${A.COMPILER.C.ELF.FLAGS} -mmcu\=${A.BUILD.MCU} ${A.COMPILER.C.ELF.EXTRA_FLAGS} -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.COMBINE.PATTERN.2/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.COMBINE.PATTERN.2/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.COMBINE.PATTERN.2/value=\ "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" "-L${A.BUILD.PATH}" -lm
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.COMBINE.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.COMBINE.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.COMBINE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.ELF.CMD}" ${A.COMPILER.C.ELF.FLAGS} -mmcu\=${A.BUILD.MCU} ${A.COMPILER.C.ELF.EXTRA_FLAGS} -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" ${A.OBJECT_FILES} "${A.BUILD.PATH}/${A.ARCHIVE_FILE}" "-L${A.BUILD.PATH}" -lm
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN.1/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.C.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} ${A.COMPILER.C.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN.2/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN.2/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN.2/value=\ -o
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN.3/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN.3/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN.3/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.C.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.C.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} ${A.COMPILER.C.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN.1/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.CPP.CMD}" ${A.COMPILER.CPP.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} ${A.COMPILER.CPP.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN.2/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN.2/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN.2/value=\ -o
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN.3/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN.3/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN.3/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.CPP.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.CPP.CMD}" ${A.COMPILER.CPP.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} ${A.COMPILER.CPP.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.EEP.PATTERN.1/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.EEP.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.EEP.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.OBJCOPY.CMD}" ${A.COMPILER.OBJCOPY.EEP.FLAGS} ${A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.eep"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.EEP.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.EEP.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.EEP.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.OBJCOPY.CMD}" ${A.COMPILER.OBJCOPY.EEP.FLAGS} ${A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.eep"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.HEX.PATTERN.1/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.HEX.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.HEX.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.ELF2HEX.CMD}" ${A.COMPILER.ELF2HEX.FLAGS} ${A.COMPILER.ELF2HEX.EXTRA_FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.HEX.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.HEX.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OBJCOPY.HEX.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.ELF2HEX.CMD}" ${A.COMPILER.ELF2HEX.FLAGS} ${A.COMPILER.ELF2HEX.EXTRA_FLAGS} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OUTPUT.SAVE_FILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OUTPUT.SAVE_FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OUTPUT.SAVE_FILE/value=${A.BUILD.PROJECT_NAME}.${A.BUILD.VARIANT}.hex
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OUTPUT.TMP_FILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OUTPUT.TMP_FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.OUTPUT.TMP_FILE/value=${A.BUILD.PROJECT_NAME}.hex
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN.1/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.S.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} ${A.COMPILER.S.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN.2/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN.2/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN.2/value=\ -o
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN.3/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN.3/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN.3/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.S.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.S.FLAGS} -mmcu\=${A.BUILD.MCU} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} ${A.COMPILER.S.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.PATTERN.1/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.PATTERN.1/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.REGEX.DATA/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.REGEX.DATA/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.REGEX.DATA/value=^(?\:\\.data|\\.bss|\\.noinit)\\s+([0-9]+).*
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.REGEX.EEPROM/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.REGEX.EEPROM/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.REGEX.EEPROM/value=^(?\:\\.eeprom)\\s+([0-9]+).*
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.REGEX/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.REGEX/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RECIPE.SIZE.REGEX/value=^(?\:\\.text|\\.data|\\.bootloader)\\s+([0-9]+).*
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.DISPLAY/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.DISPLAY/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.DISPLAY/value=1
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.OPTIONS.MEMORY.INITIAL/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.OPTIONS.MEMORY.INITIAL/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.OPTIONS.MEMORY.INITIAL/value=64
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.OPTIONS.MEMORY.MAXIMUM/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.OPTIONS.MEMORY.MAXIMUM/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.OPTIONS.MEMORY.MAXIMUM/value=256
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.OPTIONS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.OPTIONS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.OPTIONS/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.PRESENT.BGCOLOR/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.PRESENT.BGCOLOR/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.PRESENT.BGCOLOR/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.PRESENT.STOP.COLOR/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.PRESENT.STOP.COLOR/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUN.PRESENT.STOP.COLOR/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.HARDWARE.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.HARDWARE.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.HARDWARE.PATH/value=C\:\\Program Files (x86)\\Arduino\\hardware\\arduino
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.IDE.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.IDE.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.IDE.PATH/value=C\:\\Program Files (x86)\\Arduino
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.IDE.VERSION/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.IDE.VERSION/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.IDE.VERSION/value=10605
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.OS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.OS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.OS/value=windows
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.PLATFORM.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.PLATFORM.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.PLATFORM.PATH/value=C\:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVR-GCC-4.8.1-ARDUINO5.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVR-GCC-4.8.1-ARDUINO5.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVR-GCC-4.8.1-ARDUINO5.PATH/value=C\:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVR-GCC.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVR-GCC.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVR-GCC.PATH/value=C\:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVRDUDE-6.0.1-ARDUINO5.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVRDUDE-6.0.1-ARDUINO5.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVRDUDE-6.0.1-ARDUINO5.PATH/value=C\:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVRDUDE.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVRDUDE.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.RUNTIME.TOOLS.AVRDUDE.PATH/value=C\:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.DATABITS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.DATABITS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.DATABITS/value=8
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.DEBUG_RATE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.DEBUG_RATE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.DEBUG_RATE/value=9600
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.PARITY/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.PARITY/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.PARITY/value=N
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.PORT/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.PORT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.PORT/value=COM1
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.STOPBITS/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.STOPBITS/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SERIAL.STOPBITS/value=1
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SKETCHBOOK.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SKETCHBOOK.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SKETCHBOOK.PATH/value=C\:\\Users\\dehottgw\\Documents\\Arduino
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SOFTWARE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SOFTWARE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.SOFTWARE/value=ARDUINO
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TARGET_PACKAGE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TARGET_PACKAGE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TARGET_PACKAGE/value=arduino
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TARGET_PLATFORM/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TARGET_PLATFORM/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TARGET_PLATFORM/value=avr
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.QUIET/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.QUIET/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.QUIET/value=-q -q
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.VERBOSE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.VERBOSE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.BOOTLOADER.PARAMS.VERBOSE/value=-v
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.BOOTLOADER.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.BOOTLOADER.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.BOOTLOADER.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.BOOTLOADER.VERBOSE} -p${A.BUILD.MCU} -c${A.PROTOCOL} ${A.PROGRAM.EXTRA_PARAMS} "-Uflash\:w\:${A.RUNTIME.PLATFORM.PATH}/bootloaders/${A.BOOTLOADER.FILE}\:i" -Ulock\:w\:${A.BOOTLOADER.LOCK_BITS}\:m
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.CMD.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.CMD.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.CMD.PATH/value=${A.PATH}/bin/avrdude
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.CONFIG.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.CONFIG.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.CONFIG.PATH/value=${A.PATH}/etc/avrdude.conf
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.ERASE.PARAMS.QUIET/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.ERASE.PARAMS.QUIET/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.ERASE.PARAMS.QUIET/value=-q -q
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.ERASE.PARAMS.VERBOSE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.ERASE.PARAMS.VERBOSE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.ERASE.PARAMS.VERBOSE/value=-v
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.ERASE.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.ERASE.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.ERASE.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.ERASE.VERBOSE} -p${A.BUILD.MCU} -c${A.PROTOCOL} ${A.PROGRAM.EXTRA_PARAMS} -e -Ulock\:w\:${A.BOOTLOADER.UNLOCK_BITS}\:m -Uefuse\:w\:${A.BOOTLOADER.EXTENDED_FUSES}\:m -Uhfuse\:w\:${A.BOOTLOADER.HIGH_FUSES}\:m -Ulfuse\:w\:${A.BOOTLOADER.LOW_FUSES}\:m
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PATH/value=${A.RUNTIME.TOOLS.AVRDUDE.PATH}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.QUIET/value=-q -q
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.VERBOSE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.VERBOSE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PROGRAM.PARAMS.VERBOSE/value=-v
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PROGRAM.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PROGRAM.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.PROGRAM.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.PROGRAM.VERBOSE} -p${A.BUILD.MCU} -c${A.PROTOCOL} ${A.PROGRAM.EXTRA_PARAMS} "-Uflash\:w\:${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex\:i"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.QUIET/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.QUIET/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.QUIET/value=-q -q
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.VERBOSE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.VERBOSE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.UPLOAD.PARAMS.VERBOSE/value=-v
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.UPLOAD.PATTERN/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.UPLOAD.PATTERN/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.TOOLS.AVRDUDE.UPLOAD.PATTERN/value="${A.CMD.PATH}" "-C${A.CONFIG.PATH}" ${A.UPLOAD.VERBOSE} -p${A.BUILD.MCU} -c${A.UPLOAD.PROTOCOL} -P${A.SERIAL.PORT} -b${A.UPLOAD.SPEED} -D "-Uflash\:w\:${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.hex\:i"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.MAXIMUM_DATA_SIZE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.MAXIMUM_DATA_SIZE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.MAXIMUM_DATA_SIZE/value=2048
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.MAXIMUM_SIZE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.MAXIMUM_SIZE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.MAXIMUM_SIZE/value=32256
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.PROTOCOL/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.PROTOCOL/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.PROTOCOL/value=arduino
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.SPEED/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.SPEED/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.SPEED/value=115200
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.TOOL/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.TOOL/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.TOOL/value=avrdude
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.USING/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.USING/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.UPLOAD.USING/value=bootloader
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.VERSION/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.VERSION/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/A.VERSION/value=1.6.8
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.ARCHITECTURE_ID/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.ARCHITECTURE_ID/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.ARCHITECTURE_ID/value=avr
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BOARDS_FILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BOARDS_FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BOARDS_FILE/value=C\:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\boards.txt
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BOARD_ID/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BOARD_ID/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BOARD_ID/value=ethernet
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BOARD_NAME/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BOARD_NAME/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BOARD_NAME/value=Arduino Ethernet
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BUILD_CORE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BUILD_CORE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BUILD_CORE/value=arduino
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BUILD_VARIANT/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BUILD_VARIANT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.BUILD_VARIANT/value=ethernet
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.COM_PORT/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.COM_PORT/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.COM_PORT/value=/dev/tty.usbmodemFD111
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.COM_PROGMR/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.COM_PROGMR/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.COM_PROGMR/value=Default
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.EXTRA.C.COMPILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.EXTRA.C.COMPILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.EXTRA.C.COMPILE/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.EXTRA.COMPILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.EXTRA.COMPILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.EXTRA.COMPILE/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.EXTRA.CPP.COMPILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.EXTRA.CPP.COMPILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.EXTRA.CPP.COMPILE/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.PACKAGE_ID/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.PACKAGE_ID/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.PACKAGE_ID/value=arduino
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.PLATFORM_FILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.PLATFORM_FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.PLATFORM_FILE/value=C\:/Program Files (x86)/Arduino/hardware/arduino/avr/platform.txt
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.PROCESSOR/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.PROCESSOR/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.PROCESSOR/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.REFERENCED_PLATFORM_FILE/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.REFERENCED_PLATFORM_FILE/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.REFERENCED_PLATFORM_FILE/value=
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.SIZE.SWITCH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.SIZE.SWITCH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.SIZE.SWITCH/value=${A.RECIPE.SIZE.PATTERN}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.SIZE_COMMAND/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.SIZE_COMMAND/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.SIZE_COMMAND/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" --format\=avr --mcu\=${A.BUILD.MCU} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.WARNING_LEVEL/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.WARNING_LEVEL/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/JANTJE.WARNING_LEVEL/value=\ -Wall
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/PATH/delimiter=;
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/PATH/operation=replace
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/PATH/value=${A.COMPILER.PATH}${PathDelimiter}${A.BUILD.GENERIC.PATH}${PathDelimiter}${A.RUNTIME.IDE.PATH}/hardware/tools/avr/utils/bin${PathDelimiter}${A.RUNTIME.IDE.PATH}${PathDelimiter}${PATH}
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/append=true
environment/project/it.baeyens.arduino.core.toolChain.release.1898938335/appendContributed=true

BIN
Adafruit-GFX/.DS_Store vendored Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

155
Adafruit-GFX/Adafruit_GFX.h Normal file
View File

@ -0,0 +1,155 @@
#ifndef _ADAFRUIT_GFX_H
#define _ADAFRUIT_GFX_H
#if ARDUINO >= 100
#include "Arduino.h"
#include "Print.h"
#else
#include "WProgram.h"
#endif
#include "gfxfont.h"
class Adafruit_GFX : public Print {
public:
Adafruit_GFX(int16_t w, int16_t h); // Constructor
// This MUST be defined by the subclass:
virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0;
// These MAY be overridden by the subclass to provide device-specific
// optimized code. Otherwise 'generic' versions are used.
virtual void
drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color),
drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color),
drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color),
drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color),
fillScreen(uint16_t color),
invertDisplay(boolean i);
// These exist only with Adafruit_GFX (no subclass overrides)
void
drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
uint16_t color),
fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color),
fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,
int16_t delta, uint16_t color),
drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
int16_t x2, int16_t y2, uint16_t color),
fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,
int16_t x2, int16_t y2, uint16_t color),
drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
int16_t radius, uint16_t color),
fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h,
int16_t radius, uint16_t color),
drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
int16_t w, int16_t h, uint16_t color),
drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
int16_t w, int16_t h, uint16_t color, uint16_t bg),
drawBitmap(int16_t x, int16_t y, uint8_t *bitmap,
int16_t w, int16_t h, uint16_t color),
drawBitmap(int16_t x, int16_t y, uint8_t *bitmap,
int16_t w, int16_t h, uint16_t color, uint16_t bg),
drawXBitmap(int16_t x, int16_t y, const uint8_t *bitmap,
int16_t w, int16_t h, uint16_t color),
drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color,
uint16_t bg, uint8_t size),
setCursor(int16_t x, int16_t y),
setTextColor(uint16_t c),
setTextColor(uint16_t c, uint16_t bg),
setTextSize(uint8_t s),
setTextWrap(boolean w),
setRotation(uint8_t r),
cp437(boolean x=true),
setFont(const GFXfont *f = NULL),
getTextBounds(char *string, int16_t x, int16_t y,
int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h),
getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y,
int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h);
#if ARDUINO >= 100
virtual size_t write(uint8_t);
#else
virtual void write(uint8_t);
#endif
int16_t height(void) const;
int16_t width(void) const;
uint8_t getRotation(void) const;
// get current cursor position (get rotation safe maximum values, using: width() for x, height() for y)
int16_t getCursorX(void) const;
int16_t getCursorY(void) const;
protected:
const int16_t
WIDTH, HEIGHT; // This is the 'raw' display w/h - never changes
int16_t
_width, _height, // Display w/h as modified by current rotation
cursor_x, cursor_y;
uint16_t
textcolor, textbgcolor;
uint8_t
textsize,
rotation;
boolean
wrap, // If set, 'wrap' text at right edge of display
_cp437; // If set, use correct CP437 charset (default is off)
GFXfont
*gfxFont;
};
class Adafruit_GFX_Button {
public:
Adafruit_GFX_Button(void);
void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y,
uint8_t w, uint8_t h, uint16_t outline, uint16_t fill,
uint16_t textcolor, char *label, uint8_t textsize);
void drawButton(boolean inverted = false);
boolean contains(int16_t x, int16_t y);
void press(boolean p);
boolean isPressed();
boolean justPressed();
boolean justReleased();
private:
Adafruit_GFX *_gfx;
int16_t _x, _y;
uint16_t _w, _h;
uint8_t _textsize;
uint16_t _outlinecolor, _fillcolor, _textcolor;
char _label[10];
boolean currstate, laststate;
};
class GFXcanvas1 : public Adafruit_GFX {
public:
GFXcanvas1(uint16_t w, uint16_t h);
~GFXcanvas1(void);
void drawPixel(int16_t x, int16_t y, uint16_t color),
fillScreen(uint16_t color);
uint8_t *getBuffer(void);
private:
uint8_t *buffer;
};
class GFXcanvas16 : public Adafruit_GFX {
GFXcanvas16(uint16_t w, uint16_t h);
~GFXcanvas16(void);
void drawPixel(int16_t x, int16_t y, uint16_t color),
fillScreen(uint16_t color);
uint16_t *getBuffer(void);
private:
uint16_t *buffer;
};
#endif // _ADAFRUIT_GFX_H

24
Adafruit-GFX/gfxfont.h Normal file
View File

@ -0,0 +1,24 @@
// Font structures for newer Adafruit_GFX (1.1 and later).
// Example fonts are included in 'Fonts' directory.
// To use a font in your Arduino sketch, #include the corresponding .h
// file and pass address of GFXfont struct to setFont(). Pass NULL to
// revert to 'classic' fixed-space bitmap font.
#ifndef _GFXFONT_H_
#define _GFXFONT_H_
typedef struct { // Data stored PER GLYPH
uint16_t bitmapOffset; // Pointer into GFXfont->bitmap
uint8_t width, height; // Bitmap dimensions in pixels
uint8_t xAdvance; // Distance to advance cursor (x axis)
int8_t xOffset, yOffset; // Dist from cursor pos to UL corner
} GFXglyph;
typedef struct { // Data stored for FONT AS A WHOLE:
uint8_t *bitmap; // Glyph bitmaps, concatenated
GFXglyph *glyph; // Glyph array
uint8_t first, last; // ASCII extents
uint8_t yAdvance; // Newline distance (y axis)
} GFXfont;
#endif // _GFXFONT_H_

276
Adafruit-GFX/glcdfont.c Normal file
View File

@ -0,0 +1,276 @@
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
// See gfxfont.h for newer custom bitmap font info.
#ifndef FONT5X7_H
#define FONT5X7_H
#ifdef __AVR__
#include <avr/io.h>
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#else
#define PROGMEM
#endif
// Standard ASCII 5x7 font
static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x5B, 0x4F, 0x5B, 0x3E,
0x3E, 0x6B, 0x4F, 0x6B, 0x3E,
0x1C, 0x3E, 0x7C, 0x3E, 0x1C,
0x18, 0x3C, 0x7E, 0x3C, 0x18,
0x1C, 0x57, 0x7D, 0x57, 0x1C,
0x1C, 0x5E, 0x7F, 0x5E, 0x1C,
0x00, 0x18, 0x3C, 0x18, 0x00,
0xFF, 0xE7, 0xC3, 0xE7, 0xFF,
0x00, 0x18, 0x24, 0x18, 0x00,
0xFF, 0xE7, 0xDB, 0xE7, 0xFF,
0x30, 0x48, 0x3A, 0x06, 0x0E,
0x26, 0x29, 0x79, 0x29, 0x26,
0x40, 0x7F, 0x05, 0x05, 0x07,
0x40, 0x7F, 0x05, 0x25, 0x3F,
0x5A, 0x3C, 0xE7, 0x3C, 0x5A,
0x7F, 0x3E, 0x1C, 0x1C, 0x08,
0x08, 0x1C, 0x1C, 0x3E, 0x7F,
0x14, 0x22, 0x7F, 0x22, 0x14,
0x5F, 0x5F, 0x00, 0x5F, 0x5F,
0x06, 0x09, 0x7F, 0x01, 0x7F,
0x00, 0x66, 0x89, 0x95, 0x6A,
0x60, 0x60, 0x60, 0x60, 0x60,
0x94, 0xA2, 0xFF, 0xA2, 0x94,
0x08, 0x04, 0x7E, 0x04, 0x08,
0x10, 0x20, 0x7E, 0x20, 0x10,
0x08, 0x08, 0x2A, 0x1C, 0x08,
0x08, 0x1C, 0x2A, 0x08, 0x08,
0x1E, 0x10, 0x10, 0x10, 0x10,
0x0C, 0x1E, 0x0C, 0x1E, 0x0C,
0x30, 0x38, 0x3E, 0x38, 0x30,
0x06, 0x0E, 0x3E, 0x0E, 0x06,
0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x5F, 0x00, 0x00,
0x00, 0x07, 0x00, 0x07, 0x00,
0x14, 0x7F, 0x14, 0x7F, 0x14,
0x24, 0x2A, 0x7F, 0x2A, 0x12,
0x23, 0x13, 0x08, 0x64, 0x62,
0x36, 0x49, 0x56, 0x20, 0x50,
0x00, 0x08, 0x07, 0x03, 0x00,
0x00, 0x1C, 0x22, 0x41, 0x00,
0x00, 0x41, 0x22, 0x1C, 0x00,
0x2A, 0x1C, 0x7F, 0x1C, 0x2A,
0x08, 0x08, 0x3E, 0x08, 0x08,
0x00, 0x80, 0x70, 0x30, 0x00,
0x08, 0x08, 0x08, 0x08, 0x08,
0x00, 0x00, 0x60, 0x60, 0x00,
0x20, 0x10, 0x08, 0x04, 0x02,
0x3E, 0x51, 0x49, 0x45, 0x3E,
0x00, 0x42, 0x7F, 0x40, 0x00,
0x72, 0x49, 0x49, 0x49, 0x46,
0x21, 0x41, 0x49, 0x4D, 0x33,
0x18, 0x14, 0x12, 0x7F, 0x10,
0x27, 0x45, 0x45, 0x45, 0x39,
0x3C, 0x4A, 0x49, 0x49, 0x31,
0x41, 0x21, 0x11, 0x09, 0x07,
0x36, 0x49, 0x49, 0x49, 0x36,
0x46, 0x49, 0x49, 0x29, 0x1E,
0x00, 0x00, 0x14, 0x00, 0x00,
0x00, 0x40, 0x34, 0x00, 0x00,
0x00, 0x08, 0x14, 0x22, 0x41,
0x14, 0x14, 0x14, 0x14, 0x14,
0x00, 0x41, 0x22, 0x14, 0x08,
0x02, 0x01, 0x59, 0x09, 0x06,
0x3E, 0x41, 0x5D, 0x59, 0x4E,
0x7C, 0x12, 0x11, 0x12, 0x7C,
0x7F, 0x49, 0x49, 0x49, 0x36,
0x3E, 0x41, 0x41, 0x41, 0x22,
0x7F, 0x41, 0x41, 0x41, 0x3E,
0x7F, 0x49, 0x49, 0x49, 0x41,
0x7F, 0x09, 0x09, 0x09, 0x01,
0x3E, 0x41, 0x41, 0x51, 0x73,
0x7F, 0x08, 0x08, 0x08, 0x7F,
0x00, 0x41, 0x7F, 0x41, 0x00,
0x20, 0x40, 0x41, 0x3F, 0x01,
0x7F, 0x08, 0x14, 0x22, 0x41,
0x7F, 0x40, 0x40, 0x40, 0x40,
0x7F, 0x02, 0x1C, 0x02, 0x7F,
0x7F, 0x04, 0x08, 0x10, 0x7F,
0x3E, 0x41, 0x41, 0x41, 0x3E,
0x7F, 0x09, 0x09, 0x09, 0x06,
0x3E, 0x41, 0x51, 0x21, 0x5E,
0x7F, 0x09, 0x19, 0x29, 0x46,
0x26, 0x49, 0x49, 0x49, 0x32,
0x03, 0x01, 0x7F, 0x01, 0x03,
0x3F, 0x40, 0x40, 0x40, 0x3F,
0x1F, 0x20, 0x40, 0x20, 0x1F,
0x3F, 0x40, 0x38, 0x40, 0x3F,
0x63, 0x14, 0x08, 0x14, 0x63,
0x03, 0x04, 0x78, 0x04, 0x03,
0x61, 0x59, 0x49, 0x4D, 0x43,
0x00, 0x7F, 0x41, 0x41, 0x41,
0x02, 0x04, 0x08, 0x10, 0x20,
0x00, 0x41, 0x41, 0x41, 0x7F,
0x04, 0x02, 0x01, 0x02, 0x04,
0x40, 0x40, 0x40, 0x40, 0x40,
0x00, 0x03, 0x07, 0x08, 0x00,
0x20, 0x54, 0x54, 0x78, 0x40,
0x7F, 0x28, 0x44, 0x44, 0x38,
0x38, 0x44, 0x44, 0x44, 0x28,
0x38, 0x44, 0x44, 0x28, 0x7F,
0x38, 0x54, 0x54, 0x54, 0x18,
0x00, 0x08, 0x7E, 0x09, 0x02,
0x18, 0xA4, 0xA4, 0x9C, 0x78,
0x7F, 0x08, 0x04, 0x04, 0x78,
0x00, 0x44, 0x7D, 0x40, 0x00,
0x20, 0x40, 0x40, 0x3D, 0x00,
0x7F, 0x10, 0x28, 0x44, 0x00,
0x00, 0x41, 0x7F, 0x40, 0x00,
0x7C, 0x04, 0x78, 0x04, 0x78,
0x7C, 0x08, 0x04, 0x04, 0x78,
0x38, 0x44, 0x44, 0x44, 0x38,
0xFC, 0x18, 0x24, 0x24, 0x18,
0x18, 0x24, 0x24, 0x18, 0xFC,
0x7C, 0x08, 0x04, 0x04, 0x08,
0x48, 0x54, 0x54, 0x54, 0x24,
0x04, 0x04, 0x3F, 0x44, 0x24,
0x3C, 0x40, 0x40, 0x20, 0x7C,
0x1C, 0x20, 0x40, 0x20, 0x1C,
0x3C, 0x40, 0x30, 0x40, 0x3C,
0x44, 0x28, 0x10, 0x28, 0x44,
0x4C, 0x90, 0x90, 0x90, 0x7C,
0x44, 0x64, 0x54, 0x4C, 0x44,
0x00, 0x08, 0x36, 0x41, 0x00,
0x00, 0x00, 0x77, 0x00, 0x00,
0x00, 0x41, 0x36, 0x08, 0x00,
0x02, 0x01, 0x02, 0x04, 0x02,
0x3C, 0x26, 0x23, 0x26, 0x3C,
0x1E, 0xA1, 0xA1, 0x61, 0x12,
0x3A, 0x40, 0x40, 0x20, 0x7A,
0x38, 0x54, 0x54, 0x55, 0x59,
0x21, 0x55, 0x55, 0x79, 0x41,
0x22, 0x54, 0x54, 0x78, 0x42, // a-umlaut
0x21, 0x55, 0x54, 0x78, 0x40,
0x20, 0x54, 0x55, 0x79, 0x40,
0x0C, 0x1E, 0x52, 0x72, 0x12,
0x39, 0x55, 0x55, 0x55, 0x59,
0x39, 0x54, 0x54, 0x54, 0x59,
0x39, 0x55, 0x54, 0x54, 0x58,
0x00, 0x00, 0x45, 0x7C, 0x41,
0x00, 0x02, 0x45, 0x7D, 0x42,
0x00, 0x01, 0x45, 0x7C, 0x40,
0x7D, 0x12, 0x11, 0x12, 0x7D, // A-umlaut
0xF0, 0x28, 0x25, 0x28, 0xF0,
0x7C, 0x54, 0x55, 0x45, 0x00,
0x20, 0x54, 0x54, 0x7C, 0x54,
0x7C, 0x0A, 0x09, 0x7F, 0x49,
0x32, 0x49, 0x49, 0x49, 0x32,
0x3A, 0x44, 0x44, 0x44, 0x3A, // o-umlaut
0x32, 0x4A, 0x48, 0x48, 0x30,
0x3A, 0x41, 0x41, 0x21, 0x7A,
0x3A, 0x42, 0x40, 0x20, 0x78,
0x00, 0x9D, 0xA0, 0xA0, 0x7D,
0x3D, 0x42, 0x42, 0x42, 0x3D, // O-umlaut
0x3D, 0x40, 0x40, 0x40, 0x3D,
0x3C, 0x24, 0xFF, 0x24, 0x24,
0x48, 0x7E, 0x49, 0x43, 0x66,
0x2B, 0x2F, 0xFC, 0x2F, 0x2B,
0xFF, 0x09, 0x29, 0xF6, 0x20,
0xC0, 0x88, 0x7E, 0x09, 0x03,
0x20, 0x54, 0x54, 0x79, 0x41,
0x00, 0x00, 0x44, 0x7D, 0x41,
0x30, 0x48, 0x48, 0x4A, 0x32,
0x38, 0x40, 0x40, 0x22, 0x7A,
0x00, 0x7A, 0x0A, 0x0A, 0x72,
0x7D, 0x0D, 0x19, 0x31, 0x7D,
0x26, 0x29, 0x29, 0x2F, 0x28,
0x26, 0x29, 0x29, 0x29, 0x26,
0x30, 0x48, 0x4D, 0x40, 0x20,
0x38, 0x08, 0x08, 0x08, 0x08,
0x08, 0x08, 0x08, 0x08, 0x38,
0x2F, 0x10, 0xC8, 0xAC, 0xBA,
0x2F, 0x10, 0x28, 0x34, 0xFA,
0x00, 0x00, 0x7B, 0x00, 0x00,
0x08, 0x14, 0x2A, 0x14, 0x22,
0x22, 0x14, 0x2A, 0x14, 0x08,
0x55, 0x00, 0x55, 0x00, 0x55, // #176 (25% block) missing in old code
0xAA, 0x55, 0xAA, 0x55, 0xAA, // 50% block
0xFF, 0x55, 0xFF, 0x55, 0xFF, // 75% block
0x00, 0x00, 0x00, 0xFF, 0x00,
0x10, 0x10, 0x10, 0xFF, 0x00,
0x14, 0x14, 0x14, 0xFF, 0x00,
0x10, 0x10, 0xFF, 0x00, 0xFF,
0x10, 0x10, 0xF0, 0x10, 0xF0,
0x14, 0x14, 0x14, 0xFC, 0x00,
0x14, 0x14, 0xF7, 0x00, 0xFF,
0x00, 0x00, 0xFF, 0x00, 0xFF,
0x14, 0x14, 0xF4, 0x04, 0xFC,
0x14, 0x14, 0x17, 0x10, 0x1F,
0x10, 0x10, 0x1F, 0x10, 0x1F,
0x14, 0x14, 0x14, 0x1F, 0x00,
0x10, 0x10, 0x10, 0xF0, 0x00,
0x00, 0x00, 0x00, 0x1F, 0x10,
0x10, 0x10, 0x10, 0x1F, 0x10,
0x10, 0x10, 0x10, 0xF0, 0x10,
0x00, 0x00, 0x00, 0xFF, 0x10,
0x10, 0x10, 0x10, 0x10, 0x10,
0x10, 0x10, 0x10, 0xFF, 0x10,
0x00, 0x00, 0x00, 0xFF, 0x14,
0x00, 0x00, 0xFF, 0x00, 0xFF,
0x00, 0x00, 0x1F, 0x10, 0x17,
0x00, 0x00, 0xFC, 0x04, 0xF4,
0x14, 0x14, 0x17, 0x10, 0x17,
0x14, 0x14, 0xF4, 0x04, 0xF4,
0x00, 0x00, 0xFF, 0x00, 0xF7,
0x14, 0x14, 0x14, 0x14, 0x14,
0x14, 0x14, 0xF7, 0x00, 0xF7,
0x14, 0x14, 0x14, 0x17, 0x14,
0x10, 0x10, 0x1F, 0x10, 0x1F,
0x14, 0x14, 0x14, 0xF4, 0x14,
0x10, 0x10, 0xF0, 0x10, 0xF0,
0x00, 0x00, 0x1F, 0x10, 0x1F,
0x00, 0x00, 0x00, 0x1F, 0x14,
0x00, 0x00, 0x00, 0xFC, 0x14,
0x00, 0x00, 0xF0, 0x10, 0xF0,
0x10, 0x10, 0xFF, 0x10, 0xFF,
0x14, 0x14, 0x14, 0xFF, 0x14,
0x10, 0x10, 0x10, 0x1F, 0x00,
0x00, 0x00, 0x00, 0xF0, 0x10,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0xFF,
0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
0x38, 0x44, 0x44, 0x38, 0x44,
0xFC, 0x4A, 0x4A, 0x4A, 0x34, // sharp-s or beta
0x7E, 0x02, 0x02, 0x06, 0x06,
0x02, 0x7E, 0x02, 0x7E, 0x02,
0x63, 0x55, 0x49, 0x41, 0x63,
0x38, 0x44, 0x44, 0x3C, 0x04,
0x40, 0x7E, 0x20, 0x1E, 0x20,
0x06, 0x02, 0x7E, 0x02, 0x02,
0x99, 0xA5, 0xE7, 0xA5, 0x99,
0x1C, 0x2A, 0x49, 0x2A, 0x1C,
0x4C, 0x72, 0x01, 0x72, 0x4C,
0x30, 0x4A, 0x4D, 0x4D, 0x30,
0x30, 0x48, 0x78, 0x48, 0x30,
0xBC, 0x62, 0x5A, 0x46, 0x3D,
0x3E, 0x49, 0x49, 0x49, 0x00,
0x7E, 0x01, 0x01, 0x01, 0x7E,
0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
0x44, 0x44, 0x5F, 0x44, 0x44,
0x40, 0x51, 0x4A, 0x44, 0x40,
0x40, 0x44, 0x4A, 0x51, 0x40,
0x00, 0x00, 0xFF, 0x01, 0x03,
0xE0, 0x80, 0xFF, 0x00, 0x00,
0x08, 0x08, 0x6B, 0x6B, 0x08,
0x36, 0x12, 0x36, 0x24, 0x36,
0x06, 0x0F, 0x09, 0x0F, 0x06,
0x00, 0x00, 0x18, 0x18, 0x00,
0x00, 0x00, 0x10, 0x10, 0x00,
0x30, 0x40, 0xFF, 0x01, 0x01,
0x00, 0x1F, 0x01, 0x01, 0x1E,
0x00, 0x19, 0x1D, 0x17, 0x12,
0x00, 0x3C, 0x3C, 0x3C, 0x3C,
0x00, 0x00, 0x00, 0x00, 0x00 // #255 NBSP
};
#endif // FONT5X7_H

590
MQTT/PubSubClient.cpp Normal file
View File

@ -0,0 +1,590 @@
/*
PubSubClient.cpp - A simple client for MQTT.
Nick O'Leary
http://knolleary.net
*/
#include "PubSubClient.h"
#include "Arduino.h"
PubSubClient::PubSubClient() {
this->_state = MQTT_DISCONNECTED;
this->_client = NULL;
this->stream = NULL;
setCallback(NULL);
}
PubSubClient::PubSubClient(Client& client) {
this->_state = MQTT_DISCONNECTED;
setClient(client);
this->stream = NULL;
}
PubSubClient::PubSubClient(IPAddress addr, uint16_t port, Client& client) {
this->_state = MQTT_DISCONNECTED;
setServer(addr, port);
setClient(client);
this->stream = NULL;
}
PubSubClient::PubSubClient(IPAddress addr, uint16_t port, Client& client, Stream& stream) {
this->_state = MQTT_DISCONNECTED;
setServer(addr,port);
setClient(client);
setStream(stream);
}
PubSubClient::PubSubClient(IPAddress addr, uint16_t port, MQTT_CALLBACK_SIGNATURE, Client& client) {
this->_state = MQTT_DISCONNECTED;
setServer(addr, port);
setCallback(callback);
setClient(client);
this->stream = NULL;
}
PubSubClient::PubSubClient(IPAddress addr, uint16_t port, MQTT_CALLBACK_SIGNATURE, Client& client, Stream& stream) {
this->_state = MQTT_DISCONNECTED;
setServer(addr,port);
setCallback(callback);
setClient(client);
setStream(stream);
}
PubSubClient::PubSubClient(uint8_t *ip, uint16_t port, Client& client) {
this->_state = MQTT_DISCONNECTED;
setServer(ip, port);
setClient(client);
this->stream = NULL;
}
PubSubClient::PubSubClient(uint8_t *ip, uint16_t port, Client& client, Stream& stream) {
this->_state = MQTT_DISCONNECTED;
setServer(ip,port);
setClient(client);
setStream(stream);
}
PubSubClient::PubSubClient(uint8_t *ip, uint16_t port, MQTT_CALLBACK_SIGNATURE, Client& client) {
this->_state = MQTT_DISCONNECTED;
setServer(ip, port);
setCallback(callback);
setClient(client);
this->stream = NULL;
}
PubSubClient::PubSubClient(uint8_t *ip, uint16_t port, MQTT_CALLBACK_SIGNATURE, Client& client, Stream& stream) {
this->_state = MQTT_DISCONNECTED;
setServer(ip,port);
setCallback(callback);
setClient(client);
setStream(stream);
}
PubSubClient::PubSubClient(const char* domain, uint16_t port, Client& client) {
this->_state = MQTT_DISCONNECTED;
setServer(domain,port);
setClient(client);
this->stream = NULL;
}
PubSubClient::PubSubClient(const char* domain, uint16_t port, Client& client, Stream& stream) {
this->_state = MQTT_DISCONNECTED;
setServer(domain,port);
setClient(client);
setStream(stream);
}
PubSubClient::PubSubClient(const char* domain, uint16_t port, MQTT_CALLBACK_SIGNATURE, Client& client) {
this->_state = MQTT_DISCONNECTED;
setServer(domain,port);
setCallback(callback);
setClient(client);
this->stream = NULL;
}
PubSubClient::PubSubClient(const char* domain, uint16_t port, MQTT_CALLBACK_SIGNATURE, Client& client, Stream& stream) {
this->_state = MQTT_DISCONNECTED;
setServer(domain,port);
setCallback(callback);
setClient(client);
setStream(stream);
}
boolean PubSubClient::connect(const char *id) {
return connect(id,NULL,NULL,0,0,0,0);
}
boolean PubSubClient::connect(const char *id, const char *user, const char *pass) {
return connect(id,user,pass,0,0,0,0);
}
boolean PubSubClient::connect(const char *id, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage) {
return connect(id,NULL,NULL,willTopic,willQos,willRetain,willMessage);
}
boolean PubSubClient::connect(const char *id, const char *user, const char *pass, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage) {
if (!connected()) {
int result = 0;
if (domain != NULL) {
result = _client->connect(this->domain, this->port);
} else {
result = _client->connect(this->ip, this->port);
}
if (result == 1) {
nextMsgId = 1;
// Leave room in the buffer for header and variable length field
uint16_t length = 5;
unsigned int j;
#if MQTT_VERSION == MQTT_VERSION_3_1
uint8_t d[9] = {0x00,0x06,'M','Q','I','s','d','p', MQTT_VERSION};
#define MQTT_HEADER_VERSION_LENGTH 9
#elif MQTT_VERSION == MQTT_VERSION_3_1_1
uint8_t d[7] = {0x00,0x04,'M','Q','T','T',MQTT_VERSION};
#define MQTT_HEADER_VERSION_LENGTH 7
#endif
for (j = 0;j<MQTT_HEADER_VERSION_LENGTH;j++) {
buffer[length++] = d[j];
}
uint8_t v;
if (willTopic) {
v = 0x06|(willQos<<3)|(willRetain<<5);
} else {
v = 0x02;
}
if(user != NULL) {
v = v|0x80;
if(pass != NULL) {
v = v|(0x80>>1);
}
}
buffer[length++] = v;
buffer[length++] = ((MQTT_KEEPALIVE) >> 8);
buffer[length++] = ((MQTT_KEEPALIVE) & 0xFF);
length = writeString(id,buffer,length);
if (willTopic) {
length = writeString(willTopic,buffer,length);
length = writeString(willMessage,buffer,length);
}
if(user != NULL) {
length = writeString(user,buffer,length);
if(pass != NULL) {
length = writeString(pass,buffer,length);
}
}
write(MQTTCONNECT,buffer,length-5);
lastInActivity = lastOutActivity = millis();
while (!_client->available()) {
unsigned long t = millis();
if (t-lastInActivity >= ((int32_t) MQTT_SOCKET_TIMEOUT*1000UL)) {
_state = MQTT_CONNECTION_TIMEOUT;
_client->stop();
return false;
}
}
uint8_t llen;
uint16_t len = readPacket(&llen);
if (len == 4) {
if (buffer[3] == 0) {
lastInActivity = millis();
pingOutstanding = false;
_state = MQTT_CONNECTED;
return true;
} else {
_state = buffer[3];
}
}
_client->stop();
} else {
_state = MQTT_CONNECT_FAILED;
}
return false;
}
return true;
}
// reads a byte into result
boolean PubSubClient::readByte(uint8_t * result) {
uint32_t previousMillis = millis();
while(!_client->available()) {
uint32_t currentMillis = millis();
if(currentMillis - previousMillis >= ((int32_t) MQTT_SOCKET_TIMEOUT * 1000)){
return false;
}
}
*result = _client->read();
return true;
}
// reads a byte into result[*index] and increments index
boolean PubSubClient::readByte(uint8_t * result, uint16_t * index){
uint16_t current_index = *index;
uint8_t * write_address = &(result[current_index]);
if(readByte(write_address)){
*index = current_index + 1;
return true;
}
return false;
}
uint16_t PubSubClient::readPacket(uint8_t* lengthLength) {
uint16_t len = 0;
if(!readByte(buffer, &len)) return 0;
bool isPublish = (buffer[0]&0xF0) == MQTTPUBLISH;
uint32_t multiplier = 1;
uint16_t length = 0;
uint8_t digit = 0;
uint16_t skip = 0;
uint8_t start = 0;
do {
if(!readByte(&digit)) return 0;
buffer[len++] = digit;
length += (digit & 127) * multiplier;
multiplier *= 128;
} while ((digit & 128) != 0);
*lengthLength = len-1;
if (isPublish) {
// Read in topic length to calculate bytes to skip over for Stream writing
if(!readByte(buffer, &len)) return 0;
if(!readByte(buffer, &len)) return 0;
skip = (buffer[*lengthLength+1]<<8)+buffer[*lengthLength+2];
start = 2;
if (buffer[0]&MQTTQOS1) {
// skip message id
skip += 2;
}
}
for (uint16_t i = start;i<length;i++) {
if(!readByte(&digit)) return 0;
if (this->stream) {
if (isPublish && len-*lengthLength-2>skip) {
this->stream->write(digit);
}
}
if (len < MQTT_MAX_PACKET_SIZE) {
buffer[len] = digit;
}
len++;
}
if (!this->stream && len > MQTT_MAX_PACKET_SIZE) {
len = 0; // This will cause the packet to be ignored.
}
return len;
}
boolean PubSubClient::loop() {
if (connected()) {
unsigned long t = millis();
if ((t - lastInActivity > MQTT_KEEPALIVE*1000UL) || (t - lastOutActivity > MQTT_KEEPALIVE*1000UL)) {
if (pingOutstanding) {
this->_state = MQTT_CONNECTION_TIMEOUT;
_client->stop();
return false;
} else {
buffer[0] = MQTTPINGREQ;
buffer[1] = 0;
_client->write(buffer,2);
lastOutActivity = t;
lastInActivity = t;
pingOutstanding = true;
}
}
if (_client->available()) {
uint8_t llen;
uint16_t len = readPacket(&llen);
uint16_t msgId = 0;
uint8_t *payload;
if (len > 0) {
lastInActivity = t;
uint8_t type = buffer[0]&0xF0;
if (type == MQTTPUBLISH) {
if (callback) {
uint16_t tl = (buffer[llen+1]<<8)+buffer[llen+2];
char topic[tl+1];
for (uint16_t i=0;i<tl;i++) {
topic[i] = buffer[llen+3+i];
}
topic[tl] = 0;
// msgId only present for QOS>0
if ((buffer[0]&0x06) == MQTTQOS1) {
msgId = (buffer[llen+3+tl]<<8)+buffer[llen+3+tl+1];
payload = buffer+llen+3+tl+2;
callback(topic,payload,len-llen-3-tl-2);
buffer[0] = MQTTPUBACK;
buffer[1] = 2;
buffer[2] = (msgId >> 8);
buffer[3] = (msgId & 0xFF);
_client->write(buffer,4);
lastOutActivity = t;
} else {
payload = buffer+llen+3+tl;
callback(topic,payload,len-llen-3-tl);
}
}
} else if (type == MQTTPINGREQ) {
buffer[0] = MQTTPINGRESP;
buffer[1] = 0;
_client->write(buffer,2);
} else if (type == MQTTPINGRESP) {
pingOutstanding = false;
}
}
}
return true;
}
return false;
}
boolean PubSubClient::publish(const char* topic, const char* payload) {
return publish(topic,(const uint8_t*)payload,strlen(payload),false);
}
boolean PubSubClient::publish(const char* topic, const char* payload, boolean retained) {
return publish(topic,(const uint8_t*)payload,strlen(payload),retained);
}
boolean PubSubClient::publish(const char* topic, const uint8_t* payload, unsigned int plength) {
return publish(topic, payload, plength, false);
}
boolean PubSubClient::publish(const char* topic, const uint8_t* payload, unsigned int plength, boolean retained) {
if (connected()) {
if (MQTT_MAX_PACKET_SIZE < 5 + 2+strlen(topic) + plength) {
// Too long
return false;
}
// Leave room in the buffer for header and variable length field
uint16_t length = 5;
length = writeString(topic,buffer,length);
uint16_t i;
for (i=0;i<plength;i++) {
buffer[length++] = payload[i];
}
uint8_t header = MQTTPUBLISH;
if (retained) {
header |= 1;
}
return write(header,buffer,length-5);
}
return false;
}
boolean PubSubClient::publish_P(const char* topic, const uint8_t* payload, unsigned int plength, boolean retained) {
uint8_t llen = 0;
uint8_t digit;
unsigned int rc = 0;
uint16_t tlen;
unsigned int pos = 0;
unsigned int i;
uint8_t header;
unsigned int len;
if (!connected()) {
return false;
}
tlen = strlen(topic);
header = MQTTPUBLISH;
if (retained) {
header |= 1;
}
buffer[pos++] = header;
len = plength + 2 + tlen;
do {
digit = len % 128;
len = len / 128;
if (len > 0) {
digit |= 0x80;
}
buffer[pos++] = digit;
llen++;
} while(len>0);
pos = writeString(topic,buffer,pos);
rc += _client->write(buffer,pos);
for (i=0;i<plength;i++) {
rc += _client->write((char)pgm_read_byte_near(payload + i));
}
lastOutActivity = millis();
return rc == tlen + 4 + plength;
}
boolean PubSubClient::write(uint8_t header, uint8_t* buf, uint16_t length) {
uint8_t lenBuf[4];
uint8_t llen = 0;
uint8_t digit;
uint8_t pos = 0;
uint16_t rc;
uint16_t len = length;
do {
digit = len % 128;
len = len / 128;
if (len > 0) {
digit |= 0x80;
}
lenBuf[pos++] = digit;
llen++;
} while(len>0);
buf[4-llen] = header;
for (int i=0;i<llen;i++) {
buf[5-llen+i] = lenBuf[i];
}
#ifdef MQTT_MAX_TRANSFER_SIZE
uint8_t* writeBuf = buf+(4-llen);
uint16_t bytesRemaining = length+1+llen; //Match the length type
uint8_t bytesToWrite;
boolean result = true;
while((bytesRemaining > 0) && result) {
bytesToWrite = (bytesRemaining > MQTT_MAX_TRANSFER_SIZE)?MQTT_MAX_TRANSFER_SIZE:bytesRemaining;
rc = _client->write(writeBuf,bytesToWrite);
result = (rc == bytesToWrite);
bytesRemaining -= rc;
writeBuf += rc;
}
return result;
#else
rc = _client->write(buf+(4-llen),length+1+llen);
lastOutActivity = millis();
return (rc == 1+llen+length);
#endif
}
boolean PubSubClient::subscribe(const char* topic) {
return subscribe(topic, 0);
}
boolean PubSubClient::subscribe(const char* topic, uint8_t qos) {
if (qos < 0 || qos > 1) {
return false;
}
if (MQTT_MAX_PACKET_SIZE < 9 + strlen(topic)) {
// Too long
return false;
}
if (connected()) {
// Leave room in the buffer for header and variable length field
uint16_t length = 5;
nextMsgId++;
if (nextMsgId == 0) {
nextMsgId = 1;
}
buffer[length++] = (nextMsgId >> 8);
buffer[length++] = (nextMsgId & 0xFF);
length = writeString((char*)topic, buffer,length);
buffer[length++] = qos;
return write(MQTTSUBSCRIBE|MQTTQOS1,buffer,length-5);
}
return false;
}
boolean PubSubClient::unsubscribe(const char* topic) {
if (MQTT_MAX_PACKET_SIZE < 9 + strlen(topic)) {
// Too long
return false;
}
if (connected()) {
uint16_t length = 5;
nextMsgId++;
if (nextMsgId == 0) {
nextMsgId = 1;
}
buffer[length++] = (nextMsgId >> 8);
buffer[length++] = (nextMsgId & 0xFF);
length = writeString(topic, buffer,length);
return write(MQTTUNSUBSCRIBE|MQTTQOS1,buffer,length-5);
}
return false;
}
void PubSubClient::disconnect() {
buffer[0] = MQTTDISCONNECT;
buffer[1] = 0;
_client->write(buffer,2);
_state = MQTT_DISCONNECTED;
_client->stop();
lastInActivity = lastOutActivity = millis();
}
uint16_t PubSubClient::writeString(const char* string, uint8_t* buf, uint16_t pos) {
const char* idp = string;
uint16_t i = 0;
pos += 2;
while (*idp) {
buf[pos++] = *idp++;
i++;
}
buf[pos-i-2] = (i >> 8);
buf[pos-i-1] = (i & 0xFF);
return pos;
}
boolean PubSubClient::connected() {
boolean rc;
if (_client == NULL ) {
rc = false;
} else {
rc = (int)_client->connected();
if (!rc) {
if (this->_state == MQTT_CONNECTED) {
this->_state = MQTT_CONNECTION_LOST;
_client->flush();
_client->stop();
}
}
}
return rc;
}
PubSubClient& PubSubClient::setServer(uint8_t * ip, uint16_t port) {
IPAddress addr(ip[0],ip[1],ip[2],ip[3]);
return setServer(addr,port);
}
PubSubClient& PubSubClient::setServer(IPAddress ip, uint16_t port) {
this->ip = ip;
this->port = port;
this->domain = NULL;
return *this;
}
PubSubClient& PubSubClient::setServer(const char * domain, uint16_t port) {
this->domain = domain;
this->port = port;
return *this;
}
PubSubClient& PubSubClient::setCallback(MQTT_CALLBACK_SIGNATURE) {
this->callback = callback;
return *this;
}
PubSubClient& PubSubClient::setClient(Client& client){
this->_client = &client;
return *this;
}
PubSubClient& PubSubClient::setStream(Stream& stream){
this->stream = &stream;
return *this;
}
int PubSubClient::state() {
return this->_state;
}

144
MQTT/PubSubClient.h Normal file
View File

@ -0,0 +1,144 @@
/*
PubSubClient.h - A simple client for MQTT.
Nick O'Leary
http://knolleary.net
*/
#ifndef PubSubClient_h
#define PubSubClient_h
#include <Arduino.h>
#include "IPAddress.h"
#include "Client.h"
#include "Stream.h"
#define MQTT_VERSION_3_1 3
#define MQTT_VERSION_3_1_1 4
// MQTT_VERSION : Pick the version
//#define MQTT_VERSION MQTT_VERSION_3_1
#ifndef MQTT_VERSION
#define MQTT_VERSION MQTT_VERSION_3_1_1
#endif
// MQTT_MAX_PACKET_SIZE : Maximum packet size
#ifndef MQTT_MAX_PACKET_SIZE
#define MQTT_MAX_PACKET_SIZE 128
#endif
// MQTT_KEEPALIVE : keepAlive interval in Seconds
#ifndef MQTT_KEEPALIVE
#define MQTT_KEEPALIVE 15
#endif
// MQTT_SOCKET_TIMEOUT: socket timeout interval in Seconds
#ifndef MQTT_SOCKET_TIMEOUT
#define MQTT_SOCKET_TIMEOUT 15
#endif
// MQTT_MAX_TRANSFER_SIZE : limit how much data is passed to the network client
// in each write call. Needed for the Arduino Wifi Shield. Leave undefined to
// pass the entire MQTT packet in each write call.
//#define MQTT_MAX_TRANSFER_SIZE 80
// Possible values for client.state()
#define MQTT_CONNECTION_TIMEOUT -4
#define MQTT_CONNECTION_LOST -3
#define MQTT_CONNECT_FAILED -2
#define MQTT_DISCONNECTED -1
#define MQTT_CONNECTED 0
#define MQTT_CONNECT_BAD_PROTOCOL 1
#define MQTT_CONNECT_BAD_CLIENT_ID 2
#define MQTT_CONNECT_UNAVAILABLE 3
#define MQTT_CONNECT_BAD_CREDENTIALS 4
#define MQTT_CONNECT_UNAUTHORIZED 5
#define MQTTCONNECT 1 << 4 // Client request to connect to Server
#define MQTTCONNACK 2 << 4 // Connect Acknowledgment
#define MQTTPUBLISH 3 << 4 // Publish message
#define MQTTPUBACK 4 << 4 // Publish Acknowledgment
#define MQTTPUBREC 5 << 4 // Publish Received (assured delivery part 1)
#define MQTTPUBREL 6 << 4 // Publish Release (assured delivery part 2)
#define MQTTPUBCOMP 7 << 4 // Publish Complete (assured delivery part 3)
#define MQTTSUBSCRIBE 8 << 4 // Client Subscribe request
#define MQTTSUBACK 9 << 4 // Subscribe Acknowledgment
#define MQTTUNSUBSCRIBE 10 << 4 // Client Unsubscribe request
#define MQTTUNSUBACK 11 << 4 // Unsubscribe Acknowledgment
#define MQTTPINGREQ 12 << 4 // PING Request
#define MQTTPINGRESP 13 << 4 // PING Response
#define MQTTDISCONNECT 14 << 4 // Client is Disconnecting
#define MQTTReserved 15 << 4 // Reserved
#define MQTTQOS0 (0 << 1)
#define MQTTQOS1 (1 << 1)
#define MQTTQOS2 (2 << 1)
#ifdef ESP8266
#include <functional>
#define MQTT_CALLBACK_SIGNATURE std::function<void(char*, uint8_t*, unsigned int)> callback
#else
#define MQTT_CALLBACK_SIGNATURE void (*callback)(char*, uint8_t*, unsigned int)
#endif
class PubSubClient {
private:
Client* _client;
uint8_t buffer[MQTT_MAX_PACKET_SIZE];
uint16_t nextMsgId;
unsigned long lastOutActivity;
unsigned long lastInActivity;
bool pingOutstanding;
MQTT_CALLBACK_SIGNATURE;
uint16_t readPacket(uint8_t*);
boolean readByte(uint8_t * result);
boolean readByte(uint8_t * result, uint16_t * index);
boolean write(uint8_t header, uint8_t* buf, uint16_t length);
uint16_t writeString(const char* string, uint8_t* buf, uint16_t pos);
IPAddress ip;
const char* domain;
uint16_t port;
Stream* stream;
int _state;
public:
PubSubClient();
PubSubClient(Client& client);
PubSubClient(IPAddress, uint16_t, Client& client);
PubSubClient(IPAddress, uint16_t, Client& client, Stream&);
PubSubClient(IPAddress, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client);
PubSubClient(IPAddress, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client, Stream&);
PubSubClient(uint8_t *, uint16_t, Client& client);
PubSubClient(uint8_t *, uint16_t, Client& client, Stream&);
PubSubClient(uint8_t *, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client);
PubSubClient(uint8_t *, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client, Stream&);
PubSubClient(const char*, uint16_t, Client& client);
PubSubClient(const char*, uint16_t, Client& client, Stream&);
PubSubClient(const char*, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client);
PubSubClient(const char*, uint16_t, MQTT_CALLBACK_SIGNATURE,Client& client, Stream&);
PubSubClient& setServer(IPAddress ip, uint16_t port);
PubSubClient& setServer(uint8_t * ip, uint16_t port);
PubSubClient& setServer(const char * domain, uint16_t port);
PubSubClient& setCallback(MQTT_CALLBACK_SIGNATURE);
PubSubClient& setClient(Client& client);
PubSubClient& setStream(Stream& stream);
boolean connect(const char* id);
boolean connect(const char* id, const char* user, const char* pass);
boolean connect(const char* id, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage);
boolean connect(const char* id, const char* user, const char* pass, const char* willTopic, uint8_t willQos, boolean willRetain, const char* willMessage);
void disconnect();
boolean publish(const char* topic, const char* payload);
boolean publish(const char* topic, const char* payload, boolean retained);
boolean publish(const char* topic, const uint8_t * payload, unsigned int plength);
boolean publish(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained);
boolean publish_P(const char* topic, const uint8_t * payload, unsigned int plength, boolean retained);
boolean subscribe(const char* topic);
boolean subscribe(const char* topic, uint8_t qos);
boolean unsubscribe(const char* topic);
boolean loop();
boolean connected();
int state();
};
#endif

15
MqttMonitor.cpp Normal file
View File

@ -0,0 +1,15 @@
// Do not remove the include below
#include "MqttMonitor.h"
//The setup function is called once at startup of the sketch
void setup()
{
// Add your initialization code here
}
// The loop function is called in an endless loop
void loop()
{
//Add your repeated code here
}

22
MqttMonitor.h Normal file
View File

@ -0,0 +1,22 @@
// Only modify this file to include
// - function definitions (prototypes)
// - include files
// - extern variable definitions
// In the appropriate section
#ifndef _MqttMonitor_H_
#define _MqttMonitor_H_
#include "Arduino.h"
//add your includes for the project MqttMonitor here
//end of add your includes here
//add your function definitions for the project MqttMonitor here
//Do not add code below this line
#endif /* _MqttMonitor_H_ */

BIN
TFTLCD/.DS_Store vendored Normal file

Binary file not shown.

1036
TFTLCD/Adafruit_TFTLCD.cpp Normal file

File diff suppressed because it is too large Load Diff

105
TFTLCD/Adafruit_TFTLCD.h Normal file
View File

@ -0,0 +1,105 @@
// IMPORTANT: SEE COMMENTS @ LINE 15 REGARDING SHIELD VS BREAKOUT BOARD USAGE.
// Graphics library by ladyada/adafruit with init code from Rossum
// MIT license
#ifndef _ADAFRUIT_TFTLCD_H_
#define _ADAFRUIT_TFTLCD_H_
#if ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
#include <Adafruit_GFX.h>
// **** IF USING THE LCD BREAKOUT BOARD, COMMENT OUT THIS NEXT LINE. ****
// **** IF USING THE LCD SHIELD, LEAVE THE LINE ENABLED: ****
// #define USE_ADAFRUIT_SHIELD_PINOUT 1
class Adafruit_TFTLCD : public Adafruit_GFX {
public:
Adafruit_TFTLCD(uint8_t cs, uint8_t cd, uint8_t wr, uint8_t rd, uint8_t rst);
Adafruit_TFTLCD(void);
void begin(uint16_t id = 0x9325);
void drawPixel(int16_t x, int16_t y, uint16_t color);
void drawFastHLine(int16_t x0, int16_t y0, int16_t w, uint16_t color);
void drawFastVLine(int16_t x0, int16_t y0, int16_t h, uint16_t color);
void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t c);
void fillScreen(uint16_t color);
void reset(void);
void setRegisters8(uint8_t *ptr, uint8_t n);
void setRegisters16(uint16_t *ptr, uint8_t n);
void setRotation(uint8_t x);
// These methods are public in order for BMP examples to work:
void setAddrWindow(int x1, int y1, int x2, int y2);
void pushColors(uint16_t *data, uint8_t len, boolean first);
uint16_t color565(uint8_t r, uint8_t g, uint8_t b),
readPixel(int16_t x, int16_t y),
readID(void);
uint32_t readReg(uint8_t r);
private:
void init(),
// These items may have previously been defined as macros
// in pin_magic.h. If not, function versions are declared:
#ifndef write8
write8(uint8_t value),
#endif
#ifndef setWriteDir
setWriteDir(void),
#endif
#ifndef setReadDir
setReadDir(void),
#endif
#ifndef writeRegister8
writeRegister8(uint8_t a, uint8_t d),
#endif
#ifndef writeRegister16
writeRegister16(uint16_t a, uint16_t d),
#endif
writeRegister24(uint8_t a, uint32_t d),
writeRegister32(uint8_t a, uint32_t d),
#ifndef writeRegisterPair
writeRegisterPair(uint8_t aH, uint8_t aL, uint16_t d),
#endif
setLR(void),
flood(uint16_t color, uint32_t len);
uint8_t driver;
#ifndef read8
uint8_t read8fn(void);
#define read8isFunctionalized
#endif
#ifndef USE_ADAFRUIT_SHIELD_PINOUT
#ifdef __AVR__
volatile uint8_t *csPort , *cdPort , *wrPort , *rdPort;
uint8_t csPinSet , cdPinSet , wrPinSet , rdPinSet ,
csPinUnset, cdPinUnset, wrPinUnset, rdPinUnset,
_reset;
#endif
#if defined(__SAM3X8E__)
Pio *csPort , *cdPort , *wrPort , *rdPort;
uint32_t csPinSet , cdPinSet , wrPinSet , rdPinSet ,
csPinUnset, cdPinUnset, wrPinUnset, rdPinUnset,
_reset;
#endif
#endif
};
// For compatibility with sketches written for older versions of library.
// Color function name was changed to 'color565' for parity with 2.2" LCD
// library.
#define Color565 color565
#endif

409
TFTLCD/pin_magic.h Normal file
View File

@ -0,0 +1,409 @@
#ifndef _pin_magic_
#define _pin_magic_
// This header file serves two purposes:
//
// 1) Isolate non-portable MCU port- and pin-specific identifiers and
// operations so the library code itself remains somewhat agnostic
// (PORTs and pin numbers are always referenced through macros).
//
// 2) GCC doesn't always respect the "inline" keyword, so this is a
// ham-fisted manner of forcing the issue to minimize function calls.
// This sometimes makes the library a bit bigger than before, but fast++.
// However, because they're macros, we need to be SUPER CAREFUL about
// parameters -- for example, write8(x) may expand to multiple PORT
// writes that all refer to x, so it needs to be a constant or fixed
// variable and not something like *ptr++ (which, after macro
// expansion, may increment the pointer repeatedly and run off into
// la-la land). Macros also give us fine-grained control over which
// operations are inlined on which boards (balancing speed against
// available program space).
// When using the TFT shield, control and data pins exist in set physical
// locations, but the ports and bitmasks corresponding to each vary among
// boards. A separate set of pin definitions is given for each supported
// board type.
// When using the TFT breakout board, control pins are configurable but
// the data pins are still fixed -- making every data pin configurable
// would be much too slow. The data pin layouts are not the same between
// the shield and breakout configurations -- for the latter, pins were
// chosen to keep the tutorial wiring manageable more than making optimal
// use of ports and bitmasks. So there's a second set of pin definitions
// given for each supported board.
// Shield pin usage:
// LCD Data Bit : 7 6 5 4 3 2 1 0
// Digital pin #: 7 6 13 4 11 10 9 8
// Uno port/pin : PD7 PD6 PB5 PD4 PB3 PB2 PB1 PB0
// Mega port/pin: PH4 PH3 PB7 PG5 PB5 PB4 PH6 PH5
// Leo port/pin : PE6 PD7 PC7 PD4 PB7 PB6 PB5 PB4
// Due port/pin : PC23 PC24 PB27 PC26 PD7 PC29 PC21 PC22
// Breakout pin usage:
// LCD Data Bit : 7 6 5 4 3 2 1 0
// Uno dig. pin : 7 6 5 4 3 2 9 8
// Uno port/pin : PD7 PD6 PD5 PD4 PD3 PD2 PB1 PB0
// Mega dig. pin: 29 28 27 26 25 24 23 22
// Mega port/pin: PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 (one contiguous PORT)
// Leo dig. pin : 7 6 5 4 3 2 9 8
// Leo port/pin : PE6 PD7 PC6 PD4 PD0 PD1 PB5 PB4
// Due dig. pin : 40 39 38 37 36 35 34 33
// Due port/pin : PC8 PC7 PC6 PC5 PC4 PC3 PC2 PC1 (one contiguous PORT. -ish…)
// Pixel read operations require a minimum 400 nS delay from RD_ACTIVE
// to polling the input pins. At 16 MHz, one machine cycle is 62.5 nS.
// This code burns 7 cycles (437.5 nS) doing nothing; the RJMPs are
// equivalent to two NOPs each, final NOP burns the 7th cycle, and the
// last line is a radioactive mutant emoticon.
#define DELAY7 \
asm volatile( \
"rjmp .+0" "\n\t" \
"rjmp .+0" "\n\t" \
"rjmp .+0" "\n\t" \
"nop" "\n" \
::);
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) || defined (__AVR_ATmega328__) || defined(__AVR_ATmega8__)
// Arduino Uno, Duemilanove, etc.
#ifdef USE_ADAFRUIT_SHIELD_PINOUT
// LCD control lines:
// RD (read), WR (write), CD (command/data), CS (chip select)
#define RD_PORT PORTC /*pin A0 */
#define WR_PORT PORTC /*pin A1 */
#define CD_PORT PORTC /*pin A2 */
#define CS_PORT PORTC /*pin A3 */
#define RD_MASK B00000001
#define WR_MASK B00000010
#define CD_MASK B00000100
#define CS_MASK B00001000
// These are macros for I/O operations...
// Write 8-bit value to LCD data lines
#define write8inline(d) { \
PORTD = (PORTD & B00101111) | ((d) & B11010000); \
PORTB = (PORTB & B11010000) | ((d) & B00101111); \
WR_STROBE; } // STROBEs are defined later
// Read 8-bit value from LCD data lines. The signle argument
// is a destination variable; this isn't a function and doesn't
// return a value in the conventional sense.
#define read8inline(result) { \
RD_ACTIVE; \
DELAY7; \
result = (PIND & B11010000) | (PINB & B00101111); \
RD_IDLE; }
// These set the PORT directions as required before the write and read
// operations. Because write operations are much more common than reads,
// the data-reading functions in the library code set the PORT(s) to
// input before a read, and restore them back to the write state before
// returning. This avoids having to set it for output inside every
// drawing method. The default state has them initialized for writes.
#define setWriteDirInline() { DDRD |= B11010000; DDRB |= B00101111; }
#define setReadDirInline() { DDRD &= ~B11010000; DDRB &= ~B00101111; }
#else // Uno w/Breakout board
#define write8inline(d) { \
PORTD = (PORTD & B00000011) | ((d) & B11111100); \
PORTB = (PORTB & B11111100) | ((d) & B00000011); \
WR_STROBE; }
#define read8inline(result) { \
RD_ACTIVE; \
DELAY7; \
result = (PIND & B11111100) | (PINB & B00000011); \
RD_IDLE; }
#define setWriteDirInline() { DDRD |= B11111100; DDRB |= B00000011; }
#define setReadDirInline() { DDRD &= ~B11111100; DDRB &= ~B00000011; }
#endif
// As part of the inline control, macros reference other macros...if any
// of these are left undefined, an equivalent function version (non-inline)
// is declared later. The Uno has a moderate amount of program space, so
// only write8() is inlined -- that one provides the most performance
// benefit, but unfortunately also generates the most bloat. This is
// why only certain cases are inlined for each board.
#define write8 write8inline
#elif defined(__AVR_ATmega1281__) || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__)
// Arduino Mega, ADK, etc.
#ifdef USE_ADAFRUIT_SHIELD_PINOUT
#define RD_PORT PORTF
#define WR_PORT PORTF
#define CD_PORT PORTF
#define CS_PORT PORTF
#define RD_MASK B00000001
#define WR_MASK B00000010
#define CD_MASK B00000100
#define CS_MASK B00001000
#define write8inline(d) { \
PORTH = (PORTH&B10000111)|(((d)&B11000000)>>3)|(((d)&B00000011)<<5); \
PORTB = (PORTB&B01001111)|(((d)&B00101100)<<2); \
PORTG = (PORTG&B11011111)|(((d)&B00010000)<<1); \
WR_STROBE; }
#define read8inline(result) { \
RD_ACTIVE; \
DELAY7; \
result = ((PINH & B00011000) << 3) | ((PINB & B10110000) >> 2) | \
((PING & B00100000) >> 1) | ((PINH & B01100000) >> 5); \
RD_IDLE; }
#define setWriteDirInline() { \
DDRH |= B01111000; DDRB |= B10110000; DDRG |= B00100000; }
#define setReadDirInline() { \
DDRH &= ~B01111000; DDRB &= ~B10110000; DDRG &= ~B00100000; }
#else // Mega w/Breakout board
#define write8inline(d) { PORTA = (d); WR_STROBE; }
#define read8inline(result) { \
RD_ACTIVE; \
DELAY7; \
result = PINA; \
RD_IDLE; }
#define setWriteDirInline() DDRA = 0xff
#define setReadDirInline() DDRA = 0
#endif
// All of the functions are inlined on the Arduino Mega. When using the
// breakout board, the macro versions aren't appreciably larger than the
// function equivalents, and they're super simple and fast. When using
// the shield, the macros become pretty complicated...but this board has
// so much code space, the macros are used anyway. If you need to free
// up program space, some macros can be removed, at a minor cost in speed.
#define write8 write8inline
#define read8 read8inline
#define setWriteDir setWriteDirInline
#define setReadDir setReadDirInline
#define writeRegister8 writeRegister8inline
#define writeRegister16 writeRegister16inline
#define writeRegisterPair writeRegisterPairInline
#elif defined(__AVR_ATmega32U4__)
// Arduino Leonardo
#ifdef USE_ADAFRUIT_SHIELD_PINOUT
#define RD_PORT PORTF
#define WR_PORT PORTF
#define CD_PORT PORTF
#define CS_PORT PORTF
#define RD_MASK B10000000
#define WR_MASK B01000000
#define CD_MASK B00100000
#define CS_MASK B00010000
#define write8inline(d) { \
PORTE = (PORTE & B10111111) | (((d) & B10000000)>>1); \
PORTD = (PORTD & B01101111) | (((d) & B01000000)<<1) | ((d) & B00010000); \
PORTC = (PORTC & B01111111) | (((d) & B00100000)<<2); \
PORTB = (PORTB & B00001111) | (((d) & B00001111)<<4); \
WR_STROBE; }
#define read8inline(result) { \
RD_ACTIVE; \
DELAY7; \
result = ((PINE & B01000000) << 1) | ((PIND & B10000000) >> 1) | \
((PINC & B10000000) >> 2) | ((PINB & B11110000) >> 4) | \
(PIND & B00010000); \
RD_IDLE; }
#define setWriteDirInline() { \
DDRE |= B01000000; DDRD |= B10010000; \
DDRC |= B10000000; DDRB |= B11110000; }
#define setReadDirInline() { \
DDRE &= ~B01000000; DDRD &= ~B10010000; \
DDRC &= ~B10000000; DDRB &= ~B11110000; }
#else // Leonardo w/Breakout board
#define write8inline(d) { \
uint8_t dr1 = (d) >> 1, dl1 = (d) << 1; \
PORTE = (PORTE & B10111111) | (dr1 & B01000000); \
PORTD = (PORTD & B01101100) | (dl1 & B10000000) | (((d) & B00001000)>>3) |\
(dr1 & B00000010) | ((d) & B00010000); \
PORTC = (PORTC & B10111111) | (dl1 & B01000000); \
PORTB = (PORTB & B11001111) |(((d) & B00000011)<<4); \
WR_STROBE; }
#define read8inline(result) { \
RD_ACTIVE; \
DELAY7; \
result = (((PINE & B01000000) | (PIND & B00000010)) << 1) | \
(((PINC & B01000000) | (PIND & B10000000)) >> 1) | \
((PIND & B00000001) << 3) | ((PINB & B00110000) >> 4) | \
(PIND & B00010000); \
RD_IDLE; }
#define setWriteDirInline() { \
DDRE |= B01000000; DDRD |= B10010011; \
DDRC |= B01000000; DDRB |= B00110000; }
#define setReadDirInline() { \
DDRE &= ~B01000000; DDRD &= ~B10010011; \
DDRC &= ~B01000000; DDRB &= ~B00110000; }
#endif
// On the Leonardo, only the write8() macro is used -- though even that
// might be excessive given the code size and available program space
// on this board. You may need to disable this to get any sizable
// program to compile.
#define write8 write8inline
#elif defined(__SAM3X8E__)
// Arduino Due
#ifdef USE_ADAFRUIT_SHIELD_PINOUT
#define RD_PORT PIOA /*pin A0 */
#define WR_PORT PIOA /*pin A1 */
#define CD_PORT PIOA /*pin A2 */
#define CS_PORT PIOA /*pin A3 */
#define RD_MASK 0x00010000
#define WR_MASK 0x01000000
#define CD_MASK 0x00800000
#define CS_MASK 0x00400000
#define write8inline(d) { \
PIO_Set(PIOD, (((d) & 0x08)<<(7-3))); \
PIO_Clear(PIOD, (((~d) & 0x08)<<(7-3))); \
PIO_Set(PIOC, (((d) & 0x01)<<(22-0)) | (((d) & 0x02)<<(21-1))| (((d) & 0x04)<<(29-2))| (((d) & 0x10)<<(26-4))| (((d) & 0x40)<<(24-6))| (((d) & 0x80)<<(23-7))); \
PIO_Clear(PIOC, (((~d) & 0x01)<<(22-0)) | (((~d) & 0x02)<<(21-1))| (((~d) & 0x04)<<(29-2))| (((~d) & 0x10)<<(26-4))| (((~d) & 0x40)<<(24-6))| (((~d) & 0x80)<<(23-7))); \
PIO_Set(PIOB, (((d) & 0x20)<<(27-5))); \
PIO_Clear(PIOB, (((~d) & 0x20)<<(27-5))); \
WR_STROBE; }
#define read8inline(result) { \
RD_ACTIVE; \
delayMicroseconds(1); \
result = (((PIOC->PIO_PDSR & (1<<23)) >> (23-7)) | ((PIOC->PIO_PDSR & (1<<24)) >> (24-6)) | \
((PIOB->PIO_PDSR & (1<<27)) >> (27-5)) | ((PIOC->PIO_PDSR & (1<<26)) >> (26-4)) | \
((PIOD->PIO_PDSR & (1<< 7)) >> ( 7-3)) | ((PIOC->PIO_PDSR & (1<<29)) >> (29-2)) | \
((PIOC->PIO_PDSR & (1<<21)) >> (21-1)) | ((PIOC->PIO_PDSR & (1<<22)) >> (22-0))); \
RD_IDLE;}
#define setWriteDirInline() { \
PIOD->PIO_MDDR |= 0x00000080; /*PIOD->PIO_SODR = 0x00000080;*/ PIOD->PIO_OER |= 0x00000080; PIOD->PIO_PER |= 0x00000080; \
PIOC->PIO_MDDR |= 0x25E00000; /*PIOC->PIO_SODR = 0x25E00000;*/ PIOC->PIO_OER |= 0x25E00000; PIOC->PIO_PER |= 0x25E00000; \
PIOB->PIO_MDDR |= 0x08000000; /*PIOB->PIO_SODR = 0x08000000;*/ PIOB->PIO_OER |= 0x08000000; PIOB->PIO_PER |= 0x08000000; }
#define setReadDirInline() { \
pmc_enable_periph_clk( ID_PIOD ) ; pmc_enable_periph_clk( ID_PIOC ) ; pmc_enable_periph_clk( ID_PIOB ) ; \
PIOD->PIO_PUDR |= 0x00000080; PIOD->PIO_IFDR |= 0x00000080; PIOD->PIO_ODR |= 0x00000080; PIOD->PIO_PER |= 0x00000080; \
PIOC->PIO_PUDR |= 0x25E00000; PIOC->PIO_IFDR |= 0x25E00000; PIOC->PIO_ODR |= 0x25E00000; PIOC->PIO_PER |= 0x25E00000; \
PIOB->PIO_PUDR |= 0x08000000; PIOB->PIO_IFDR |= 0x08000000; PIOB->PIO_ODR |= 0x08000000; PIOB->PIO_PER |= 0x08000000; }
// Control signals are ACTIVE LOW (idle is HIGH)
// Command/Data: LOW = command, HIGH = data
// These are single-instruction operations and always inline
#define RD_ACTIVE RD_PORT->PIO_CODR |= RD_MASK
#define RD_IDLE RD_PORT->PIO_SODR |= RD_MASK
#define WR_ACTIVE WR_PORT->PIO_CODR |= WR_MASK
#define WR_IDLE WR_PORT->PIO_SODR |= WR_MASK
#define CD_COMMAND CD_PORT->PIO_CODR |= CD_MASK
#define CD_DATA CD_PORT->PIO_SODR |= CD_MASK
#define CS_ACTIVE CS_PORT->PIO_CODR |= CS_MASK
#define CS_IDLE CS_PORT->PIO_SODR |= CS_MASK
#else // Due w/Breakout board
#define write8inline(d) { \
PIO_Set(PIOC, (((d) & 0xFF)<<1)); \
PIO_Clear(PIOC, (((~d) & 0xFF)<<1)); \
WR_STROBE; }
#define read8inline(result) { \
RD_ACTIVE; \
delayMicroseconds(1); \
result = ((PIOC->PIO_PDSR & 0x1FE) >> 1); \
RD_IDLE;}
#define setWriteDirInline() { \
PIOC->PIO_MDDR |= 0x000001FE; /*PIOC->PIO_SODR |= 0x000001FE;*/ PIOC->PIO_OER |= 0x000001FE; PIOC->PIO_PER |= 0x000001FE; }
#define setReadDirInline() { \
pmc_enable_periph_clk( ID_PIOC ) ; \
PIOC->PIO_PUDR |= 0x000001FE; PIOC->PIO_IFDR |= 0x000001FE; PIOC->PIO_ODR |= 0x000001FE; PIOC->PIO_PER |= 0x000001FE; }
// When using the TFT breakout board, control pins are configurable.
#define RD_ACTIVE rdPort->PIO_CODR |= rdPinSet //PIO_Clear(rdPort, rdPinSet)
#define RD_IDLE rdPort->PIO_SODR |= rdPinSet //PIO_Set(rdPort, rdPinSet)
#define WR_ACTIVE wrPort->PIO_CODR |= wrPinSet //PIO_Clear(wrPort, wrPinSet)
#define WR_IDLE wrPort->PIO_SODR |= wrPinSet //PIO_Set(wrPort, wrPinSet)
#define CD_COMMAND cdPort->PIO_CODR |= cdPinSet //PIO_Clear(cdPort, cdPinSet)
#define CD_DATA cdPort->PIO_SODR |= cdPinSet //PIO_Set(cdPort, cdPinSet)
#define CS_ACTIVE csPort->PIO_CODR |= csPinSet //PIO_Clear(csPort, csPinSet)
#define CS_IDLE csPort->PIO_SODR |= csPinSet //PIO_Set(csPort, csPinSet)
#endif
#else
#error "Board type unsupported / not recognized"
#endif
#if !defined(__SAM3X8E__)
// Stuff common to all Arduino AVR board types:
#ifdef USE_ADAFRUIT_SHIELD_PINOUT
// Control signals are ACTIVE LOW (idle is HIGH)
// Command/Data: LOW = command, HIGH = data
// These are single-instruction operations and always inline
#define RD_ACTIVE RD_PORT &= ~RD_MASK
#define RD_IDLE RD_PORT |= RD_MASK
#define WR_ACTIVE WR_PORT &= ~WR_MASK
#define WR_IDLE WR_PORT |= WR_MASK
#define CD_COMMAND CD_PORT &= ~CD_MASK
#define CD_DATA CD_PORT |= CD_MASK
#define CS_ACTIVE CS_PORT &= ~CS_MASK
#define CS_IDLE CS_PORT |= CS_MASK
#else // Breakout board
// When using the TFT breakout board, control pins are configurable.
#define RD_ACTIVE *rdPort &= rdPinUnset
#define RD_IDLE *rdPort |= rdPinSet
#define WR_ACTIVE *wrPort &= wrPinUnset
#define WR_IDLE *wrPort |= wrPinSet
#define CD_COMMAND *cdPort &= cdPinUnset
#define CD_DATA *cdPort |= cdPinSet
#define CS_ACTIVE *csPort &= csPinUnset
#define CS_IDLE *csPort |= csPinSet
#endif
#endif
// Data write strobe, ~2 instructions and always inline
#define WR_STROBE { WR_ACTIVE; WR_IDLE; }
// These higher-level operations are usually functionalized,
// except on Mega where's there's gobs and gobs of program space.
// Set value of TFT register: 8-bit address, 8-bit value
#define writeRegister8inline(a, d) { \
CD_COMMAND; write8(a); CD_DATA; write8(d); }
// Set value of TFT register: 16-bit address, 16-bit value
// See notes at top about macro expansion, hence hi & lo temp vars
#define writeRegister16inline(a, d) { \
uint8_t hi, lo; \
hi = (a) >> 8; lo = (a); CD_COMMAND; write8(hi); write8(lo); \
hi = (d) >> 8; lo = (d); CD_DATA ; write8(hi); write8(lo); }
// Set value of 2 TFT registers: Two 8-bit addresses (hi & lo), 16-bit value
#define writeRegisterPairInline(aH, aL, d) { \
uint8_t hi = (d) >> 8, lo = (d); \
CD_COMMAND; write8(aH); CD_DATA; write8(hi); \
CD_COMMAND; write8(aL); CD_DATA; write8(lo); }
#endif // _pin_magic_

172
TFTLCD/registers.h Normal file
View File

@ -0,0 +1,172 @@
// Register names from Peter Barrett's Microtouch code
#define ILI932X_START_OSC 0x00
#define ILI932X_DRIV_OUT_CTRL 0x01
#define ILI932X_DRIV_WAV_CTRL 0x02
#define ILI932X_ENTRY_MOD 0x03
#define ILI932X_RESIZE_CTRL 0x04
#define ILI932X_DISP_CTRL1 0x07
#define ILI932X_DISP_CTRL2 0x08
#define ILI932X_DISP_CTRL3 0x09
#define ILI932X_DISP_CTRL4 0x0A
#define ILI932X_RGB_DISP_IF_CTRL1 0x0C
#define ILI932X_FRM_MARKER_POS 0x0D
#define ILI932X_RGB_DISP_IF_CTRL2 0x0F
#define ILI932X_POW_CTRL1 0x10
#define ILI932X_POW_CTRL2 0x11
#define ILI932X_POW_CTRL3 0x12
#define ILI932X_POW_CTRL4 0x13
#define ILI932X_GRAM_HOR_AD 0x20
#define ILI932X_GRAM_VER_AD 0x21
#define ILI932X_RW_GRAM 0x22
#define ILI932X_POW_CTRL7 0x29
#define ILI932X_FRM_RATE_COL_CTRL 0x2B
#define ILI932X_GAMMA_CTRL1 0x30
#define ILI932X_GAMMA_CTRL2 0x31
#define ILI932X_GAMMA_CTRL3 0x32
#define ILI932X_GAMMA_CTRL4 0x35
#define ILI932X_GAMMA_CTRL5 0x36
#define ILI932X_GAMMA_CTRL6 0x37
#define ILI932X_GAMMA_CTRL7 0x38
#define ILI932X_GAMMA_CTRL8 0x39
#define ILI932X_GAMMA_CTRL9 0x3C
#define ILI932X_GAMMA_CTRL10 0x3D
#define ILI932X_HOR_START_AD 0x50
#define ILI932X_HOR_END_AD 0x51
#define ILI932X_VER_START_AD 0x52
#define ILI932X_VER_END_AD 0x53
#define ILI932X_GATE_SCAN_CTRL1 0x60
#define ILI932X_GATE_SCAN_CTRL2 0x61
#define ILI932X_GATE_SCAN_CTRL3 0x6A
#define ILI932X_PART_IMG1_DISP_POS 0x80
#define ILI932X_PART_IMG1_START_AD 0x81
#define ILI932X_PART_IMG1_END_AD 0x82
#define ILI932X_PART_IMG2_DISP_POS 0x83
#define ILI932X_PART_IMG2_START_AD 0x84
#define ILI932X_PART_IMG2_END_AD 0x85
#define ILI932X_PANEL_IF_CTRL1 0x90
#define ILI932X_PANEL_IF_CTRL2 0x92
#define ILI932X_PANEL_IF_CTRL3 0x93
#define ILI932X_PANEL_IF_CTRL4 0x95
#define ILI932X_PANEL_IF_CTRL5 0x97
#define ILI932X_PANEL_IF_CTRL6 0x98
#define HX8347G_COLADDRSTART_HI 0x02
#define HX8347G_COLADDRSTART_LO 0x03
#define HX8347G_COLADDREND_HI 0x04
#define HX8347G_COLADDREND_LO 0x05
#define HX8347G_ROWADDRSTART_HI 0x06
#define HX8347G_ROWADDRSTART_LO 0x07
#define HX8347G_ROWADDREND_HI 0x08
#define HX8347G_ROWADDREND_LO 0x09
#define HX8347G_MEMACCESS 0x16
#define ILI9341_SOFTRESET 0x01
#define ILI9341_SLEEPIN 0x10
#define ILI9341_SLEEPOUT 0x11
#define ILI9341_NORMALDISP 0x13
#define ILI9341_INVERTOFF 0x20
#define ILI9341_INVERTON 0x21
#define ILI9341_GAMMASET 0x26
#define ILI9341_DISPLAYOFF 0x28
#define ILI9341_DISPLAYON 0x29
#define ILI9341_COLADDRSET 0x2A
#define ILI9341_PAGEADDRSET 0x2B
#define ILI9341_MEMORYWRITE 0x2C
#define ILI9341_PIXELFORMAT 0x3A
#define ILI9341_FRAMECONTROL 0xB1
#define ILI9341_DISPLAYFUNC 0xB6
#define ILI9341_ENTRYMODE 0xB7
#define ILI9341_POWERCONTROL1 0xC0
#define ILI9341_POWERCONTROL2 0xC1
#define ILI9341_VCOMCONTROL1 0xC5
#define ILI9341_VCOMCONTROL2 0xC7
#define ILI9341_MEMCONTROL 0x36
#define ILI9341_MADCTL 0x36
#define ILI9341_MADCTL_MY 0x80
#define ILI9341_MADCTL_MX 0x40
#define ILI9341_MADCTL_MV 0x20
#define ILI9341_MADCTL_ML 0x10
#define ILI9341_MADCTL_RGB 0x00
#define ILI9341_MADCTL_BGR 0x08
#define ILI9341_MADCTL_MH 0x04
#define HX8357_NOP 0x00
#define HX8357_SWRESET 0x01
#define HX8357_RDDID 0x04
#define HX8357_RDDST 0x09
#define HX8357B_RDPOWMODE 0x0A
#define HX8357B_RDMADCTL 0x0B
#define HX8357B_RDCOLMOD 0x0C
#define HX8357B_RDDIM 0x0D
#define HX8357B_RDDSDR 0x0F
#define HX8357_SLPIN 0x10
#define HX8357_SLPOUT 0x11
#define HX8357B_PTLON 0x12
#define HX8357B_NORON 0x13
#define HX8357_INVOFF 0x20
#define HX8357_INVON 0x21
#define HX8357_DISPOFF 0x28
#define HX8357_DISPON 0x29
#define HX8357_CASET 0x2A
#define HX8357_PASET 0x2B
#define HX8357_RAMWR 0x2C
#define HX8357_RAMRD 0x2E
#define HX8357B_PTLAR 0x30
#define HX8357_TEON 0x35
#define HX8357_TEARLINE 0x44
#define HX8357_MADCTL 0x36
#define HX8357_COLMOD 0x3A
#define HX8357_SETOSC 0xB0
#define HX8357_SETPWR1 0xB1
#define HX8357B_SETDISPLAY 0xB2
#define HX8357_SETRGB 0xB3
#define HX8357D_SETCOM 0xB6
#define HX8357B_SETDISPMODE 0xB4
#define HX8357D_SETCYC 0xB4
#define HX8357B_SETOTP 0xB7
#define HX8357D_SETC 0xB9
#define HX8357B_SET_PANEL_DRIVING 0xC0
#define HX8357D_SETSTBA 0xC0
#define HX8357B_SETDGC 0xC1
#define HX8357B_SETID 0xC3
#define HX8357B_SETDDB 0xC4
#define HX8357B_SETDISPLAYFRAME 0xC5
#define HX8357B_GAMMASET 0xC8
#define HX8357B_SETCABC 0xC9
#define HX8357_SETPANEL 0xCC
#define HX8357B_SETPOWER 0xD0
#define HX8357B_SETVCOM 0xD1
#define HX8357B_SETPWRNORMAL 0xD2
#define HX8357B_RDID1 0xDA
#define HX8357B_RDID2 0xDB
#define HX8357B_RDID3 0xDC
#define HX8357B_RDID4 0xDD
#define HX8357D_SETGAMMA 0xE0
#define HX8357B_SETGAMMA 0xC8
#define HX8357B_SETPANELRELATED 0xE9
#define HX8357B_MADCTL_MY 0x80
#define HX8357B_MADCTL_MX 0x40
#define HX8357B_MADCTL_MV 0x20
#define HX8357B_MADCTL_ML 0x10
#define HX8357B_MADCTL_RGB 0x00
#define HX8357B_MADCTL_BGR 0x08
#define HX8357B_MADCTL_MH 0x04

BIN
Touch-Screen/.DS_Store vendored Normal file

Binary file not shown.

View File

@ -0,0 +1,285 @@
// Touch screen library with X Y and Z (pressure) readings as well
// as oversampling to avoid 'bouncing'
// (c) ladyada / adafruit
// Code under MIT License
#include "Arduino.h"
#include "pins_arduino.h"
#ifdef __AVR
#include <avr/pgmspace.h>
#elif defined(ESP8266)
#include <pgmspace.h>
#endif
#include "TouchScreen.h"
// increase or decrease the touchscreen oversampling. This is a little different than you make think:
// 1 is no oversampling, whatever data we get is immediately returned
// 2 is double-sampling and we only return valid data if both points are the same
// 3+ uses insert sort to get the median value.
// We found 2 is precise yet not too slow so we suggest sticking with it!
#define NUMSAMPLES 2
TSPoint::TSPoint(void) {
x = y = 0;
}
TSPoint::TSPoint(int16_t x0, int16_t y0, int16_t z0) {
x = x0;
y = y0;
z = z0;
}
bool TSPoint::operator==(TSPoint p1) {
return ((p1.x == x) && (p1.y == y) && (p1.z == z));
}
bool TSPoint::operator!=(TSPoint p1) {
return ((p1.x != x) || (p1.y != y) || (p1.z != z));
}
#if (NUMSAMPLES > 2)
static void insert_sort(int array[], uint8_t size) {
uint8_t j;
int save;
for (int i = 1; i < size; i++) {
save = array[i];
for (j = i; j >= 1 && save < array[j - 1]; j--)
array[j] = array[j - 1];
array[j] = save;
}
}
#endif
TSPoint TouchScreen::getPoint(void) {
int x, y, z;
int samples[NUMSAMPLES];
uint8_t i, valid;
#if defined(ARDUINO_ARCH_SAM)
Pio* xp_port = digitalPinToPort(_xp);
Pio* yp_port = digitalPinToPort(_yp);
Pio* xm_port = digitalPinToPort(_xm);
Pio* ym_port = digitalPinToPort(_ym);
uint32_t xp_pin = digitalPinToBitMask(_xp);
uint32_t yp_pin = digitalPinToBitMask(_yp);
uint32_t xm_pin = digitalPinToBitMask(_xm);
uint32_t ym_pin = digitalPinToBitMask(_ym);
#elif defined(ARDUINO_ARCH_SAMD)
PortGroup* xp_port = digitalPinToPort(_xp);
PortGroup* yp_port = digitalPinToPort(_yp);
PortGroup* xm_port = digitalPinToPort(_xm);
PortGroup* ym_port = digitalPinToPort(_ym);
uint32_t xp_pin = digitalPinToBitMask(_xp);
uint32_t yp_pin = digitalPinToBitMask(_yp);
uint32_t xm_pin = digitalPinToBitMask(_xm);
uint32_t ym_pin = digitalPinToBitMask(_ym);
#else
uint8_t xp_port = digitalPinToPort(_xp);
uint8_t yp_port = digitalPinToPort(_yp);
uint8_t xm_port = digitalPinToPort(_xm);
uint8_t ym_port = digitalPinToPort(_ym);
uint8_t xp_pin = digitalPinToBitMask(_xp);
uint8_t yp_pin = digitalPinToBitMask(_yp);
uint8_t xm_pin = digitalPinToBitMask(_xm);
uint8_t ym_pin = digitalPinToBitMask(_ym);
#endif
valid = 1;
pinMode(_yp, INPUT);
pinMode(_ym, INPUT);
*portOutputRegister(yp_port) &= ~yp_pin;
*portOutputRegister(ym_port) &= ~ym_pin;
//digitalWrite(_yp, LOW);
//digitalWrite(_ym, LOW);
pinMode(_xp, OUTPUT);
pinMode(_xm, OUTPUT);
//digitalWrite(_xp, HIGH);
//digitalWrite(_xm, LOW);
*portOutputRegister(xp_port) |= xp_pin;
*portOutputRegister(xm_port) &= ~xm_pin;
#ifdef __arm__
delayMicroseconds(20); // Fast ARM chips need to allow voltages to settle
#endif
for (i=0; i<NUMSAMPLES; i++) {
samples[i] = analogRead(_yp);
}
#if NUMSAMPLES > 2
insert_sort(samples, NUMSAMPLES);
#endif
#if NUMSAMPLES == 2
// Allow small amount of measurement noise, because capacitive
// coupling to a TFT display's signals can induce some noise.
if (samples[0] - samples[1] < -4 || samples[0] - samples[1] > 4) {
valid = 0;
} else {
samples[1] = (samples[0] + samples[1]) >> 1; // average 2 samples
}
#endif
x = (1023-samples[NUMSAMPLES/2]);
pinMode(_xp, INPUT);
pinMode(_xm, INPUT);
*portOutputRegister(xp_port) &= ~xp_pin;
//digitalWrite(_xp, LOW);
pinMode(_yp, OUTPUT);
*portOutputRegister(yp_port) |= yp_pin;
//digitalWrite(_yp, HIGH);
pinMode(_ym, OUTPUT);
#ifdef __arm__
delayMicroseconds(20); // Fast ARM chips need to allow voltages to settle
#endif
for (i=0; i<NUMSAMPLES; i++) {
samples[i] = analogRead(_xm);
}
#if NUMSAMPLES > 2
insert_sort(samples, NUMSAMPLES);
#endif
#if NUMSAMPLES == 2
// Allow small amount of measurement noise, because capacitive
// coupling to a TFT display's signals can induce some noise.
if (samples[0] - samples[1] < -4 || samples[0] - samples[1] > 4) {
valid = 0;
} else {
samples[1] = (samples[0] + samples[1]) >> 1; // average 2 samples
}
#endif
y = (1023-samples[NUMSAMPLES/2]);
// Set X+ to ground
pinMode(_xp, OUTPUT);
*portOutputRegister(xp_port) &= ~xp_pin;
//digitalWrite(_xp, LOW);
// Set Y- to VCC
*portOutputRegister(ym_port) |= ym_pin;
//digitalWrite(_ym, HIGH);
// Hi-Z X- and Y+
*portOutputRegister(yp_port) &= ~yp_pin;
//digitalWrite(_yp, LOW);
pinMode(_yp, INPUT);
int z1 = analogRead(_xm);
int z2 = analogRead(_yp);
if (_rxplate != 0) {
// now read the x
float rtouch;
rtouch = z2;
rtouch /= z1;
rtouch -= 1;
rtouch *= x;
rtouch *= _rxplate;
rtouch /= 1024;
z = rtouch;
} else {
z = (1023-(z2-z1));
}
if (! valid) {
z = 0;
}
return TSPoint(x, y, z);
}
TouchScreen::TouchScreen(uint8_t xp, uint8_t yp, uint8_t xm, uint8_t ym) {
_yp = yp;
_xm = xm;
_ym = ym;
_xp = xp;
_rxplate = 0;
pressureThreshhold = 10;
}
TouchScreen::TouchScreen(uint8_t xp, uint8_t yp, uint8_t xm, uint8_t ym,
uint16_t rxplate) {
_yp = yp;
_xm = xm;
_ym = ym;
_xp = xp;
_rxplate = rxplate;
pressureThreshhold = 10;
}
int TouchScreen::readTouchX(void) {
pinMode(_yp, INPUT);
pinMode(_ym, INPUT);
digitalWrite(_yp, LOW);
digitalWrite(_ym, LOW);
pinMode(_xp, OUTPUT);
digitalWrite(_xp, HIGH);
pinMode(_xm, OUTPUT);
digitalWrite(_xm, LOW);
return (1023-analogRead(_yp));
}
int TouchScreen::readTouchY(void) {
pinMode(_xp, INPUT);
pinMode(_xm, INPUT);
digitalWrite(_xp, LOW);
digitalWrite(_xm, LOW);
pinMode(_yp, OUTPUT);
digitalWrite(_yp, HIGH);
pinMode(_ym, OUTPUT);
digitalWrite(_ym, LOW);
return (1023-analogRead(_xm));
}
uint16_t TouchScreen::pressure(void) {
// Set X+ to ground
pinMode(_xp, OUTPUT);
digitalWrite(_xp, LOW);
// Set Y- to VCC
pinMode(_ym, OUTPUT);
digitalWrite(_ym, HIGH);
// Hi-Z X- and Y+
digitalWrite(_xm, LOW);
pinMode(_xm, INPUT);
digitalWrite(_yp, LOW);
pinMode(_yp, INPUT);
int z1 = analogRead(_xm);
int z2 = analogRead(_yp);
if (_rxplate != 0) {
// now read the x
float rtouch;
rtouch = z2;
rtouch /= z1;
rtouch -= 1;
rtouch *= readTouchX();
rtouch *= _rxplate;
rtouch /= 1024;
return rtouch;
} else {
return (1023-(z2-z1));
}
}

View File

@ -0,0 +1,38 @@
// Touch screen library with X Y and Z (pressure) readings as well
// as oversampling to avoid 'bouncing'
// (c) ladyada / adafruit
// Code under MIT License
#ifndef _ADAFRUIT_TOUCHSCREEN_H_
#define _ADAFRUIT_TOUCHSCREEN_H_
#include <stdint.h>
class TSPoint {
public:
TSPoint(void);
TSPoint(int16_t x, int16_t y, int16_t z);
bool operator==(TSPoint);
bool operator!=(TSPoint);
int16_t x, y, z;
};
class TouchScreen {
public:
TouchScreen(uint8_t xp, uint8_t yp, uint8_t xm, uint8_t ym);
TouchScreen(uint8_t xp, uint8_t yp, uint8_t xm, uint8_t ym, uint16_t rx);
bool isTouching(void);
uint16_t pressure(void);
int readTouchY();
int readTouchX();
TSPoint getPoint();
int16_t pressureThreshhold;
private:
uint8_t _yp, _ym, _xm, _xp;
uint16_t _rxplate;
};
#endif

33
hmi.cpp Normal file
View File

@ -0,0 +1,33 @@
/*
* hmi.cpp
*
* Created on: 02.03.2016
* Author: dehottgw
*/
#include "hmi.h"
using namespace HmiNS;
Hmi::Hmi() : m_tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET),
m_displayIdentifier(0) {
for (uint8_t i = 0; i < NUM_OF_MESSAGESLOTS; i++) {
memset(m_messageSlots[i].header, 0, BUFFERLEN_MESSAGESLOT);
memset(m_messageSlots[i].body, 0, BUFFERLEN_MESSAGESLOT);
m_messageSlots[i].timestamp = 0;
}
}
void Hmi::begin() {
m_tft.reset();
m_displayIdentifier = m_tft.readID();
m_tft.begin(m_displayIdentifier);
m_tft.setRotation(1);
}
void Hmi::exec() {
}

57
hmi.h Normal file
View File

@ -0,0 +1,57 @@
/*
* hmi.h
*
* Created on: 02.03.2016
* Author: dehottgw
*/
#ifndef HMI_H_
#define HMI_H_
#include <Adafruit_GFX.h>
#include <Adafruit_TFTLCD.h>
namespace HmiNS {
const static uint8_t LCD_CS = A3;
const static uint8_t LCD_CD = A2;
const static uint8_t LCD_WR = A1;
const static uint8_t LCD_RD = A0;
const static uint8_t LCD_RESET = A4;
const static uint16_t BLACK = 0x0000;
const static uint16_t BLUE = 0x001F;
const static uint16_t RED = 0xF800;
const static uint16_t GREEN = 0x07E0;
const static uint16_t CYAN = 0x07FF;
const static uint16_t MAGENTA = 0xF81F;
const static uint16_t YELLOW = 0xFFE0;
const static uint16_t WHITE = 0xFFFF;
const static uint8_t BUFFERLEN_MESSAGESLOT = 10;
const static uint8_t NUM_OF_MESSAGESLOTS = 10;
}
struct MessageSlot {
char header[HmiNS::BUFFERLEN_MESSAGESLOT];
char body[HmiNS::BUFFERLEN_MESSAGESLOT];
uint32_t timestamp;
};
class Hmi {
public:
Hmi();
void begin();
void exec();
void updateMessage()
private:
uint16_t m_displayIdentifier;
Adafruit_TFTLCD m_tft;
MessageSlot m_messageSlots[HmiNS::NUM_OF_MESSAGESLOTS];
};
#endif /* HMI_H_ */

2
spec.d Normal file
View File

@ -0,0 +1,2 @@
spec.o: \
C:/Users/dehottgw/workspace-arduino/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C