Roboid Control for C++
Loading...
Searching...
No Matches
DRV8833.h
1#pragma once
2
3#include <Arduino.h>
4#include "Thing.h"
5#include "Things/DifferentialDrive.h"
6
7namespace RoboidControl {
8namespace Arduino {
9
10class DRV8833Motor;
11
12class DRV8833 : public Thing {
13 public:
23 DRV8833(Participant* participant,
24 unsigned char pinAIn1,
25 unsigned char pinAIn2,
26 unsigned char pinBIn1,
27 unsigned char pinBIn2,
28 unsigned char pinStandby = 255,
29 bool reverseA = false,
30 bool reverseB = false);
31 DRV8833(Thing* parent,
32 unsigned char pinAIn1,
33 unsigned char pinAIn2,
34 unsigned char pinBIn1,
35 unsigned char pinBIn2,
36 unsigned char pinStandby = 255,
37 bool reverseA = false,
38 bool reverseB = false);
39 DRV8833Motor* motorA = nullptr;
40 DRV8833Motor* motorB = nullptr;
41
42 protected:
43 unsigned char pinStandby = 255;
44};
45
47class DRV8833Motor : public Thing {
48 public:
50 enum class RotationDirection { Clockwise = 1, CounterClockwise = -1 };
51
56 DRV8833Motor(DRV8833* driver,
57 unsigned char pinIn1,
58 unsigned char pinIn2,
59 bool reverse = false);
60 void SetMaxRPM(unsigned int rpm);
61
62 virtual void SetAngularVelocity(Spherical velocity) override;
63
64 bool reverse = false;
65
66 protected:
67 unsigned char pinIn1 = 255;
68 unsigned char pinIn2 = 255;
69 unsigned int maxRpm = 200;
70
71#if (ESP32)
72 uint8_t in1Ch;
73 uint8_t in2Ch;
74 static uint8_t nextAvailablePwmChannel;
75#endif
76};
77
78} // namespace Arduino
79} // namespace RoboidControl
Support for a DRV8833 motor controller.
Definition DRV8833.h:47
RotationDirection
Motor turning direction.
Definition DRV8833.h:50
virtual void SetAngularVelocity(Spherical velocity) override
Set the angular velocity of the thing.
Definition DRV8833.cpp:43
A thing is the primitive building block.
Definition Thing.h:20