Serial Wombat Arduino Library
SerialWombatHBridge.h
Go to the documentation of this file.
1 #pragma once
2 /*
3 Copyright 2024 Broadwell Consulting Inc.
4 
5 "Serial Wombat" is a registered trademark of Broadwell Consulting Inc. in
6 the United States. See SerialWombat.com for usage guidance.
7 
8 Permission is hereby granted, free of charge, to any person obtaining a
9  * copy of this software and associated documentation files (the "Software"),
10  * to deal in the Software without restriction, including without limitation
11  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12  * and/or sell copies of the Software, and to permit persons to whom the
13  * Software is furnished to do so, subject to the following conditions:
14 
15 The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17 
18 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
22  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24  * OTHER DEALINGS IN THE SOFTWARE.
25 */
26 
27 
28 #include <stdint.h>
29 #include "SerialWombat.h"
33 typedef enum
34 {
37  DRV8833 = 2,
38  DRV8871 = 3,
39  L298N = 4,
40  MX1508 = 5,
41  BTS7960 = 6,
42  IBT4 = 7,
43  A4990 = 8,
46 
56 {
57 public:
62  SerialWombatHBridge(SerialWombatChip& serialWombat) :SerialWombatPin(serialWombat) {}
63 
71  void begin(uint8_t pin, uint8_t secondPin, uint16_t PWMPeriod_uS,SerialWombatHBridgeDriverChip chip)
72  {
73  _pin = pin;
74  _pinMode = (uint8_t)PIN_MODE_HBRIDGE;
75  {
76  uint8_t tx[] = { (uint8_t)SerialWombatCommands::CONFIGURE_PIN_MODE0,_pin,PIN_MODE_HBRIDGE,secondPin,(uint8_t)chip,0x55,0x55,0x55 };
77  _sw.sendPacket(tx);
78  }
79  {
80  uint8_t tx2[] = { (uint8_t)SerialWombatCommands::CONFIGURE_PIN_MODE_HW_0,_pin,PIN_MODE_HBRIDGE,SW_LE16(PWMPeriod_uS),0x55,0x55,0x55 };
81  _sw.sendPacket(tx2);
82  }
83  }
84 
85 
86 private:
87 };
88 
89 
92 {
93 public:
95  {}
96 
97 
102  uint8_t pin()
103 {
104  return SerialWombatPin::_pin;
105 }
110  uint8_t swPinModeNumber()
111  {
113  }
114 };
115 
SerialWombatChip
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
Definition: SerialWombat.h:286
SerialWombatCommands::CONFIGURE_PIN_MODE0
@ CONFIGURE_PIN_MODE0
(200)
A4990
@ A4990
Definition: SerialWombatHBridge.h:43
SerialWombatPin::_sw
SerialWombatChip & _sw
Definition: SerialWombatPin.h:134
SerialWombatHBridgeDriverChip
SerialWombatHBridgeDriverChip
Definition: SerialWombatHBridge.h:33
SerialWombatAbstractScaledOutput
SerialWombatServo, SerialWombatPWM and other proportional ouptut classes inherit from this class....
Definition: SerialWombatAbstractScaledOutput.h:62
PIN_MODE_HBRIDGE
@ PIN_MODE_HBRIDGE
(6)
Definition: SerialWombat.h:248
SerialWombatHBridge_18AB::SerialWombatHBridge_18AB
SerialWombatHBridge_18AB(SerialWombatChip &serialWombat)
Definition: SerialWombatHBridge.h:94
SerialWombatHBridge_18AB::pin
uint8_t pin()
fulfills a virtual function requirement of SerialWombatAbstractScaledOutput
Definition: SerialWombatHBridge.h:102
SerialWombat.h
IBT4
@ IBT4
Definition: SerialWombatHBridge.h:42
TB67H420FTG
@ TB67H420FTG
Definition: SerialWombatHBridge.h:44
SerialWombatPin
Describes a Serial Wombat Pin. Is base class for other pin modes.
Definition: SerialWombatPin.h:38
SerialWombatHBridge
A class representing a Serial Wombat H Bridge Output.
Definition: SerialWombatHBridge.h:55
SerialWombatPin::_pinMode
uint8_t _pinMode
Definition: SerialWombatPin.h:135
RelayAndPWM
@ RelayAndPWM
Definition: SerialWombatHBridge.h:35
SerialWombatChip::sendPacket
int sendPacket(uint8_t tx[], uint8_t rx[])
Send an 8 byte packet to the Serial Wombat chip and wait for 8 bytes back.
Definition: SerialWombat.cpp:115
SerialWombatCommands::CONFIGURE_PIN_MODE_HW_0
@ CONFIGURE_PIN_MODE_HW_0
(220)
DRV8833
@ DRV8833
Definition: SerialWombatHBridge.h:37
SerialWombatHBridge_18AB
Extends the SerialWombatHBridge class with SW18AB specific functionality, including SerialWombatAbstr...
Definition: SerialWombatHBridge.h:91
SerialWombatHBridge_18AB::swPinModeNumber
uint8_t swPinModeNumber()
fulfills a virtual function requirement of SerialWombatAbstractScaledOutput
Definition: SerialWombatHBridge.h:110
MX1508
@ MX1508
Definition: SerialWombatHBridge.h:40
SerialWombatHBridge::SerialWombatHBridge
SerialWombatHBridge(SerialWombatChip &serialWombat)
Constructor for SerialWombatHBridge class.
Definition: SerialWombatHBridge.h:62
SerialWombatPin::pin
uint8_t pin()
Returns the current SW pin number. Used primarily for virtual calls by derived classes.
Definition: SerialWombatPin.h:121
L298N
@ L298N
Definition: SerialWombatHBridge.h:39
SerialWombatPin::_pin
uint8_t _pin
Definition: SerialWombatPin.h:133
BTS7960
@ BTS7960
Definition: SerialWombatHBridge.h:41
SW_LE16
#define SW_LE16(_a)
Convert a uint16_t to two bytes in little endian format for array initialization.
Definition: SerialWombat.h:41
DRV8871
@ DRV8871
Definition: SerialWombatHBridge.h:38
LG9110_HG7881
@ LG9110_HG7881
Definition: SerialWombatHBridge.h:36
SerialWombatHBridge::begin
void begin(uint8_t pin, uint8_t secondPin, uint16_t PWMPeriod_uS, SerialWombatHBridgeDriverChip chip)
Initialize a pin that has been declared as HBridge.
Definition: SerialWombatHBridge.h:71