TinyTrainable
 
Loading...
Searching...
No Matches
TinyTrainable.h
Go to the documentation of this file.
1
4
5// conditional compilation
6#ifndef TINY_TRAINABLE_H
7#define TINY_TRAINABLE_H
8
10#include <Arduino.h>
11
13#include "inputs/Input.h"
14
16#include "outputs/Output.h"
17
23 INPUT_SPEECH = 3
24};
25
35 OUTPUT_SERVO = 7
36};
37
39enum Colors { red = 0, green = 1, blue = 2, yellow = 3, magenta = 4, cyan = 5 };
40
44
45protected:
47 Input *myInput = nullptr;
48
50 Output *myOutput = nullptr;
51
53 // int _outputPinTest = -1;
54
55public:
57 static bool _serialDebugging;
58
60 static int _baudRate;
61
63 static int _timeBlinkLED;
64
68 TinyTrainable(InputType inputType, OutputType outputType);
69
72
73 // template datatypes allows any datatype as an argument
74 template <typename T> void debugPrint(T message) {
75 if (this->_serialDebugging) {
76 Serial.print("debug - ");
77 Serial.println(message);
78 }
79 };
80
83 void setupInstrument(bool serialDebugging);
84
86 void setupLEDs();
87
90 void setStateLEDBuiltIn(bool turnOn);
91
95 void setStateLEDRGB(bool turnOn, Colors color);
96
99 void blinkLEDBuiltIn(int blinks);
100
103 void blinkLEDRGB(int blinks, Colors color);
104
106 void identify();
107
112 void trainKNN(int k, int examplesPerClass, String objects[3]);
113
115 void setupGestureModel(String gestures[3],
116 const unsigned char *model = nullptr);
117
119 void gesturePrintHeader();
120
122 void gestureReadData();
123
125 void gestureSetAcceleration(float newVal);
126
128 void gestureSetNumberSamples(int newVal);
129
131 void setupSpeechModel(String sounds[3], const unsigned char *model = nullptr);
132
133 // methods for outputs
134
136 void setupOutputTest();
137
139 void playOutput(int classification);
140
141 // declaration of functions for output buzzer
142 void setupOutputBuzzer(int outputPin);
143 void getBuzzerParam(int object, int buzzerParamArray[]);
144 // for frequencies
145 void setBuzzerFrequency(int object, int frequency);
146 void setBuzzerFrequency(int object, int freqMin, int freqMax);
147 void setBuzzerFrequency(int object, int *arrayFrequencies,
148 int arrayFreqCount);
149 // for durations
150 void setBuzzerDuration(int object, int duration);
151 void setBuzzerDuration(int object, int durationMin, int durationMax);
152 void setBuzzerDuration(int object, int *arrayDurations,
153 int arrayDurationCount);
154
155 // methods for output LED
156 void setupOutputLED(int object, int outputPin);
157
158 // methods for output MIDI
159 void setupOutputMIDI(byte midiChannel);
160 void setMIDINote(int object, int note);
161 void sendMIDINoteOn(byte channel, byte note, byte velocity);
162 void sendMIDINoteOff(byte channel, byte note);
163 void sendMIDIAllNotesOff(byte channel);
164
165 // methods for output printer
166 void setupOutputPrinter();
167 void setPrinterBaudRate(int rate);
168 void setPrinterBegin();
169 void setPrinterPause(int pause);
170 void setPrinterSleep();
171 void setPrinterWake();
172 void setPrinterTest();
173
174 // methods for output screen
175 void setupOutputScreen();
176 void screenDrawWelcome();
177
178 // methods for output serial
179 void setupOutputSerial();
180
181 // methods for output servo
182 void setupOutputServo(int outputPin);
183 void setServoTempo(int object, int tempo);
184 int bpmToMs(int tempo);
185 void setServoMaxAngle(int angle);
186 void setServoMinAngle(int angle);
187 int getServoMaxAngle();
188 int getServoMinAngle();
189 void moveServo(int classification);
190};
191
192// conditional compilation
193#endif
Input base class.
Output base class.
OutputType
Definition: TinyTrainable.h:27
@ OUTPUT_MIDI
Definition: TinyTrainable.h:31
@ OUTPUT_SERIAL
Definition: TinyTrainable.h:34
@ OUTPUT_NONE
Definition: TinyTrainable.h:28
@ OUTPUT_SCREEN
Definition: TinyTrainable.h:33
@ OUTPUT_PRINTER
Definition: TinyTrainable.h:32
@ OUTPUT_LED
Definition: TinyTrainable.h:30
@ OUTPUT_SERVO
Definition: TinyTrainable.h:35
@ OUTPUT_BUZZER
Definition: TinyTrainable.h:29
Colors
Definition: TinyTrainable.h:39
@ green
Definition: TinyTrainable.h:39
@ blue
Definition: TinyTrainable.h:39
@ magenta
Definition: TinyTrainable.h:39
@ red
Definition: TinyTrainable.h:39
@ yellow
Definition: TinyTrainable.h:39
@ cyan
Definition: TinyTrainable.h:39
InputType
Definition: TinyTrainable.h:19
@ INPUT_SPEECH
Definition: TinyTrainable.h:23
@ INPUT_COLOR
Definition: TinyTrainable.h:21
@ INPUT_NONE
Definition: TinyTrainable.h:20
@ INPUT_GESTURE
Definition: TinyTrainable.h:22
Input base class.
Definition: Input.h:15
Output base class.
Definition: Output.h:16
TinyTrainable base class.
Definition: TinyTrainable.h:43
void gestureReadData()
input gesture, read data for database
Definition: TinyTrainable.cpp:132
void setPrinterTest()
Definition: TinyTrainable.cpp:370
void setServoMinAngle(int angle)
Definition: TinyTrainable.cpp:423
void sendMIDINoteOff(byte channel, byte note)
Definition: TinyTrainable.cpp:321
void identify()
input, identify class
Definition: TinyTrainable.cpp:98
void screenDrawWelcome()
Definition: TinyTrainable.cpp:383
void setupOutputMIDI(byte midiChannel)
Definition: TinyTrainable.cpp:304
void setupInstrument(bool serialDebugging)
setup debugging
Definition: TinyTrainable.cpp:92
int bpmToMs(int tempo)
Definition: TinyTrainable.cpp:409
void setupOutputTest()
output, test if it is working
Definition: TinyTrainable.cpp:239
void setMIDINote(int object, int note)
Definition: TinyTrainable.cpp:309
void setupSpeechModel(String sounds[3], const unsigned char *model=nullptr)
input speech, setup TensorFlow model
Definition: TinyTrainable.cpp:150
void setServoMaxAngle(int angle)
Definition: TinyTrainable.cpp:417
void gesturePrintHeader()
input gesture, print header for database
Definition: TinyTrainable.cpp:126
void blinkLEDRGB(int blinks, Colors color)
blink LED RGB
Definition: TinyTrainable.cpp:193
void setupOutputBuzzer(int outputPin)
Definition: TinyTrainable.cpp:245
void setupOutputScreen()
Definition: TinyTrainable.cpp:377
void trainKNN(int k, int examplesPerClass, String objects[3])
input color, train KNN algorithm
Definition: TinyTrainable.cpp:112
void setupLEDs()
initialize LEDs of Arduino
Definition: TinyTrainable.cpp:157
void setPrinterWake()
Definition: TinyTrainable.cpp:364
void setBuzzerFrequency(int object, int frequency)
Definition: TinyTrainable.cpp:257
void setupOutputSerial()
Definition: TinyTrainable.cpp:390
void setupOutputServo(int outputPin)
Definition: TinyTrainable.cpp:397
void setupOutputLED(int object, int outputPin)
Definition: TinyTrainable.cpp:297
static bool _serialDebugging
pin for output
Definition: TinyTrainable.h:57
void setPrinterBegin()
Definition: TinyTrainable.cpp:346
void debugPrint(T message)
Definition: TinyTrainable.h:74
void playOutput(int classification)
output, react to classification
Definition: TinyTrainable.cpp:104
void blinkLEDBuiltIn(int blinks)
blink LED built-in
Definition: TinyTrainable.cpp:181
void getBuzzerParam(int object, int buzzerParamArray[])
Definition: TinyTrainable.cpp:251
void setServoTempo(int object, int tempo)
Definition: TinyTrainable.cpp:403
void sendMIDIAllNotesOff(byte channel)
Definition: TinyTrainable.cpp:327
void sendMIDINoteOn(byte channel, byte note, byte velocity)
Definition: TinyTrainable.cpp:315
void setupOutputPrinter()
Definition: TinyTrainable.cpp:334
Output * myOutput
Output pointer.
Definition: TinyTrainable.h:50
void setPrinterSleep()
Definition: TinyTrainable.cpp:358
void setPrinterBaudRate(int rate)
Definition: TinyTrainable.cpp:340
void setBuzzerDuration(int object, int duration)
Definition: TinyTrainable.cpp:276
void gestureSetAcceleration(float newVal)
input gesture, sets custom acceleration threshold
Definition: TinyTrainable.cpp:138
void setStateLEDBuiltIn(bool turnOn)
set state of LED built-in
Definition: TinyTrainable.cpp:173
static int _timeBlinkLED
static integer, time for blinking LED
Definition: TinyTrainable.h:63
int getServoMaxAngle()
Definition: TinyTrainable.cpp:429
Input * myInput
Input pointer.
Definition: TinyTrainable.h:47
static int _baudRate
static integer, baud rate for serial communication
Definition: TinyTrainable.h:60
void moveServo(int classification)
Definition: TinyTrainable.cpp:445
void setupGestureModel(String gestures[3], const unsigned char *model=nullptr)
input gesture, setup TensorFlow model
Definition: TinyTrainable.cpp:119
void setPrinterPause(int pause)
Definition: TinyTrainable.cpp:352
void setStateLEDRGB(bool turnOn, Colors color)
set state of LED RGB
Definition: TinyTrainable.cpp:204
void gestureSetNumberSamples(int newVal)
input gesture, sets custom number of samples
Definition: TinyTrainable.cpp:144
~TinyTrainable()
TinyTrainable destructor.
Definition: TinyTrainable.cpp:78
int getServoMinAngle()
Definition: TinyTrainable.cpp:437