NiboRoboLib 3.6 - NIBO burger Library
NIBOburger.h
gehe zur Dokumentation dieser Datei
1 /*
2  NIBOburger library for ARDUINO
3  License: BSD-License
4  (c) 2015 by Nils Springob, nicai-systems
5 */
6 
7 #ifndef __NIBOBURGER_H__
8 #define __NIBOBURGER_H__
9 
10 
18 #if (!defined (_NIBOBURGER_)) && (!defined (ARDUINO_AVR_NIBOBURGER)) && (!defined (ARDUINO_AVR_NIBOBURGER_1284_15)) && (!defined (ARDUINO_AVR_NIBOBURGER_1284_20))
19 #error "NIBOburger library should be used with a NIBOburger robot as board!"
20 #endif
21 
22 #include "niboburger/color.h"
23 
24 
25 #define ON 1
26 #define OFF 0
27 
28 #define LED1 1
29 #define LED2 2
30 #define LED3 3
31 #define LED4 4
32 
38  public:
40 
44  void begin();
45 
50  unsigned int getVoltage();
51 
56  void setMonitorVoltage(unsigned int millivolt);
57 
61  void checkVoltage();
62 
66  void setLeds(bool led1, bool led2, bool led3, bool led4);
67 
73  void setLed(int led, int value);
74 
80  int getLed(int led);
81 
85  void waitAnalogUpdate();
86 
92  unsigned int getAnalog(unsigned char adc_channel, unsigned char active=0);
93 
97  unsigned int getKeyState();
98 
103  unsigned int getKeyChar();
104 
108  unsigned int getRandomSeed();
109 
114  void randomize(unsigned int seed);
115 
119  void randomize();
120 
126  int getRandomInt(int lo, int hi);
127 };
128 
129 extern NIBOburgerClass NIBOburger;
130 
131 
132 /*---------------------------------------------------------------------------*/
133 
134 
135 
140  private:
141  unsigned char id;
142  public:
143  EnginePartClass(unsigned char id);
144 
148  void resetTicks();
149 
154  int getTicks();
155  //int getSpeed();
156 };
157 
158 
159 /*---------------------------------------------------------------------------*/
160 
161 
162 
166 class EngineClass {
167  public:
168 
173 
178  EngineClass();
179 
183  void begin();
184 
188  void setPWM(int left, int right);
189 
194  void setSpeed(int left, int right);
195 
200  void setTargetAbs(int left, int right, unsigned int speed);
201 
206  void setTargetRel(int left, int right, unsigned int speed);
207 
212  int getTargetDist();
213 
217  void stop();
218 
222  void stopImmediate();
223 };
224 
225 extern EngineClass Engine;
226 
227 
228 /*---------------------------------------------------------------------------*/
229 
230 
235 class ColorRGB {
236  private:
237  unsigned long value;
238  public:
239  static const unsigned long CALIBRATE_BLACK = COLOR_RGB_CAL_BLACK;
240  static const unsigned long CALIBRATE_WHITE = COLOR_RGB_CAL_WHITE;
241  static const unsigned long CALIBRATE_RED = COLOR_RGB_CAL_RED;
242  static const unsigned long CALIBRATE_BLUE = COLOR_RGB_CAL_BLUE;
243  static const unsigned long CALIBRATE_GREEN = COLOR_RGB_CAL_GREEN;
244  static const unsigned long CALIBRATE_YELLOW = COLOR_RGB_CAL_YELLOW;
245 
249  ColorRGB(unsigned char r, unsigned char g, unsigned char b);
250 
254  explicit ColorRGB(unsigned long val);
255 
259  ~ColorRGB();
260 
264  unsigned int diff(const ColorRGB & col2) const;
265 
269  unsigned int diff(unsigned long val2) const;
270 };
271 
272 /*---------------------------------------------------------------------------*/
273 
274 
279 class ColorHSV {
280  private:
281  unsigned long value;
282  public:
283  static const unsigned long CALIBRATE_BLACK = COLOR_HSV_CAL_BLACK;
284  static const unsigned long CALIBRATE_WHITE = COLOR_HSV_CAL_WHITE;
285  static const unsigned long CALIBRATE_RED = COLOR_HSV_CAL_RED;
286  static const unsigned long CALIBRATE_BLUE = COLOR_HSV_CAL_BLUE;
287  static const unsigned long CALIBRATE_GREEN = COLOR_HSV_CAL_GREEN;
288  static const unsigned long CALIBRATE_YELLOW = COLOR_HSV_CAL_YELLOW;
289 
293  ColorHSV(unsigned char h, unsigned char s, unsigned char v);
294 
298  explicit ColorHSV(unsigned long val);
299 
303  ~ColorHSV();
304 
308  unsigned int diff(const ColorHSV & col2, unsigned int hTol=0) const;
309 
313  unsigned int diff(unsigned long val2, unsigned int hTol=0) const;
314 };
315 
316 /*---------------------------------------------------------------------------*/
317 
318 
325  public:
327 
331  void begin();
332 
336  unsigned int get(unsigned char index, unsigned char absolute=0);
337 
341  unsigned int getL(unsigned char absolute=0);
342 
346  unsigned int getC(unsigned char absolute=0);
347 
351  unsigned int getR(unsigned char absolute=0);
352 
356  unsigned int getCL(unsigned char absolute=0);
357 
361  unsigned int getCR(unsigned char absolute=0);
362 
367 
372 
376  void calibrateWhite();
377 
381  void calibrateBlack();
382 
386  void storeCalibration();
387 };
388 
389 extern SurfaceSensorClass SurfaceSensor;
390 
391 
392 
393 /*---------------------------------------------------------------------------*/
394 
395 
396 enum {
397  SENSOR_DISABLED = 0,
398  SENSOR_PULSE = 1,
399  SENSOR_LOW = 2,
400  SENSOR_HIGH = 3
401 };
402 
406 class SensorClass {
407  private:
408  unsigned char id;
409  public:
410  SensorClass(unsigned char id);
411 
415  void begin();
416 
424  void activate(unsigned char mode);
425 
429  void deactivate();
430 
434  unsigned int get(unsigned char absolute=0);
435  //unsigned int getRaw(unsigned char variant);
436 };
437 
438 
442 extern SensorClass SensorFL;
443 
447 extern SensorClass SensorFR;
448 
452 extern SensorClass SensorFLL;
453 
457 extern SensorClass SensorFRR;
458 
462 extern SensorClass SensorBL;
463 
467 extern SensorClass SensorBC;
468 
472 extern SensorClass SensorBR;
473 
474 
475 #endif
void setTargetRel(int left, int right, unsigned int speed)
Zielposition für Räder setzen.
unsigned int getKeyState()
aktuellen Tastenzustand auslesen
static const unsigned long CALIBRATE_WHITE
24 Bit HSV-Konstante für Kalibrier-Farbe: weiss
Definition: NIBOburger.h:284
static const unsigned long CALIBRATE_BLACK
24 Bit HSV-Konstante für Kalibrier-Farbe: schwarz
Definition: NIBOburger.h:283
void calibrateBlack()
Kalibrierung auf schwarzem Untergrund, entspricht dem Wert 0 (0x0000)
void stop()
Motoren anhalten (passiv Stoppen - rollt aus)
void begin()
Initialisierung.
static const unsigned long CALIBRATE_RED
24 Bit HSV-Konstante für Kalibrier-Farbe: rot
Definition: NIBOburger.h:285
void resetTicks()
Aktuellen Zählerstand auf 0 setzen.
Eine einzelne Antriebsseite.
Definition: NIBOburger.h:139
SensorClass SensorFLL
Sensor-Brick im Sensor-Slot FLL.
~ColorHSV()
Destruktor.
Farbe im HSV Farbmodell.
Definition: NIBOburger.h:279
void setMonitorVoltage(unsigned int millivolt)
Zu überprüfende Spannung setzen, wird mit checkVoltage() überprüft.
void checkVoltage()
Versorgungsspannung überprüfen, im Fehlerfall anhalten und blinken.
unsigned int diff(const ColorHSV &col2, unsigned int hTol=0) const
Farbabweichung (HSV) zu zweiter HSV-Farbe.
void setTargetAbs(int left, int right, unsigned int speed)
Zielposition für Räder setzen.
SensorClass SensorBC
Sensor-Brick im Sensor-Slot BC.
void storeCalibration()
Kalibrierdaten im EEPROM speichern.
Die Klasse repräsentiert die Kernfunktionen des NIBO burger Roboters.
Definition: NIBOburger.h:37
ColorRGB getColorRGB()
RGB-Farbwert aus den drei Sensoren berechnen und zurückliefern.
unsigned int getRandomSeed()
Zufallszahlen-Basis anhand des Rauschens der Sensorwerte liefern.
static const unsigned long CALIBRATE_YELLOW
24 Bit HSV-Konstante für Kalibrier-Farbe: gelb
Definition: NIBOburger.h:288
void begin()
Initialisierung.
unsigned int getL(unsigned char absolute=0)
Messwert linker Bodensensor.
SensorClass SensorBR
Sensor-Brick im Sensor-Slot BR.
static const unsigned long CALIBRATE_YELLOW
24 Bit RGB-Konstante für Kalibrier-Farbe: gelb
Definition: NIBOburger.h:244
void setPWM(int left, int right)
PWM Werte (-1023 ...
Eine Klasse für die drei Bodensensor BL, BC und BR.
Definition: NIBOburger.h:324
static const unsigned long CALIBRATE_GREEN
24 Bit RGB-Konstante für Kalibrier-Farbe: grün
Definition: NIBOburger.h:243
SensorClass SensorFL
Sensor-Brick im Sensor-Slot FL.
void begin()
Initialisierung des NIBOburger Roboters.
int getTicks()
Aktueller Zählerwert des Rades in Ticks, im Precise Mode entsprechen 200 Ticks (Fast: 40 Ticks) einer...
int getTargetDist()
Verbleibende Distanz zum Ziel bei Durchführung von setTargetAbs() bzw.
static const unsigned long CALIBRATE_WHITE
24 Bit RGB-Konstante für Kalibrier-Farbe: weiss
Definition: NIBOburger.h:240
unsigned int getAnalog(unsigned char adc_channel, unsigned char active=0)
Rohwert eines analogen Kanals auslesen.
unsigned int getR(unsigned char absolute=0)
Messwert rechter Bodensensor.
unsigned int getCL(unsigned char absolute=0)
Messwert linker Bodensensor mit Licht vom mittleren Sensor.
static const unsigned long CALIBRATE_BLUE
24 Bit RGB-Konstante für Kalibrier-Farbe: blau
Definition: NIBOburger.h:242
void begin()
Initialisierung.
void randomize()
Basis des Zufallszahlengenerators zufällig setzen.
SensorClass SensorFRR
Sensor-Brick im Sensor-Slot FRR.
~ColorRGB()
Destruktor.
void activate(unsigned char mode)
Sensor-Modus setzen:
unsigned int getCR(unsigned char absolute=0)
Messwert rechter Bodensensor mit Licht vom mittleren Sensor.
SensorClass SensorFR
Sensor-Brick im Sensor-Slot FR.
int getRandomInt(int lo, int hi)
Zufallszahl aus dem Interval [lo, hi] generieren.
unsigned int diff(const ColorRGB &col2) const
Farbabweichung (RGB) zu zweiter RGB Farbe.
void deactivate()
Digitalen Pin freigeben.
void setLed(int led, int value)
LED ein/ausschalten:
void setSpeed(int left, int right)
Geschwindigkeit für die beiden Motoren setzen.
Farbe im RGB Farbmodell.
Definition: NIBOburger.h:235
unsigned int getVoltage()
Versorgungsspannung messen.
SensorClass SensorBL
Sensor-Brick im Sensor-Slot BL.
Routinen für 24-Bit RGB Farben und 24-Bit HSV Farben.
Die Klasse steht für den kompletten Antrieb des Roboters.
Definition: NIBOburger.h:166
ColorRGB(unsigned char r, unsigned char g, unsigned char b)
Konstruktor aus einzelnen Farbkomponenten: Rot, Grün und Blau.
void stopImmediate()
Motoren unverzüglich stoppen (aktiv Stoppen - bremst)
static const unsigned long CALIBRATE_BLACK
24 Bit RGB-Konstante für Kalibrier-Farbe: schwarz
Definition: NIBOburger.h:239
ColorHSV getColorHSV()
HSV-Farbwert aus den drei Sensoren berechnen und zurückliefern.
static const unsigned long CALIBRATE_RED
24 Bit RGB-Konstante für Kalibrier-Farbe: rot
Definition: NIBOburger.h:241
EnginePartClass left
linke Seite
Definition: NIBOburger.h:172
void waitAnalogUpdate()
Warten bis ein neuer Satz Messwerte seit dem letzten Aufruf gemessen wurde.
unsigned int getC(unsigned char absolute=0)
Messwert mittlerer Bodensensor.
int getLed(int led)
LED abfragen:
void setLeds(bool led1, bool led2, bool led3, bool led4)
Alle LEDs auf einmal ein/ausschalten.
unsigned int getKeyChar()
nächstes Tastaturereignis auslesen
static const unsigned long CALIBRATE_BLUE
24 Bit HSV-Konstante für Kalibrier-Farbe: blau
Definition: NIBOburger.h:286
ColorHSV(unsigned char h, unsigned char s, unsigned char v)
Konstruktor aus einzelnen Farbkomponenten: Hue, Saturation und Value.
Klasse für die Sensor-Bricks in den Sensor-Slots.
Definition: NIBOburger.h:406
EnginePartClass right
rechte Seite
Definition: NIBOburger.h:177
static const unsigned long CALIBRATE_GREEN
24 Bit HSV-Konstante für Kalibrier-Farbe: grün
Definition: NIBOburger.h:287
void calibrateWhite()
Kalibrierung auf weissem Untergrund, entspricht dem Wert 4096 (0x1000)