Mutila: Mouse's Utilities for Arduino
Oft-used utilities: debouncing buttons, averaging samples, and so on.
DFPReader.h
1 #pragma once
2 
3 #include <stdint.h>
4 #include <DFPlayerMini.h>
5 
12 class DFPReader : public DFPlayerMini {
13 public:
14  static const uint8_t PlaybackStartMs = 120;
15 
16  // Track file numbers
17  static const uint8_t Mp3TrackZero = 200;
18  static const uint8_t Mp3TrackTen = 210;
19  static const uint8_t Mp3TrackTwenty = 220;
20  static const uint8_t Mp3TrackThirty = 221;
21  static const uint8_t Mp3TrackFourty = 222;
22  static const uint8_t Mp3TrackFifty = 223;
23  static const uint8_t Mp3TrackSixty = 224;
24  static const uint8_t Mp3TrackSeventy = 225;
25  static const uint8_t Mp3TrackEighty = 226;
26  static const uint8_t Mp3TrackNinety = 227;
27  static const uint8_t Mp3TrackHundred = 228;
28  static const uint8_t Mp3TrackThousand = 229;
29  static const uint8_t Mp3TrackMillion = 230;
30  static const uint8_t Mp3TrackBillion = 231;
31  static const uint8_t Mp3TrackTrillion = 232;
32  static const uint8_t Mp3TrackPoint = 233;
33  static const uint8_t Mp3TrackMinus = 234;
34  static const uint8_t Mp3TrackYear = 235;
35  static const uint8_t Mp3TrackYears = 236;
36  static const uint8_t Mp3TrackMonth = 237;
37  static const uint8_t Mp3TrackMonths = 238;
38  static const uint8_t Mp3TrackWeek = 239;
39  static const uint8_t Mp3TrackWeeks = 240;
40  static const uint8_t Mp3TrackDay = 241;
41  static const uint8_t Mp3TrackDays = 242;
42  static const uint8_t Mp3TrackHour = 243;
43  static const uint8_t Mp3TrackHours = 244;
44  static const uint8_t Mp3TrackMinute = 245;
45  static const uint8_t Mp3TrackMinutes = 246;
46  static const uint8_t Mp3TrackSecond = 247;
47  static const uint8_t Mp3TrackSeconds = 248;
48  static const uint8_t Mp3TrackMillisecond = 249;
49  static const uint8_t Mp3TrackMilliseconds = 250;
50  static const uint8_t Mp3TrackAnd = 251;
51 
52 public:
56  Idle,
59  };
60 
69  DFPReader(Stream& serial, DFPlayerMini::Cmd playCmd=DFPlayerMini::PlayTf, uint8_t busyPin=0, uint8_t readerBufferSize=30);
70 
73  ~DFPReader();
74 
81  void begin(bool bootWait=true);
82 
87  void update();
88 
99  void readNumber(double number, uint8_t dp=0);
100 
107  bool reading();
108 
111  void resetReaderBuf();
112 
118  bool appendElement(uint8_t value);
119 
120 private:
121  DFPlayerMini::Cmd _playCmd;
122 
123  void startPlayback(uint16_t track);
124 
129  uint8_t popElement();
130 
135  void appendSubThousand(int16_t num);
136 
139  void appendMagnitude(double* number, double magnitude, uint8_t magnitudeElement);
140 
141  // Some data for figuring out this pesky human speech stuff
142  static const uint8_t SMALL_NUMBERS[];
143  static const uint8_t TENS[];
144 
145  // Ring buffer
146  const uint8_t readerBufSize;
147  uint8_t *readerBuf;
148  uint8_t tailPtr;
149  uint8_t unplayedElements;
150 
151  uint32_t lastPlayStart;
152  PlaybackState playbackState;
153 
154 };
155 
156 
Reader is not playing, but is waiting for an audio file to play.
Definition: DFPReader.h:57
Play track arg from (SD card)
Definition: DFPlayerMini.h:56
void resetReaderBuf()
Definition: DFPReader.cpp:130
Reader is playing an audio file.
Definition: DFPReader.h:58
void readNumber(double number, uint8_t dp=0)
Definition: DFPReader.cpp:78
void update()
Definition: DFPReader.cpp:48
DFPReader(Stream &serial, DFPlayerMini::Cmd playCmd=DFPlayerMini::PlayTf, uint8_t busyPin=0, uint8_t readerBufferSize=30)
Definition: DFPReader.cpp:27
bool appendElement(uint8_t value)
Definition: DFPReader.cpp:151
void begin(bool bootWait=true)
Definition: DFPReader.cpp:40
Reader is idle.
Definition: DFPReader.h:56
bool reading()
Definition: DFPReader.cpp:119