From 2e56561f788107b7678d28a1751125e0e2ddf394 Mon Sep 17 00:00:00 2001 From: KenwoodFox Date: Tue, 4 Jan 2022 13:52:55 -0500 Subject: [PATCH] Import all arduino boilerplate --- .gitignore | 1 + motor_controller/Makefile | 99 +++++++++++++++++++++++++++ motor_controller/motor_controller.ino | 37 ++++++++++ motor_controller/requirements.txt | 1 + 4 files changed, 138 insertions(+) create mode 100644 motor_controller/Makefile create mode 100644 motor_controller/motor_controller.ino create mode 100644 motor_controller/requirements.txt diff --git a/.gitignore b/.gitignore index 7b82d6c..533e4b1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ # Backups/Generated Artifacts +_build *.FCStd1 # Binaries diff --git a/motor_controller/Makefile b/motor_controller/Makefile new file mode 100644 index 0000000..cc4ec07 --- /dev/null +++ b/motor_controller/Makefile @@ -0,0 +1,99 @@ +# A makefile for building the motor controller code. +# Uses arduino-cli, adapted from Steven Hale and others arduino make file practices +# +# 2021 + +PROJ := motor_controller + +# What board to build for and its core +CORE ?= arduino:avr +FQBN ?= arduino:avr:mega + +# Tools, their links and versions +ARDUINO_CLI_VERSION := +ARDUINO_CLI_URL := https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh +ARDUINO_LINT_VERSION := +ARDUINO_LINT_URL := https://raw.githubusercontent.com/arduino/arduino-lint/main/etc/install.sh + +# The version and time we're compiling from +GIT_VERSION := "$(shell git describe --abbrev=4 --dirty --always --tags)" +COMPILED_DATE := "$(shell date)" + +# Treat all warnings as errors. +BUILDPROP := compiler.warning_flags.all='-Wall -Wextra -Werror' + +# Locations +ROOT := $(PWD) +BINDIR := $(ROOT)/_build/bin +BUILDDIR := $(ROOT)/_build + +# What port to build on +ifndef SERIAL_DEV + ifneq (,$(wildcard /dev/ttyUSB0)) + SERIAL_DEV = /dev/ttyUSB0 + else ifneq (,$(wildcard /dev/ttyACM0)) + SERIAL_DEV = /dev/ttyACM0 + else + SERIAL_DEV = unknown + endif +endif + + +.PHONY: all help build upload version release requirements + +# Do everything +all: tools requirements version build + + +help: + @echo + @echo "Targets:" + @echo " lint De-lint the software." + @echo " build Build the software." + @echo " upload Upload the software." + @echo " requirements Fetch all requirements." + @echo + + +# Set VERBOSE=1 to not run in --silent + +ifndef VERBOSE +.SILENT: +endif + +# Only build the code +build: version $(PROJ).ino + $(BINDIR)/arduino-cli core install $(CORE) + $(BINDIR)/arduino-cli compile -b $(FQBN) $(PROJ) + +# Only upload the software +upload: version build $(PROJ).ino + $(BINDIR)/arduino-cli upload -b $(FQBN) $(PROJ) -p $(SERIAL_DEV) + +# Only update the version +version: + echo "#define VERSION \"$(GIT_VERSION)\"" > version.h + echo "#define COMPILED_ON \"$(COMPILED_DATE)\"" >> version.h + +# Generate an artifact +release: build $(PROJ).ino + $(BINDIR)/arduino-cli compile -b $(FQBN) $(PROJ) --output-dir $(BUILDDIR) + +# Only fetch the requirements +requirements: + @if [ -e requirements.txt ]; \ + then while read -r i ; do echo ; \ + echo "---> Installing " '"'$$i'"' ; \ + $(BINDIR)/arduino-cli lib install "$$i" ; \ + done < requirements.txt ; \ + else echo "---> MISSING requirements.txt file"; \ + fi + +lint: + $(BINDIR)/arduino-lint --compliance strict + +# Fetches all the tools required +tools: + mkdir -p $(BINDIR) + curl -fsSL $(ARDUINO_CLI_URL) | BINDIR=$(BINDIR) sh -s $(ARDUINO_CLI_VERSION) + curl -fsSL $(ARDUINO_LINT_URL) | BINDIR=$(BINDIR) sh -s $(ARDUINO_LINT_VERSION) diff --git a/motor_controller/motor_controller.ino b/motor_controller/motor_controller.ino new file mode 100644 index 0000000..9abb8f5 --- /dev/null +++ b/motor_controller/motor_controller.ino @@ -0,0 +1,37 @@ +/* + Blink + + Turns an LED on for one second, then off for one second, repeatedly. + + Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO + it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to + the correct LED pin independent of which board is used. + If you want to know what pin the on-board LED is connected to on your Arduino + model, check the Technical Specs of your board at: + https://www.arduino.cc/en/Main/Products + + modified 8 May 2014 + by Scott Fitzgerald + modified 2 Sep 2016 + by Arturo Guadalupi + modified 8 Sep 2016 + by Colby Newman + + This example code is in the public domain. + + https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink +*/ + +// the setup function runs once when you press reset or power the board +void setup() { + // initialize digital pin LED_BUILTIN as an output. + pinMode(LED_BUILTIN, OUTPUT); +} + +// the loop function runs over and over again forever +void loop() { + digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) + delay(1000); // wait for a second + digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW + delay(1000); // wait for a second +} diff --git a/motor_controller/requirements.txt b/motor_controller/requirements.txt new file mode 100644 index 0000000..5e09d0b --- /dev/null +++ b/motor_controller/requirements.txt @@ -0,0 +1 @@ +micro_ros_arduino