mirror of
https://github.com/DCC-EX/CommandStation-EX.git
synced 2024-11-23 08:06:13 +01:00
162 lines
5.1 KiB
Plaintext
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
|