diff options
Diffstat (limited to 'samples/obdtest')
-rw-r--r-- | samples/obdtest/obdtest.cbp | 663 | ||||
-rw-r--r-- | samples/obdtest/obdtest.ino | 382 |
2 files changed, 0 insertions, 1045 deletions
diff --git a/samples/obdtest/obdtest.cbp b/samples/obdtest/obdtest.cbp deleted file mode 100644 index e7eee55..0000000 --- a/samples/obdtest/obdtest.cbp +++ /dev/null @@ -1,663 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> -<CodeBlocks_project_file> - <FileVersion major="1" minor="6" /> - <Project> - <Option title="obdtest" /> - <Option pch_mode="2" /> - <Option compiler="gcc" /> - <Build> - <Target title="Simulator - Debug"> - <Option output="build/obdtest_sim.exe" prefix_auto="1" extension_auto="0" /> - <Option object_output="obj/Debug/" /> - <Option type="1" /> - <Option compiler="GCC" /> - <Compiler> - <Add option="-g" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-DARDUSIM" /> - <Add option="-D__AVR_ATmega2560__" /> - <Add option="-x c++" /> - <Add directory="$(ARDUINO_DIR)/arduino/cores" /> - <Add directory="$(ARDUINO_DIR)/arduino/variants/standard" /> - <Add directory="$(ARDUINO_DIR)/include" /> - </Compiler> - <Linker> - <Add option="-lardusim" /> - </Linker> - <Environment> - <Variable name="ARDUINO_DIR" value="$(APP_PATH)\ardusim" /> - </Environment> - </Target> - <Target title="Simulator - Release"> - <Option output="build/obdtest_sim.exe" prefix_auto="1" extension_auto="0" /> - <Option object_output="obj/Release/" /> - <Option type="1" /> - <Option compiler="GCC" /> - <Compiler> - <Add option="-O2" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-DARDUSIM" /> - <Add option="-D__AVR_ATmega2560__" /> - <Add option="-x c++" /> - <Add directory="$(ARDUINO_DIR)/arduino/cores" /> - <Add directory="$(ARDUINO_DIR)/arduino/variants/standard" /> - <Add directory="$(ARDUINO_DIR)/include" /> - </Compiler> - <Linker> - <Add option="-s" /> - <Add option="-lardusim" /> - </Linker> - <Environment> - <Variable name="ARDUINO_DIR" value="$(APP_PATH)\ardusim" /> - </Environment> - </Target> - <Target title="Arduino Uno"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega328P__" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Uno" /> - <Variable name="BOARD_ID" value="uno" /> - <Variable name="MCU" value="atmega328p" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="115200" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Leonardo"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega32U4__" /> - <Add option="-DUSB_VID=0x2341" /> - <Add option="-DUSB_PID=0x8036" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/leonardo" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Leonardo" /> - <Variable name="BOARD_ID" value="leonardo" /> - <Variable name="MCU" value="atmega32u4" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="57600" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Esplora"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega32U4__" /> - <Add option="-DUSB_VID=0x2341" /> - <Add option="-DUSB_PID=0x8037" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/leonardo" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Esplora" /> - <Variable name="BOARD_ID" value="esplora" /> - <Variable name="MCU" value="atmega32u4" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="57600" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Micro"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega32U4__" /> - <Add option="-DUSB_VID=0x2341" /> - <Add option="-DUSB_PID=0x803C" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/micro" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Micro" /> - <Variable name="BOARD_ID" value="micro" /> - <Variable name="MCU" value="atmega32u4" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="57600" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Duemilanove (328)"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega328P__" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Duemilanove (328)" /> - <Variable name="BOARD_ID" value="duemilanove328" /> - <Variable name="MCU" value="atmega328p" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="57600" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Duemilanove (168)"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega168__" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Duemilanove (168)" /> - <Variable name="BOARD_ID" value="duemilanove168" /> - <Variable name="MCU" value="atmega168" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="19200" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Nano (328)"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega328P__" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Nano (328)" /> - <Variable name="BOARD_ID" value="nano328" /> - <Variable name="MCU" value="atmega328p" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="57600" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Nano (168)"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega168__" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Nano (168)" /> - <Variable name="BOARD_ID" value="nano168" /> - <Variable name="MCU" value="atmega168" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="19200" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Mini (328)"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega328P__" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Mini (328)" /> - <Variable name="BOARD_ID" value="mini328" /> - <Variable name="MCU" value="atmega328p" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="57600" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Mini (168)"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega168__" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/eightanaloginputs" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Mini (168)" /> - <Variable name="BOARD_ID" value="mini168" /> - <Variable name="MCU" value="atmega168" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="19200" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Pro Mini (328)"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega328P__" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Pro Mini (328)" /> - <Variable name="BOARD_ID" value="promini328" /> - <Variable name="MCU" value="atmega328p" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="57600" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Pro Mini (168)"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega168__" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Pro Mini (168)" /> - <Variable name="BOARD_ID" value="promini168" /> - <Variable name="MCU" value="atmega168" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="19200" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Mega 2560/ADK"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega2560__" /> - <Add option="-O2" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/mega" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Mega 2560\ADK" /> - <Variable name="BOARD_ID" value="mega2560" /> - <Variable name="MCU" value="atmega2560" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="57600" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Mega 1280"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega1280__" /> - <Add option="-O2" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/mega" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Mega 1280" /> - <Variable name="BOARD_ID" value="mega1280" /> - <Variable name="MCU" value="atmega1280" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="57600" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Arduino Mega 8"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega328P__" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/standard" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Arduino Mega 8" /> - <Variable name="BOARD_ID" value="mega8" /> - <Variable name="MCU" value="atmega8" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="19200" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - <Target title="Microduino Core+ (644P)"> - <Option output="build/obdtest_${BOARD_ID}.elf" prefix_auto="1" extension_auto="0" /> - <Option object_output="build" /> - <Option type="1" /> - <Option compiler="avrgcc" /> - <Compiler> - <Add option="-x c++" /> - <Add option="-mmcu=$(MCU)" /> - <Add option="-DF_CPU=16000000L" /> - <Add option="-D__AVR_ATmega644P__" /> - <Add option="-O2" /> - <Add option="-Os" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/cores/arduino" /> - <Add directory="$(ARDUINO_DIR)/libraries" /> - <Add directory="$(ARDUINO_DIR)/hardware/arduino/variants/plus" /> - </Compiler> - <Linker> - <Add option="-mmcu=$(MCU)" /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option='"$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add option="-s" /> - </Linker> - <ExtraCommands> - <Add before='$(TARGET_COMPILER_DIR)ArduinoUploader "$(PROJECT_DIR)." $(BOARD_ID) - $(MCU_CLOCK) 0 "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/lib_${BOARD_ID}_${MCU_CLOCK}.a" "$(PROJECT_DIR)${TARGET_OUTPUT_DIR}/core_${BOARD_ID}_${MCU_CLOCK}.a"' /> - <Add after='avr-objcopy -O ihex -R .eeprom -R .eesafe "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).hex"' /> - <Add after='avr-objcopy --no-change-warnings -j .eeprom --change-section-lma .eeprom=0 -O ihex "$(TARGET_OUTPUT_FILE)" "$(TARGET_OUTPUT_FILE).eep.hex"' /> - <Add after='avr-size --mcu=$(MCU) --format=avr "$(TARGET_OUTPUT_FILE)"' /> - </ExtraCommands> - <Environment> - <Variable name="BOARD" value="Microduino Core+ (644P)" /> - <Variable name="BOARD_ID" value="uduino644p" /> - <Variable name="MCU" value="atmega644p" /> - <Variable name="MCU_CLOCK" value="16" /> - <Variable name="UPLOAD_BAUDRATE" value="115200" /> - <Variable name="UPLOAD_PORT" value="" /> - </Environment> - </Target> - </Build> - <Compiler> - <Add directory="." /> - </Compiler> - <Unit filename="obdtest.ino"> - <Option compile="1" /> - <Option link="1" /> - </Unit> - <Extensions> - <code_completion /> - <debugger /> - </Extensions> - </Project> -</CodeBlocks_project_file> diff --git a/samples/obdtest/obdtest.ino b/samples/obdtest/obdtest.ino deleted file mode 100644 index ba7ad62..0000000 --- a/samples/obdtest/obdtest.ino +++ /dev/null @@ -1,382 +0,0 @@ -#include <Arduino.h> -#include <Wire.h> -#include <SPI.h> -#include <MultiLCD.h> -#include <TinyGPS.h> -#include <OBD.h> -#include <MPU6050.h> - -#define INIT_CMD_COUNT 4 -#define MAX_CMD_LEN 6 - -// GPS logging can only be enabled when there is additional hardware serial UART -#if defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) -#define GPSUART Serial3 -#elif defined(__AVR_ATmega644P__) -#define GPSUART Serial1 -#endif - -#define GPS_BAUDRATE 38400 /* bps */ - -#ifdef GPSUART -TinyGPS gps; -#endif // GPSUART - -int MPU6050_read(int start, uint8_t *buffer, int size); - -char initcmd[INIT_CMD_COUNT][MAX_CMD_LEN] = {"ATZ\r","ATE0\r","ATL1\r","0902\r"}; - -//SoftwareSerial softSerial(2, 3); // RX, TX - -unsigned int adc_key_val[5] ={30, 150, 360, 535, 760 }; -int NUM_KEYS = 5; -int adc_key_in; -char key=-1; -char oldkey=-1; - -byte index = 0; -uint16_t pid = 0x0111; - -bool hasMPU6050 = false; - -//create object to control an LCD. -//LCD_SSD1306 lcd; -//LCD_PCD8544 lcd; -//LCD_ILI9325D lcd; -LCD_ILI9341 lcd; - -#ifdef GPSUART -void ShowGPSData() -{ - // parsed GPS data is ready - char buf[32]; - unsigned long fix_age; - - unsigned long date, time; - gps.get_datetime(&date, &time, &fix_age); - sprintf(buf, "TIME: %08ld", time); - lcd.setCursor(0, 6); - lcd.print(buf); - - long lat, lon; - gps.get_position(&lat, &lon, &fix_age); - // display LAT/LON if screen is big enough - lcd.setCursor(0, 7); - if (((unsigned int)millis() / 1000) & 1) - sprintf(buf, "LAT: %d.%5ld ", (int)(lat / 100000), lat % 100000); - else - sprintf(buf, "LON: %d.%5ld ", (int)(lon / 100000), lon % 100000); - lcd.print(buf); -} -#endif - -class COBDTester : public COBD -{ -public: - bool Init(bool passive = false) - { - unsigned long currentMillis; - unsigned char n; - char prompted; - char buffer[128]; - - for (unsigned char i = 0; i < INIT_CMD_COUNT; i++) { - write(initcmd[i]); - n = 0; - prompted = 0; - currentMillis = millis(); - for (;;) { - if (available()) { - char c = read(); - if (c == '>') { - buffer[n] = 0; - prompted++; - } else if (n < sizeof(buffer) - 1) { - buffer[n++] = c; - lcd.write(c); - } - } else if (prompted) { - break; - } else { - unsigned long elapsed = millis() - currentMillis; - if (elapsed > OBD_TIMEOUT_SHORT) { - // init timeout - //WriteData("\r"); - lcd.println("Timeout!"); - if (i == 0) return false; - i--; - break; - } - } - } - delay(500); - } - - //while (digitalRead(8) != 0); - lcd.clear(); - lcd.println("VIN:"); - - // parse VIN - char *p; - lcd.println(buffer); - if (p = strchr(buffer, ':')) {; - byte *q = vin; - p += 10; - memset(vin, '-', sizeof(vin)); - while (*p == ' ') { - p++; - if (*(p + 1) == ':') { - p += 2; - continue; - } - *(q++) = hex2uint8(p); - p += 2; - } - } - for (byte i = 0; i < sizeof(vin); i++) { - lcd.write(vin[i]); - } - delay(5000); - - char* data; - memset(pidmap, 0, sizeof(pidmap)); - lcd.clear(); - for (byte i = 0; i < 4; i++) { - sprintf(buffer, "PIDs [%02x-%02x]", i * 0x20 + 1, i * 0x20 + 0x20); - lcd.println(buffer); - byte pid = i * 0x20; - sendQuery(pid); - data = getResponse(pid, buffer); - if (!data) break; - lcd.println(buffer); - delay(500); - data--; - for (byte n = 0; n < 4; n++) { - if (data[n * 3] != ' ') - break; - pidmap[i * 4 + n] = hex2uint8(data + n * 3 + 1); - } - } - delay(2000); - - errors = 0; - return true; - } - void SendQuery() - { - char buf[17]; - switch (index) { - case 0: - sprintf(buf, "[%04X]", pid); - break; - case 1: - sprintf(buf, "%03X[%01X]", pid >> 4, pid & 0xf); - break; - case 2: - sprintf(buf, "%02X[%01X]%01X", pid >> 8, (pid >> 4) & 0xf, pid & 0xf); - break; - case 3: - sprintf(buf, "%01X[%01X]%02X", pid >> 12, (pid >> 8) & 0xf, pid & 0xff); - break; - case 4: - sprintf(buf, "[%01X]%03X", pid >> 12, pid & 0xfff); - break; - } - - lcd.setCursor(0, 0); - lcd.print(buf); - - dataMode = (byte)(pid >> 8); - sendQuery((byte)pid); - } - void Recover() - { - write('\r'); - } - void Loop() - { - int value; - char buffer[OBD_RECV_BUF_SIZE]; - bool gpsReady = false; - - // issue a query for specified OBD-II pid - SendQuery(); - - do { -#ifdef GPSUART - // while waiting for response, test GPS - unsigned long start = millis(); - while (GPSUART.available() && millis() - start < 100) { - if (gps.encode(GPSUART.read())) { - gpsReady = true; - } - } -#endif - } while (!available()); - -#ifdef GPSUART - if (gpsReady) - ShowGPSData(); -#endif - - // check OBD response - buffer[0] = 0; - byte curpid = (byte)pid; - char* data = getResponse(curpid, buffer); - lcd.setCursor(6, 0); - if (!data) { - lcd.setCursor(0, 2); - lcd.print("Error"); - // try recover next time - Recover(); - } else { - char *p = buffer; - while (*p && *p < ' ') p++; - for (char *q = p; *q; q++) { - if (*q < ' ') *q = ' '; - } - lcd.setCursor(0, 2); - lcd.print(p); - lcd.setCursor(7 * 9, 0); - sprintf(buffer, "%d", normalizeData(curpid, data)); - lcd.print(buffer); - } - } -}; - -COBDTester obd; - -// Convert ADC value to key number -char get_key(unsigned int input) -{ - char k; - for (k = 0; k < NUM_KEYS; k++) { - if (input < adc_key_val[k]) - return k; - } - return -1; -} - -void testMPU6050() -{ - int error; - float dT; - accel_t_gyro_union accel_t_gyro; - - // Read the raw values. - // Read 14 bytes at once, - // containing acceleration, temperature and gyro. - // With the default settings of the MPU-6050, - // there is no filter enabled, and the values - // are not very stable. - - error = MPU6050_read (MPU6050_ACCEL_XOUT_H, (uint8_t *) &accel_t_gyro, sizeof(accel_t_gyro)); - if (error != 0) { - lcd.setCursor(0, 4); - lcd.print("MPU6050 N/A"); - return; - } - - - // Swap all high and low bytes. - // After this, the registers values are swapped, - // so the structure name like x_accel_l does no - // longer contain the lower byte. - uint8_t swap; - #define SWAP(x,y) swap = x; x = y; y = swap - - SWAP (accel_t_gyro.reg.x_accel_h, accel_t_gyro.reg.x_accel_l); - SWAP (accel_t_gyro.reg.y_accel_h, accel_t_gyro.reg.y_accel_l); - SWAP (accel_t_gyro.reg.z_accel_h, accel_t_gyro.reg.z_accel_l); - SWAP (accel_t_gyro.reg.t_h, accel_t_gyro.reg.t_l); - SWAP (accel_t_gyro.reg.x_gyro_h, accel_t_gyro.reg.x_gyro_l); - SWAP (accel_t_gyro.reg.y_gyro_h, accel_t_gyro.reg.y_gyro_l); - SWAP (accel_t_gyro.reg.z_gyro_h, accel_t_gyro.reg.z_gyro_l); - - - // Print the raw acceleration values - - char buf[20]; - dT = ( (float) accel_t_gyro.value.temperature + 12412.0) / 340.0; - sprintf(buf, "%d %d %d %d ", - (int)dT, - accel_t_gyro.value.x_accel / 128, - accel_t_gyro.value.y_accel / 128, - accel_t_gyro.value.z_accel / 128); - //Serial.println(buf); - lcd.setCursor(0, 4); - lcd.print(buf); -} - -void ShowECUCap() -{ - char buffer[24]; - byte pidlist[] = {PID_RPM, PID_SPEED, PID_THROTTLE, PID_ENGINE_LOAD, PID_MAF_FLOW, PID_INTAKE_MAP, PID_FUEL_LEVEL, PID_FUEL_PRESSURE, PID_COOLANT_TEMP, PID_INTAKE_TEMP, PID_AMBIENT_TEMP, PID_TIMING_ADVANCE, PID_BAROMETRIC}; - const char* namelist[] = {"RPM", "SPEED", "THROTTLE", "ENG.LOAD", "MAF", "MAP", "FUEL LV.", "FUEL PRE.", "COOLANT", "INTAKE","AMBIENT", "IGNITION", "BARO"}; - byte i = 0; - lcd.clear(); - for (; i < sizeof(pidlist) / sizeof(pidlist[0]) / 2; i++) { - lcd.setCursor(0, i); - sprintf(buffer, "%s:%c", namelist[i], obd.isValidPID(pidlist[i]) ? 'Y' : 'N'); - lcd.print(buffer); - } - for (byte row = 0; i < sizeof(pidlist) / sizeof(pidlist[0]); i++, row++) { - lcd.setCursor(64, row); - sprintf(buffer, "%s:%c", namelist[i], obd.isValidPID(pidlist[i]) ? 'Y' : 'N'); - lcd.print(buffer); - } -} - -void setup() -{ - Wire.begin(); - lcd.begin(); -#ifdef GPSUART - GPSUART.begin(GPS_BAUDRATE); -#endif - - obd.begin(); - - pinMode(8, INPUT); - - do { - lcd.setCursor(0, 0); - lcd.println("Init MPU6050..."); - - hasMPU6050 = MPU6050_init() == 0; - if (hasMPU6050) { - unsigned long t = millis(); - do { - testMPU6050(); - delay(100); - } while (millis() - t <= 1000); - } - delay(1000); - -#ifdef GPSUART - if (GPSUART.available()) { - lcd.println("Init GPS... "); - delay(1000); - } -#endif - lcd.println("Init OBD... "); - if (hasMPU6050) { - testMPU6050(); - } - delay(500); - } while(!obd.Init()); - - ShowECUCap(); - delay(3000); - lcd.clear(); -} - -void loop() -{ - obd.Loop(); - - // test MPU6050 - if (hasMPU6050) { - testMPU6050(); - } -} |