Roboruka
Knihovna pro obsluhu RoboRuky.
roboruka.h
Zobrazit dokumentaci tohoto souboru.
1
8#ifndef _LIBRB_H
9#define _LIBRB_H
10
11#include <memory>
12
13#include <fmt/core.h>
14#include <fmt/printf.h>
15
16#include <Arduino.h>
17
18#include "gridui.h"
19#include "rbprotocol.h"
20
21using namespace gridui;
22
38 : arm_servos(32)
39 , line_cs(4)
40 , line_mosi(14)
41 , line_miso(27)
42 , line_sck(26) {
43 }
44
45 uint8_t arm_servos;
46
47 uint8_t line_cs;
48 uint8_t line_mosi;
49 uint8_t line_miso;
50 uint8_t line_sck;
51};
52
53#define RK_DEFAULT_WIFI_AP_PASSWORD "flusflus"
54
62struct rkConfig {
63 rkConfig()
65 , owner("")
66 , name("")
68 , wifi_name("")
69 , wifi_password("")
70 , wifi_default_ap(false)
73 , motor_id_left(2)
79 , arm_bone_trims { 0, 0, 0 } {
80 }
81
83
84 const char* owner;
85 const char* name;
86
88
89 const char* wifi_name;
90 const char* wifi_password;
91
93 const char* wifi_ap_password;
95
96 uint8_t motor_id_left;
102
103 float arm_bone_trims[3];
107
109};
110
117void rkSetup(const rkConfig& cfg = rkConfig());
118
133void rkMotorsSetPower(int8_t left, int8_t right);
134
140void rkMotorsSetPowerLeft(int8_t power);
141
147void rkMotorsSetPowerRight(int8_t power);
148
155void rkMotorsSetPowerById(int id, int8_t power);
156
167void rkMotorsJoystick(int32_t x, int32_t y);
168
215bool rkArmMoveTo(double x, double y);
216
226bool rkArmPosition(double& outX, double& outY);
227
233bool rkArmIsGrabbing();
234
240void rkArmSetGrabbing(bool grab);
241
248void rkArmSetServo(uint8_t id, float degrees);
249
256float rkArmGetServo(uint8_t id);
257
267std::unique_ptr<rbjson::Object> rkArmGetInfo();
268
282uint32_t rkBatteryPercent();
283
289uint32_t rkBatteryVoltageMv();
290
291uint32_t rkBatteryRaw();
292float rkBatteryCoef();
293
313void rkControllerSendLog(const char* format, ...);
314void rkControllerSendLog(const std::string& text);
315
316void rkControllerSend(const char* cmd, rbjson::Object* data = nullptr);
317void rkControllerSendMustArrive(const char* cmd, rbjson::Object* data = nullptr);
318
331void rkLedRed(bool on = true);
336void rkLedYellow(bool on = true);
341void rkLedGreen(bool on = true);
346void rkLedBlue(bool on = true);
347
352void rkLedAll(bool on = true);
353
358void rkLedById(uint8_t id, bool on = true);
359
375bool rkButtonIsPressed(uint8_t id, bool waitForRelease = false);
376
384void rkButtonWaitForRelease(uint8_t id);
385
412void rkLineCalibrate(float motor_time_coef = 1.0);
413
420
427uint16_t rkLineGetSensor(uint8_t sensorId);
428
439float rkLineGetPosition(bool white_line = false, uint8_t line_threshold_pct = 25);
440
443#endif // LIBRB_H
bool rkArmPosition(double &outX, double &outY)
Na kterých souřadnicích je teď konec ruky?
Definition: roboruka.cpp:68
float rkArmGetServo(uint8_t id)
Na jaké pozici je servo?
Definition: roboruka.cpp:84
void rkArmSetServo(uint8_t id, float degrees)
Pohnout servo na úhel.
Definition: roboruka.cpp:80
bool rkArmIsGrabbing()
Jsou prsty ruky rozevřené?
Definition: roboruka.cpp:76
bool rkArmMoveTo(double x, double y)
Pohnutí rukou na souřadnice X Y.
Definition: roboruka.cpp:60
std::unique_ptr< rbjson::Object > rkArmGetInfo()
Informace o mechanice ruky.
Definition: roboruka.cpp:89
void rkArmSetGrabbing(bool grab)
Otevřít/zavřít prsty ruky.
Definition: roboruka.cpp:72
uint32_t rkBatteryPercent()
Úroveň baterie v procentech.
Definition: roboruka.cpp:101
uint32_t rkBatteryVoltageMv()
Úroveň baterie v mV.
Definition: roboruka.cpp:105
void rkButtonWaitForRelease(uint8_t id)
Počkat, dokud není tlačítko uvolněno.
Definition: roboruka.cpp:208
bool rkButtonIsPressed(uint8_t id, bool waitForRelease=false)
Je teď stisknuto tlačítko?
Definition: roboruka.cpp:184
#define RK_DEFAULT_WIFI_AP_PASSWORD
Výchozí heslo pro WiFi AP.
Definition: roboruka.h:53
void rkSetup(const rkConfig &cfg=rkConfig())
Inicializační funkce Roboruky.
Definition: roboruka.cpp:20
void rkLedAll(bool on=true)
Zapnout/vypnout všechny LED zaráz.
Definition: roboruka.cpp:150
void rkLedRed(bool on=true)
Zapnout/vypnout červenou LED.
Definition: roboruka.cpp:134
void rkLedBlue(bool on=true)
Zapnout/vypnout modrou LED.
Definition: roboruka.cpp:146
void rkLedGreen(bool on=true)
Zapnout/vypnout zelenou LED.
Definition: roboruka.cpp:142
void rkLedYellow(bool on=true)
Zapnout/vypnout žlutou LED.
Definition: roboruka.cpp:138
void rkLedById(uint8_t id, bool on=true)
Zapnout/vypnout LED podle jejich čísla na desce, od 1 do 4 včetně.
Definition: roboruka.cpp:158
uint16_t rkLineGetSensor(uint8_t sensorId)
Hodnota z jednoho senzoru na čáru.
Definition: roboruka.cpp:280
void rkLineClearCalibration()
Vymazat kalibraci.
Definition: roboruka.cpp:270
void rkLineCalibrate(float motor_time_coef=1.0)
Kalibrovat senzory na čáru.
Definition: roboruka.cpp:232
float rkLineGetPosition(bool white_line=false, uint8_t line_threshold_pct=25)
Pozice čáry pod senzory.
Definition: roboruka.cpp:284
void rkMotorsJoystick(int32_t x, int32_t y)
Nastavení motorů podle joysticku.
Definition: roboruka.cpp:130
void rkMotorsSetPowerLeft(int8_t power)
Nastavení výkonu levého motoru.
Definition: roboruka.cpp:113
void rkMotorsSetPowerRight(int8_t power)
Nastavení výkonu pravého motoru.
Definition: roboruka.cpp:117
void rkMotorsSetPowerById(int id, int8_t power)
Nastavení výkonu motoru podle jeho čísla (M1...M8) na desce.
Definition: roboruka.cpp:121
void rkMotorsSetPower(int8_t left, int8_t right)
Nastavení výkonu motorů.
Definition: roboruka.cpp:109
void rkControllerSendLog(const char *format,...)
Odeslat text do aplikace.
Definition: roboruka.cpp:24
Nastavení SW pro Roboruku.
Definition: roboruka.h:62
const char * wifi_password
Heslo k WiFi, na kterou se připojit. Výchozí: ""
Definition: roboruka.h:90
uint8_t motor_id_left
Které M číslo motoru patří levému, podle čísla na desce. Výchozí: 2
Definition: roboruka.h:96
bool rbcontroller_app_enable
povolit komunikaci s aplikací RBController. Výchozí: false
Definition: roboruka.h:82
uint8_t motor_max_power_pct
Limit výkonu motoru v procentech od 0 do 100. Výchozí: 60
Definition: roboruka.h:98
float battery_coefficient
koeficient pro kalibraci měření napětí baterie. Výchozí: 1.0
Definition: roboruka.h:87
const char * name
Jméno robota. Výchozí: "".
Definition: roboruka.h:85
const char * wifi_ap_password
Heslo k vytvořené síti. Výchozí: "flusflus"
Definition: roboruka.h:93
uint8_t wifi_ap_channel
Kanál WiFi vytvořené sítě. Výchozí: 1
Definition: roboruka.h:94
bool motor_polarity_switch_left
Prohození polarity levého motoru. Výchozí: false
Definition: roboruka.h:99
rkPinsConfig pins
Konfigurace pinů pro periferie, viz rkPinsConfig.
Definition: roboruka.h:108
bool wifi_default_ap
Vytvářet WiFi síť místo toho, aby se připojovalo k wifi_name. Výchozí: false
Definition: roboruka.h:92
uint8_t motor_id_right
Které M číslo motoru patří pravému, podle čísla na desce. Výchozí: 1
Definition: roboruka.h:97
float arm_bone_trims[3]
Definition: roboruka.h:103
const char * wifi_name
Jméno WiFi sítě, na kterou se připojovat. Výchozí: ""
Definition: roboruka.h:89
bool motor_enable_failsafe
Zastaví motory po 500ms, pokud není zavoláno rkSetMotorPower. Výchozí: false
Definition: roboruka.h:101
bool motor_polarity_switch_right
Prohození polarity pravého motoru. Výchozí: false
Definition: roboruka.h:100
const char * owner
Jméno vlastníka robota. Podle tohoto jména filtruje RBController roboty. Výchozí: ""
Definition: roboruka.h:84
Nastavení čísel pinů různých periferií.
Definition: roboruka.h:36
uint8_t arm_servos
Signál pro serva ruky. Výchozí: pin 32.
Definition: roboruka.h:45