1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-11-27 01:56:14 +01:00
CommandStation-EX/mySetup.cpp_example.txt
2021-09-14 17:14:29 +01:00

162 lines
5.1 KiB
Plaintext

// Sample mySetup.cpp file.
//
// To use this file, copy it to mySetup.cpp and uncomment the directives and/or
// edit them to satisfy your requirements.
// Note that if the file has a .cpp extension it WILL be compiled into the build
// and the mySetup() function WILL be invoked.
//
// To prevent this, temporarily rename it to mySetup.txt or similar.
//
#include "IODevice.h"
#include "Turnouts.h"
#include "Sensors.h"
#include "IO_HCSR04.h"
#include "IO_VL53L0X.h"
// The #if directive prevent compile errors for Uno and Nano by excluding the
// HAL directives from the build.
#if !defined(IO_NO_HAL)
// Examples of statically defined HAL directives (alternative to the create() call).
// These have to be outside of the mySetup() function.
// The following directive defines a PCA9685 PWM Servo driver module.
// The parameters are:
// First Vpin=100
// Number of VPINs=16 (numbered 100-115)
// I2C address of module=0x40
//PCA9685 pwmModule1(100, 16, 0x40);
// The following directive defines an MCP23017 16-port I2C GPIO Extender module.
// The parameters are:
// First Vpin=164
// Number of VPINs=16 (numbered 164-179)
// I2C address of module=0x20
//MCP23017 gpioModule2(164, 16, 0x20);
// Alternative form, which allows the INT pin of the module to request a scan
// by pulling Arduino pin 40 to ground. Means that the I2C isn't being polled
// all the time, only when a change takes place. Multiple modules' INT pins
// may be connected to the same Arduino pin.
//MCP23017 gpioModule2(164, 16, 0x20, 40);
// The following directive defines an MCP23008 8-port I2C GPIO Extender module.
// The parameters are:
// First Vpin=300
// Number of VPINs=8 (numbered 300-307)
// I2C address of module=0x22
//MCP23017 gpioModule3(300, 8, 0x22);
// The following directive defines a PCF8574 8-port I2C GPIO Extender module.
// The parameters are:
// First Vpin=200
// Number of VPINs=8 (numbered 200-207)
// I2C address of module=0x23
//PCF8574 gpioModule4(200, 8, 0x23);
// Alternative form using INT pin (see above)
//PCF8574 gpioModule4(200, 8, 0x23, 40);
// The following directive defines an HCSR04 ultrasonic module.
// The parameters are:
// Vpin=2000 (only one VPIN per directive)
// Number of VPINs=1
// Arduino pin connected to TRIG=30
// Arduino pin connected to ECHO=31
// Minimum trigger range=20cm (VPIN goes to 1 when <20cm)
// Maximum trigger range=25cm (VPIN goes to 0 when >25cm)
// Note: Multiple devices can be configured by using a different ECHO pin
// for each one. The TRIG pin can be shared between multiple devices.
// Be aware that the 'ping' of one device may be received by another
// device and position them accordingly!
//HCSR04 sonarModule1(2000, 30, 31, 20, 25);
//HCSR04 sonarModule2(2001, 30, 32, 20, 25);
// The following directive defines a single VL53L0X Time-of-Flight sensor.
// The parameters are:
// VPIN=5000
// Number of VPINs=1
// I2C address=0x29 (default for this chip)
// Minimum trigger range=200mm (VPIN goes to 1 when <20cm)
// Maximum trigger range=250mm (VPIN goes to 0 when >25cm)
//VL53L0X tofModule1(5000, 1, 0x29, 200, 250);
// For multiple VL53L0X modules, add another parameter which is a VPIN connected to the
// module's XSHUT pin. This allows the modules to be configured, at start,
// with distinct I2C addresses. In this case, the address 0x29 is only used during
// initialisation to configure each device with the desired unique I2C address.
// The examples below have one module's XSHUT pin connected to Arduino pin 34,
// and the other's connected to the second pin on the first MCP23017 module (VPIN 165).
// The first module is given I2C address 0x30 and the second is 0x31.
//VL53L0X tofModule1(5000, 1, 0x30, 200, 250, 34);
//VL53L0X tofModule2(5001, 1, 0x31, 200, 250, 165);
// The function mySetup() is invoked from CS if it exists within the build.
// It is called just before mysetup.h is executed, so things set up within here can be
// referenced by commands in mySetup.h.
void mySetup() {
// Alternative way of creating MCP23017, which has to be within the mySetup() function
// The other devices can also be created in this way. The parameter lists for the
// create() function are identical to the parameter lists for the declarations.
//MCP23017::create(180, 16, 0x21);
// Creating a Turnout
// Parameters: same as <T> command for Servo turnouts
// ID and VPIN are 100, sonar moves between positions 102 and 490 with slow profile.
// Profile may be Instant, Fast, Medium, Slow or Bounce.
//ServoTurnout::create(100, 100, 490, 102, PCA9685::Slow);
// DCC Accessory turnout
// Parameters: same as <T> command for DCC Accessory turnouts
// ID=3000
// Decoder address=23
// Decoder subaddress = 1
//DCCTurnout::create(3000, 23, 1);
// Creating a Sensor
// Parameters: As for the <S> command,
// id = 164,
// Vpin = 164 (configured above as pin 0 of an MCP23017)
// Pullup enable = 1 (enabled)
//Sensor::create(164, 164, 1);
// Way of creating lots of identical sensors in a range
//for (int i=165; i<180; i++)
// Sensor::create(i, i, 1);
}
#endif