init platformio
parent
2c9913b9c2
commit
6db2fa5935
@ -0,0 +1 @@
|
||||
.pio
|
@ -0,0 +1,33 @@
|
||||
# !!! WARNING !!! AUTO-GENERATED FILE, PLEASE DO NOT MODIFY IT AND USE
|
||||
# https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags
|
||||
#
|
||||
# If you need to override existing CMake configuration or add extra,
|
||||
# please create `CMakeListsUser.txt` in the root of project.
|
||||
# The `CMakeListsUser.txt` will not be overwritten by PlatformIO.
|
||||
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
set(CMAKE_SYSTEM_NAME Generic)
|
||||
set(CMAKE_C_COMPILER_WORKS 1)
|
||||
set(CMAKE_CXX_COMPILER_WORKS 1)
|
||||
|
||||
project("ArtNet-Node" C CXX)
|
||||
|
||||
include(CMakeListsPrivate.txt)
|
||||
|
||||
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/CMakeListsUser.txt)
|
||||
include(CMakeListsUser.txt)
|
||||
endif()
|
||||
|
||||
add_custom_target(
|
||||
Production ALL
|
||||
COMMAND platformio -c clion run "$<$<NOT:$<CONFIG:All>>:-e${CMAKE_BUILD_TYPE}>"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_custom_target(
|
||||
Debug ALL
|
||||
COMMAND platformio -c clion run --target debug "$<$<NOT:$<CONFIG:All>>:-e${CMAKE_BUILD_TYPE}>"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
add_executable(Z_DUMMY_TARGET ${SRC_LIST})
|
@ -0,0 +1,121 @@
|
||||
# !!! WARNING !!! AUTO-GENERATED FILE, PLEASE DO NOT MODIFY IT AND USE
|
||||
# https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags
|
||||
#
|
||||
# If you need to override existing CMake configuration or add extra,
|
||||
# please create `CMakeListsUser.txt` in the root of project.
|
||||
# The `CMakeListsUser.txt` will not be overwritten by PlatformIO.
|
||||
|
||||
|
||||
|
||||
set(CMAKE_CONFIGURATION_TYPES "Upload_UART;Upload_ISP;fuses_bootloader;" CACHE STRING "Build Types reflect PlatformIO Environments" FORCE)
|
||||
|
||||
|
||||
SET(CMAKE_C_COMPILER "$ENV{HOME}/.platformio/packages/toolchain-atmelavr/bin/avr-gcc")
|
||||
SET(CMAKE_CXX_COMPILER "$ENV{HOME}/.platformio/packages/toolchain-atmelavr/bin/avr-g++")
|
||||
SET(CMAKE_CXX_FLAGS "-fno-exceptions -fno-threadsafe-statics -fpermissive -std=gnu++11 -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega644p")
|
||||
SET(CMAKE_C_FLAGS "-std=gnu11 -fno-fat-lto-objects -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega644p")
|
||||
|
||||
SET(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
if (CMAKE_BUILD_TYPE MATCHES "Upload_UART")
|
||||
add_definitions(-D'PLATFORMIO=50100')
|
||||
add_definitions(-D'ARDUINO_AVR_ATmega644')
|
||||
add_definitions(-D'F_CPU=16000000L')
|
||||
add_definitions(-D'ARDUINO_ARCH_AVR')
|
||||
add_definitions(-D'ARDUINO=10808')
|
||||
add_definitions(-D'__AVR_ATmega644P__')
|
||||
|
||||
include_directories("${CMAKE_CURRENT_LIST_DIR}/include")
|
||||
include_directories("${CMAKE_CURRENT_LIST_DIR}/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SPI/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/cores/MightyCore")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/variants/standard")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/AVR_examples/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/EEPROM/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Optiboot_flasher/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SD/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SPI1/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Servo/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SoftwareSerial/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Timer/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Wire/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Wire1/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/toolchain-atmelavr/avr/include")
|
||||
|
||||
FILE(GLOB_RECURSE EXTRA_LIB_SOURCES
|
||||
${CMAKE_CURRENT_LIST_DIR}/.pio/libdeps/Upload_UART/*.*
|
||||
)
|
||||
endif()
|
||||
|
||||
if (CMAKE_BUILD_TYPE MATCHES "Upload_ISP")
|
||||
add_definitions(-D'PLATFORMIO=50100')
|
||||
add_definitions(-D'ARDUINO_AVR_ATmega644')
|
||||
add_definitions(-D'F_CPU=16000000L')
|
||||
add_definitions(-D'ARDUINO_ARCH_AVR')
|
||||
add_definitions(-D'ARDUINO=10808')
|
||||
add_definitions(-D'__AVR_ATmega644P__')
|
||||
|
||||
include_directories("${CMAKE_CURRENT_LIST_DIR}/include")
|
||||
include_directories("${CMAKE_CURRENT_LIST_DIR}/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SPI/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/cores/MightyCore")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/variants/standard")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/AVR_examples/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/EEPROM/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Optiboot_flasher/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SD/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SPI1/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Servo/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SoftwareSerial/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Timer/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Wire/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Wire1/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/toolchain-atmelavr/avr/include")
|
||||
|
||||
FILE(GLOB_RECURSE EXTRA_LIB_SOURCES
|
||||
${CMAKE_CURRENT_LIST_DIR}/.pio/libdeps/Upload_ISP/*.*
|
||||
)
|
||||
endif()
|
||||
if (CMAKE_BUILD_TYPE MATCHES "fuses_bootloader")
|
||||
add_definitions(-D'PLATFORMIO=50100')
|
||||
add_definitions(-D'ARDUINO_AVR_ATmega644')
|
||||
add_definitions(-D'F_CPU=16000000L')
|
||||
add_definitions(-D'ARDUINO_ARCH_AVR')
|
||||
add_definitions(-D'ARDUINO=10808')
|
||||
add_definitions(-D'__AVR_ATmega644P__')
|
||||
|
||||
include_directories("${CMAKE_CURRENT_LIST_DIR}/include")
|
||||
include_directories("${CMAKE_CURRENT_LIST_DIR}/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SPI/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/cores/MightyCore")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/variants/standard")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/AVR_examples/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/EEPROM/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Optiboot_flasher/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SD/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SPI1/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Servo/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/SoftwareSerial/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Timer/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Wire/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/framework-arduino-avr-mightycore/libraries/Wire1/src")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include-fixed")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/toolchain-atmelavr/lib/gcc/avr/5.4.0/include")
|
||||
include_directories("$ENV{HOME}/.platformio/packages/toolchain-atmelavr/avr/include")
|
||||
|
||||
FILE(GLOB_RECURSE EXTRA_LIB_SOURCES
|
||||
${CMAKE_CURRENT_LIST_DIR}/.pio/libdeps/fuses_bootloader/*.*
|
||||
)
|
||||
endif()
|
||||
|
||||
FILE(GLOB_RECURSE SRC_LIST
|
||||
${CMAKE_CURRENT_LIST_DIR}/src/*.*
|
||||
${CMAKE_CURRENT_LIST_DIR}/lib/*.*
|
||||
)
|
||||
|
||||
list(APPEND SRC_LIST ${EXTRA_LIB_SOURCES})
|
@ -0,0 +1,46 @@
|
||||
|
||||
This directory is intended for project specific (private) libraries.
|
||||
PlatformIO will compile them to static libraries and link into executable file.
|
||||
|
||||
The source code of each library should be placed in a an own separate directory
|
||||
("lib/your_library_name/[here are source files]").
|
||||
|
||||
For example, see a structure of the following two libraries `Foo` and `Bar`:
|
||||
|
||||
|--lib
|
||||
| |
|
||||
| |--Bar
|
||||
| | |--docs
|
||||
| | |--examples
|
||||
| | |--src
|
||||
| | |- Bar.c
|
||||
| | |- Bar.h
|
||||
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
|
||||
| |
|
||||
| |--Foo
|
||||
| | |- Foo.c
|
||||
| | |- Foo.h
|
||||
| |
|
||||
| |- README --> THIS FILE
|
||||
|
|
||||
|- platformio.ini
|
||||
|--src
|
||||
|- main.c
|
||||
|
||||
and a contents of `src/main.c`:
|
||||
```
|
||||
#include <Foo.h>
|
||||
#include <Bar.h>
|
||||
|
||||
int main (void)
|
||||
{
|
||||
...
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
PlatformIO Library Dependency Finder will find automatically dependent
|
||||
libraries scanning project source files.
|
||||
|
||||
More information about PlatformIO Library Dependency Finder
|
||||
- https://docs.platformio.org/page/librarymanager/ldf.html
|
@ -0,0 +1,63 @@
|
||||
; PlatformIO Project Configuration File
|
||||
;
|
||||
; Build options: build flags, source filter
|
||||
; Upload options: custom upload port, speed and extra flags
|
||||
; Library options: dependencies, extra library storages
|
||||
; Advanced options: extra scripting
|
||||
;
|
||||
; Please visit documentation for the other options and examples
|
||||
; https://docs.platformio.org/page/projectconf.html
|
||||
|
||||
[platformio]
|
||||
default_envs = Upload_UART
|
||||
|
||||
[env]
|
||||
platform = atmelavr
|
||||
framework = arduino
|
||||
board = ATmega644P
|
||||
board_build.f_cpu = 16000000L
|
||||
board_build.variant = standard
|
||||
build_unflags = -flto
|
||||
build_flags =
|
||||
monitor_port = ${env:Upload_UART.upload_port}
|
||||
monitor_speed = 9600
|
||||
|
||||
[env:Upload_UART]
|
||||
upload_protocol = arduino
|
||||
upload_port = /dev/cu.usbserial*
|
||||
board_upload.speed = ${env:fuses_bootloader.board_bootloader.speed}
|
||||
lib_deps =
|
||||
tmrh20/RF24@^1.3.11
|
||||
arduino-libraries/ArduinoDMX@^1.0.1
|
||||
arduino-libraries/ArduinoRS485@^1.0.0
|
||||
uipethernet/UIPEthernet@^2.0.8
|
||||
|
||||
[env:Upload_ISP]
|
||||
upload_protocol = custom
|
||||
upload_flags =
|
||||
-C$PROJECT_PACKAGES_DIR/tool-avrdude/avrdude.conf
|
||||
-p$BOARD_MCU
|
||||
-PUSB
|
||||
-cusbasp
|
||||
upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i
|
||||
lib_deps =
|
||||
tmrh20/RF24@^1.3.11
|
||||
arduino-libraries/ArduinoDMX@^1.0.1
|
||||
arduino-libraries/ArduinoRS485@^1.0.0
|
||||
uipethernet/UIPEthernet@^2.0.8
|
||||
|
||||
[env:fuses_bootloader]
|
||||
board_hardware.oscillator = external
|
||||
board_hardware.uart = uart0
|
||||
board_bootloader.speed = 115200
|
||||
board_hardware.bod = 2.7v
|
||||
board_hardware.eesave = yes
|
||||
upload_protocol = usbasp
|
||||
upload_flags =
|
||||
-PUSB
|
||||
-B8
|
||||
lib_deps =
|
||||
tmrh20/RF24@^1.3.11
|
||||
arduino-libraries/ArduinoDMX@^1.0.1
|
||||
arduino-libraries/ArduinoRS485@^1.0.0
|
||||
uipethernet/UIPEthernet@^2.0.8
|
@ -0,0 +1,113 @@
|
||||
#include <Arduino.h>
|
||||
|
||||
//DMX stuff
|
||||
#include <ArduinoRS485.h>
|
||||
#include <ArduinoDMX.h>
|
||||
const int universeSize = 512;
|
||||
|
||||
//ArtNet stuff
|
||||
#include <UIPArtnet.h>
|
||||
ArtnetReceiver artnet;
|
||||
uint32_t universe0 = 0;
|
||||
uint32_t universe1 = 1;
|
||||
|
||||
// ethernet stuff
|
||||
const IPAddress ip(10, 255, 255, 255);
|
||||
uint8_t mac[] = {0xAA, 0xDD, 0xBB, 0xAA, 0xDD, 0xBB};
|
||||
|
||||
//NRF stuff
|
||||
#include <SPI.h>
|
||||
#include <RF24.h>
|
||||
#include <nRF24L01.h>
|
||||
RF24 radio (0, 1);
|
||||
|
||||
const uint16_t address = 0xADB0;
|
||||
uint64_t datasend;
|
||||
|
||||
//RGB LED
|
||||
const int statusLED[] = {23,22, 21}; //RGB
|
||||
const int statusLEDlength = 3;
|
||||
int statusLEDstat[3];
|
||||
|
||||
//define min interval to show error
|
||||
unsigned long currentTime = millis();
|
||||
unsigned long previousTime = 0;
|
||||
const long waitTime = 100;
|
||||
const long errorTime = 5000;
|
||||
|
||||
//setup
|
||||
void setup() {
|
||||
for (int i=0; i < statusLEDlength; i++){
|
||||
pinMode(statusLED[i], OUTPUT);
|
||||
digitalWrite(statusLED[i], LOW);
|
||||
}
|
||||
pinMode(10, OUTPUT);
|
||||
digitalWrite(10, LOW);
|
||||
|
||||
//start DMX
|
||||
DMX.begin(universeSize);
|
||||
|
||||
//start ethernet
|
||||
Ethernet.begin(mac, ip);
|
||||
|
||||
//start ArtNet
|
||||
artnet.begin();
|
||||
artnet.subscribe(universe0, callback);
|
||||
|
||||
//start NRF
|
||||
radio.begin();
|
||||
radio.openWritingPipe(address);
|
||||
radio.setPALevel(RF24_PA_LOW);
|
||||
radio.setDataRate(RF24_1MBPS);
|
||||
//radio.disableDynamicPayloads();
|
||||
radio.setAutoAck(false);
|
||||
radio.disableCRC();
|
||||
radio.stopListening();
|
||||
|
||||
setRGB(0,0,255);
|
||||
delay(200);
|
||||
}
|
||||
|
||||
void loop() {
|
||||
currentTime = millis();
|
||||
if (artnet.parse()) { // check if artnet packet has come and execute callback
|
||||
previousTime = currentTime;
|
||||
setRGB(0,255,0);
|
||||
}else if(currentTime - previousTime >= errorTime){
|
||||
setRGB(255,0,0);
|
||||
}else if(currentTime - previousTime >= waitTime){
|
||||
setRGB(0,0,255);
|
||||
}
|
||||
}
|
||||
|
||||
//ArtNet universe0 callback
|
||||
void callback(byte* artnetdata, uint16_t size) {
|
||||
digitalWrite(10, HIGH);
|
||||
//RGB PWM
|
||||
//setRGB(artnetdata[0], artnetdata[1], artnetdata[2]);
|
||||
//DMX output
|
||||
DMX.beginTransmission();
|
||||
for (int i = 0; i < universeSize; ++i) {
|
||||
DMX.write(i, artnetdata[i]);
|
||||
}
|
||||
DMX.endTransmission();
|
||||
|
||||
//send NRF
|
||||
for (int i = 0; i < 20; i++) {
|
||||
datasend = i; //package ID
|
||||
for (int j = 0; j < 7; j++) {
|
||||
datasend = (datasend << 8) + artnetdata[7 * i + j];
|
||||
}
|
||||
radio.writeFast(&datasend, sizeof(datasend));
|
||||
}
|
||||
digitalWrite(10, LOW);
|
||||
}
|
||||
|
||||
void setRGB(int r, int g, int b){
|
||||
if (r != statusLEDstat[0]) analogWrite(statusLED[0], r);
|
||||
if (g != statusLEDstat[1]) analogWrite(statusLED[1], g);
|
||||
if (b != statusLEDstat[2]) analogWrite(statusLED[2], b);
|
||||
statusLEDstat[0] = r;
|
||||
statusLEDstat[1] = g;
|
||||
statusLEDstat[2] = b;
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
|
||||
This directory is intended for PlatformIO Unit Testing and project tests.
|
||||
|
||||
Unit Testing is a software testing method by which individual units of
|
||||
source code, sets of one or more MCU program modules together with associated
|
||||
control data, usage procedures, and operating procedures, are tested to
|
||||
determine whether they are fit for use. Unit testing finds problems early
|
||||
in the development cycle.
|
||||
|
||||
More information about PlatformIO Unit Testing:
|
||||
- https://docs.platformio.org/page/plus/unit-testing.html
|
Loading…
Reference in New Issue