make and build

This commit is contained in:
unknown 2024-10-19 05:10:46 +03:00
parent e6ab6ef45f
commit a6ee45727b
3 changed files with 190 additions and 2 deletions

55
Makefile Normal file
View File

@ -0,0 +1,55 @@
# Makefile for Arduino project
# Detect OS
ifeq ($(OS),Windows_NT)
ARDUINO_CLI := arduino-cli.exe
RM := del /Q
PORT ?= COM20
else
ARDUINO_CLI := arduino-cli
RM := rm -f
PORT ?= /dev/ttyACM0
endif
# Arduino CLI configuration
BOARD ?= arduino:avr:nano:cpu=atmega328old
SKETCH := apply_stimulation/apply_stimulation.ino
# Python configuration
PYTHON := python
# Targets
.PHONY: all generate compile upload clean
all: generate compile upload
generate:
$(PYTHON) gen_stimulat.py
compile:
$(ARDUINO_CLI) compile --fqbn $(BOARD) $(SKETCH)
upload:
$(ARDUINO_CLI) upload -p $(PORT) --fqbn $(BOARD) $(SKETCH)
clean:
$(RM) apply_stimulation/build
$(RM) stimulation_pattern.h
# Help target
help:
@echo "Available targets:"
@echo " all - Generate pattern, compile and upload the sketch"
@echo " generate - Generate the stimulation pattern"
@echo " compile - Compile the sketch"
@echo " upload - Upload the compiled sketch to the Arduino"
@echo " clean - Remove build files and generated pattern"
@echo " help - Display this help message"
@echo ""
@echo "You can specify the Arduino port and board using the PORT and BOARD variables:"
@echo " make upload PORT=COM20 BOARD=arduino:avr:nano:cpu=atmega328old"
@echo ""
@echo "Default board is set to Arduino Nano with old bootloader (atmega328old)"
# Default target
.DEFAULT_GOAL := help

View File

@ -15,7 +15,89 @@ curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.
``` ```
## Usage ## Usage
After installation, you can use Arduino CLI to compile and upload sketches to your Arduino board. For example:
### Using Make (Linux and Windows with Make installed)
We've provided a Makefile to simplify the process of compiling and uploading sketches to your Arduino board. Here's how to use it:
1. Generate the stimulation pattern, compile, and upload the sketch:
```
make all
```
2. Only generate the stimulation pattern:
```
make generate
```
3. Only compile the sketch:
```
make compile
```
4. Only upload the compiled sketch:
```
make upload
```
5. Clean the build files and generated pattern:
```
make clean
```
You can specify a different port or board by using the PORT and BOARD variables:
```
make upload PORT=COM3 BOARD=arduino:avr:uno
```
The default board is set to Arduino Nano with old bootloader (atmega328old). To see all available options, run:
```
make help
```
### Using PowerShell Script (Windows without Make)
For Windows users who don't have Make installed, we've provided a PowerShell script (build.ps1) that mimics the Makefile functionality. Here's how to use it:
1. Generate the stimulation pattern, compile, and upload the sketch:
```
.\build.ps1 all
```
2. Only generate the stimulation pattern:
```
.\build.ps1 generate
```
3. Only compile the sketch:
```
.\build.ps1 compile
```
4. Only upload the compiled sketch:
```
.\build.ps1 upload
```
5. Clean the build files and generated pattern:
```
.\build.ps1 clean
```
You can specify a different port or board by using the -PORT and -BOARD parameters:
```
.\build.ps1 upload -PORT COM3 -BOARD arduino:avr:uno
```
To see all available options, run:
```
.\build.ps1 help
```
## Manual Arduino CLI Usage
If you prefer to use Arduino CLI directly, you can still use the following commands:
``` ```
arduino-cli compile --fqbn arduino:avr:nano:cpu=atmega328old your_sketch.ino arduino-cli compile --fqbn arduino:avr:nano:cpu=atmega328old your_sketch.ino
@ -31,7 +113,7 @@ The goal of this project is to create a system that generates and applies stimul
The project workflow is as follows: The project workflow is as follows:
1. Generate a stimulation pattern from MNIST data (gen_stimulat.py) 1. Generate a stimulation pattern from MNIST data (gen_stimulat.py)
2. Upload this pattern to an Arduino board (using Arduino CLI) 2. Upload this pattern to an Arduino board (using Arduino CLI, Makefile, or PowerShell script)
3. The Arduino applies the stimulation pattern to the nano fiber sample (apply_stimulation.ino) 3. The Arduino applies the stimulation pattern to the nano fiber sample (apply_stimulation.ino)
4. Receive and decode the response data from the nano fiber reservoir (decode_serial_digit.py) 4. Receive and decode the response data from the nano fiber reservoir (decode_serial_digit.py)
5. Visualize the received data to interpret the reservoir's response (visualize_digit.py) 5. Visualize the received data to interpret the reservoir's response (visualize_digit.py)

51
build.ps1 Normal file
View File

@ -0,0 +1,51 @@
# PowerShell script to mimic Makefile functionality
# Default values
$ARDUINO_CLI = "arduino-cli.exe"
$PYTHON = "python"
$PORT = "COM20"
$BOARD = "arduino:avr:nano:cpu=atmega328old"
$SKETCH = "apply_stimulation/apply_stimulation.ino"
function Generate {
& $PYTHON gen_stimulat.py
}
function Compile {
& $ARDUINO_CLI compile --fqbn $BOARD $SKETCH
}
function Upload {
& $ARDUINO_CLI upload -p $PORT --fqbn $BOARD $SKETCH
}
function Clean {
Remove-Item -Path "apply_stimulation/build" -Recurse -ErrorAction SilentlyContinue
Remove-Item -Path "stimulation_pattern.h" -ErrorAction SilentlyContinue
}
function Help {
Write-Host "Available commands:"
Write-Host " .\build.ps1 all - Generate pattern, compile and upload the sketch"
Write-Host " .\build.ps1 generate - Generate the stimulation pattern"
Write-Host " .\build.ps1 compile - Compile the sketch"
Write-Host " .\build.ps1 upload - Upload the compiled sketch to the Arduino"
Write-Host " .\build.ps1 clean - Remove build files and generated pattern"
Write-Host " .\build.ps1 help - Display this help message"
Write-Host ""
Write-Host "You can specify the Arduino port and board using the -PORT and -BOARD parameters:"
Write-Host " .\build.ps1 upload -PORT COM3 -BOARD arduino:avr:uno"
Write-Host ""
Write-Host "Default board is set to Arduino Nano with old bootloader (atmega328old)"
}
# Main execution
switch ($args[0]) {
"all" { Generate; Compile; Upload }
"generate" { Generate }
"compile" { Compile }
"upload" { Upload }
"clean" { Clean }
"help" { Help }
default { Help }
}