Похоже, что ArduinoSTL 1.1.0 не включает unordered_map
, поэтому вы можете создать map
, как это.
- Загрузите ZIP-файл Arduino STL иположите его куда-нибудь хорошо
- Sketch \ Include Library \ Add ZIP library и укажите полный путь к ZIP-файлу.
Затем он должен скомпилироваться, хотя и с большим количеством предупреждений STLо неиспользованных переменных.
#include <ArduinoSTL.h>
#include <iostream>
#include <string>
#include <map>
struct key_entry {
std::string name;
std::string down;
std::string up;
key_entry() : name(), down(), up() {}
key_entry(const std::string& n, const std::string& d, const std::string& u) :
name(n),
down(d),
up(u)
{}
};
using keydict = std::map<unsigned int, key_entry>;
keydict kd = {
{0x28, {"KEY_ENTER", "\x5a", "\xf0\x5a"}},
{0x29, {"KEY_ESC", "\x76", "\xf0\x76"}}
};
void setup() {
Serial.begin( 115200 );
}
void loop() {
auto& a = kd[0x29];
// use a.down or a.up (or a.name for debugging)
Serial.write(a.up.c_str(), a.up.size());
}