Serial Wombat Arduino Library
SerialWombat.h
Go to the documentation of this file.
1 #ifndef SERIAL_WOMBAT_H__
2 #define SERIAL_WOMBAT_H__
3 #include <stdint.h>
4 #include "HardwareSerial.h" // Using "" rather than <> for compatibility with Visual C++ simulation project
5 #include "Wire.h"// Using "" rather than <> for compatibility with Visual C++ simulation project
6 #include "Arduino.h"
7 
11 typedef enum
12 {
13  SW_LOW = 0,
14  SW_HIGH = 1,
15  SW_INPUT = 2,
17 
18 
19 
20 #define WOMBAT_MAXIMUM_PINS 19
21 typedef enum
22 {
23  CMD_ECHO ='!',
26  CMD_RESET = 'R',
28  CMD_RESYNC = 'U',
29  CMD_VERSION = 'V',
43 
45 
46 
47 typedef enum {
60 
61 
63 {
64 public:
65  uint8_t rx[8];
66  uint8_t tx[8];
67  bool success;
68  uint16_t errorCode;
69 
70  void setTxUint16(uint16_t data, uint8_t index);
71  void setTxUint32(uint32_t data, uint8_t index);
72  uint16_t getRxUint16(uint8_t index);
73  uint32_t getRxUint32(uint8_t index);
75  void setCommand(SerialWombatCommand_t command);
76  void setCommand(uint8_t commandByte);
77 
78 
79 };
80 
87 {
88 public:
89  SerialWombat();
97  void begin(HardwareSerial &serial);
109  void begin(HardwareSerial& serial, bool reset);
110 
119  void begin(TwoWire &wire, uint8_t i2cAddress);
120 
128  void begin(uint8_t i2cAddress);
129 
141  void begin(TwoWire& wire, uint8_t i2cAddress, bool reset);
142  ~SerialWombat();
143 
153  int sendPacket( uint8_t tx[], uint8_t rx[]);
154 
162  int sendPacket(uint8_t tx[]);
163 
170  char* readVersion(void);
171 
179  uint16_t readPublicData(uint8_t pin);
180 
184  uint16_t writePublicData(uint8_t pin, uint16_t value);
185 
193  uint16_t readSupplyVoltage_mV(void);
194 
199  void hardwareReset();
200 
210  void pinMode(uint8_t pin, uint8_t mode);
211 
219  void pinMode(uint8_t pin, uint8_t mode, bool pullDown, bool openDrain);
220 
227  void digitalWrite(uint8_t pin, uint8_t val);
228 
232  int digitalRead(uint8_t pin);
233 
241  int analogRead(uint8_t pin);
242 
252  void analogWrite(uint8_t pin, int val);
253 
254 
263  bool queryVersion();
264 
272  void jumpToBoot();
273 
278  uint16_t _supplyVoltagemV = 0;
279 
281  uint8_t model[4] = { 0 };
282 
284  uint8_t fwVersion[4] = { 0 };
285 private:
286 
287  uint8_t address = 0;
288  char version[8] = { 0 };
289  HardwareSerial * Serial = NULL;
290  TwoWire* i2cInterface = NULL;
291  uint8_t _pinmode[WOMBAT_MAXIMUM_PINS]={}; // Includes Pullup
292  bool _pullDown[WOMBAT_MAXIMUM_PINS]={};
293  bool _openDrain[WOMBAT_MAXIMUM_PINS]={};
294  void configureDigitalPin(uint8_t pin, uint8_t highLow);
295  unsigned long sendReadyTime = 0;
296  void initialize();
297 
298 };
299 
301 #define SW_LE16(_a) (uint8_t)(_a & 0xFF), (uint8_t)(_a >>8)
302 
303 #include "SerialWombatServo.h"
304 #include "SerialWombatPWM.h"
305 #include "SerialWombatAnalogInput.h"
307 #include "SerialWombatQuadEnc.h"
309 #include "SerialWombatPulseTimer.h"
310 #include "SerialWombatUART.h"
311 #include "SerialWombatWatchdog.h"
312 
313 #endif
SerialWombat::analogRead
int analogRead(uint8_t pin)
Configures pin as analog input and does an immediate A/D conversion.
Definition: serialWombat.cpp:227
serialWombatProtectedOutput.h
SerialWombat::hardwareReset
void hardwareReset()
Send a reset command to the Serial Wombat.
Definition: serialWombat.cpp:185
SerialWombat::analogWrite
void analogWrite(uint8_t pin, int val)
Set a pin to PWM output.
Definition: serialWombat.cpp:235
CMD_SET_PIN_MODE4
@ CMD_SET_PIN_MODE4
Definition: SerialWombat.h:37
PIN_MODE_ANALOGINPUT
@ PIN_MODE_ANALOGINPUT
Definition: SerialWombat.h:50
SerialWombat::readPublicData
uint16_t readPublicData(uint8_t pin)
Read the 16 Bit public data associated with a Serial Wombat Pin Mode.
Definition: serialWombat.cpp:317
CMD_SUPPLYVOLTAGE
@ CMD_SUPPLYVOLTAGE
Definition: SerialWombat.h:30
SerialWombatWatchdog.h
WombatPacket::setTxUint32
void setTxUint32(uint32_t data, uint8_t index)
CMD_VERSION
@ CMD_VERSION
Definition: SerialWombat.h:29
SerialWombat::digitalRead
int digitalRead(uint8_t pin)
Reads the state of a Pin.
Definition: serialWombat.cpp:215
SerialWombat::digitalWrite
void digitalWrite(uint8_t pin, uint8_t val)
Set an output pin High or Low.
Definition: serialWombat.cpp:209
SerialWombatPinMode_t
SerialWombatPinMode_t
Definition: SerialWombat.h:47
WombatPacket::getCommand
SerialWombatCommand_t getCommand()
serialWombatAnalogInput.h
SerialWombat::sendPacket
int sendPacket(uint8_t tx[], uint8_t rx[])
Send an 8 byte packet to the Serial Wombat and wait for 8 bytes back.
Definition: serialWombat.cpp:74
SerialWombat::model
uint8_t model[4]
Contains the last model retreived by queryVersion() as a zero-terminated string.
Definition: SerialWombat.h:281
WombatPacket::errorCode
uint16_t errorCode
Definition: SerialWombat.h:68
PIN_MODE_WATCHDOG
@ PIN_MODE_WATCHDOG
Definition: SerialWombat.h:53
PIN_MODE_CONTROLLED
@ PIN_MODE_CONTROLLED
Definition: SerialWombat.h:49
SerialWombat::writePublicData
uint16_t writePublicData(uint8_t pin, uint16_t value)
Write a 16 bit value to a Serial Wombat pin Mode.
Definition: serialWombat.cpp:325
SerialWombat::_supplyVoltagemV
uint16_t _supplyVoltagemV
Definition: SerialWombat.h:278
PIN_MODE_PWM
@ PIN_MODE_PWM
Definition: SerialWombat.h:55
SerialWombatServo.h
CMD_SET_PIN_MODE3
@ CMD_SET_PIN_MODE3
Definition: SerialWombat.h:36
PIN_MODE_SERVO
@ PIN_MODE_SERVO
Definition: SerialWombat.h:51
SerialWombatPWM.h
CMD_READ_BUFFER_ASCII
@ CMD_READ_BUFFER_ASCII
Definition: SerialWombat.h:24
PIN_MODE_PULSETIMER
@ PIN_MODE_PULSETIMER
Definition: SerialWombat.h:57
serialWombatPulseTimer.h
SW_HIGH
@ SW_HIGH
Definition: SerialWombat.h:14
CMD_SET_PIN_MODE8
@ CMD_SET_PIN_MODE8
Definition: SerialWombat.h:41
CMD_SET_PIN_MODE9
@ CMD_SET_PIN_MODE9
Definition: SerialWombat.h:42
WombatPacket::getRxUint32
uint32_t getRxUint32(uint8_t index)
CMD_SET_PIN_MODE1
@ CMD_SET_PIN_MODE1
Definition: SerialWombat.h:34
SerialWombat::readSupplyVoltage_mV
uint16_t readSupplyVoltage_mV(void)
Measure the Serial Wombat's Supply voltage.
Definition: serialWombat.cpp:177
WombatPacket
Definition: SerialWombat.h:62
SerialWombatUART.h
CMD_SET_PIN_MODE2
@ CMD_SET_PIN_MODE2
Definition: SerialWombat.h:35
WOMBAT_MAXIMUM_PINS
#define WOMBAT_MAXIMUM_PINS
Definition: SerialWombat.h:20
CMD_ASCII_SET_PIN
@ CMD_ASCII_SET_PIN
Definition: SerialWombat.h:25
WombatPacket::getRxUint16
uint16_t getRxUint16(uint8_t index)
WombatPacket::success
bool success
Definition: SerialWombat.h:67
SerialWombat::readVersion
char * readVersion(void)
Request version string (combined model and firmware) and return pointer to it.
Definition: serialWombat.cpp:167
PIN_MODE_UNKNOWN
@ PIN_MODE_UNKNOWN
Definition: SerialWombat.h:58
CMD_SET_PIN_MODE0
@ CMD_SET_PIN_MODE0
Definition: SerialWombat.h:33
CMD_SET_BUFFER_ASCII
@ CMD_SET_BUFFER_ASCII
Definition: SerialWombat.h:27
SerialWombatCommand_t
SerialWombatCommand_t
Definition: SerialWombat.h:21
CMD_SETBUFFERBINARY
@ CMD_SETBUFFERBINARY
Definition: SerialWombat.h:32
SerialWombatPinState_t
SerialWombatPinState_t
Definition: SerialWombat.h:11
CMD_READBUFFERBINARY
@ CMD_READBUFFERBINARY
Definition: SerialWombat.h:31
CMD_RESYNC
@ CMD_RESYNC
Definition: SerialWombat.h:28
SW_INPUT
@ SW_INPUT
Definition: SerialWombat.h:15
SerialWombat
Definition: SerialWombat.h:86
WombatPacket::tx
uint8_t tx[8]
Definition: SerialWombat.h:66
SW_LOW
@ SW_LOW
Definition: SerialWombat.h:13
CMD_RESET
@ CMD_RESET
Definition: SerialWombat.h:26
CMD_SET_PIN_MODE7
@ CMD_SET_PIN_MODE7
Definition: SerialWombat.h:40
PIN_MODE_QUADRATUREENCODER
@ PIN_MODE_QUADRATUREENCODER
Definition: SerialWombat.h:52
CMD_SET_PIN_MODE5
@ CMD_SET_PIN_MODE5
Definition: SerialWombat.h:38
SerialWombatDebouncedInput.h
WombatPacket::rx
uint8_t rx[8]
Definition: SerialWombat.h:65
WombatPacket::setTxUint16
void setTxUint16(uint16_t data, uint8_t index)
SerialWombat::jumpToBoot
void jumpToBoot()
Jump to Bootloader and wait for a UART download of new firmware.
Definition: serialWombat.cpp:267
SerialWombat::~SerialWombat
~SerialWombat()
Definition: serialWombat.cpp:13
PIN_MODE_PROTECTED_OUTPUT
@ PIN_MODE_PROTECTED_OUTPUT
Definition: SerialWombat.h:54
serialWombatQuadEnc.h
SerialWombat::pinMode
void pinMode(uint8_t pin, uint8_t mode)
Set a pin to INPUT or OUTPUT.
Definition: serialWombat.cpp:192
SerialWombat::SerialWombat
SerialWombat()
Definition: serialWombat.cpp:7
PIN_MODE_DIGITALIO
@ PIN_MODE_DIGITALIO
Definition: SerialWombat.h:48
CMD_ECHO
@ CMD_ECHO
Definition: SerialWombat.h:23
WombatPacket::setCommand
void setCommand(SerialWombatCommand_t command)
CMD_SET_PIN_MODE6
@ CMD_SET_PIN_MODE6
Definition: SerialWombat.h:39
SerialWombat::queryVersion
bool queryVersion()
Send a version request to the Serial Wombat.
Definition: serialWombat.cpp:247
PIN_MODE_UART_RX_TX
@ PIN_MODE_UART_RX_TX
Definition: SerialWombat.h:56
SerialWombat::begin
void begin(HardwareSerial &serial)
initialize a Serial Wombat to use a Serial Interface.
Definition: serialWombat.cpp:18
SerialWombat::fwVersion
uint8_t fwVersion[4]
Contains the last firmware Version retreived by queryVersion() as a zero-terminated string.
Definition: SerialWombat.h:284