Изменение цвета светодиода удаленно (mqtt)
- Войдите на сайт для отправки комментариев
Пнд, 05/02/2018 - 16:04
Добрый вечер, хочу реализовать следующее, задавая на смартфоне цвет из палитры, чтобы светодиод светился тем же цветом. Как разбить на R , G , B из 0xFFFFFFFF я знаю, вернее получилость...
const long int redBits=0xFF000000; const long int greenBits=0x00FF0000; const long int blueBits=0x0000FF00; unsigned long int rgb=0xFF7F3300; unsigned char red=(rgb&redBits)>>24; unsigned char green=(rgb&greenBits)>>16; unsigned char blue=(rgb&blueBits)>>8; Serial.println(rgb); Serial.println(red); Serial.println(green); Serial.println(blue);
Вопрос в следующем, у меня из подписки в mqtt выходит значения типа string. Например, я задаю цвет в смартфоне он у меня выходит в ввиде FF7F3300. Как мне его привести в unsigned long int 0xFF7F3300...? Я новичек, в интернете искал, но не нашел очевидного ответа.
void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); String payloadstr; for (int i = 1; i < length; i++) { Serial.print((char)payload[i]); color+=(char)payload[i]; }
strtoul() - http://cppstudio.com/post/828/
Только вам нужно String в функцию передавать как *char или сгружать с Serial прямо в char[]
Только вам нужно String в функцию передавать как *char или сгружать с Serial прямо в char[]
Я не сильно опытный, можете пример показать?
А я сильно ленивый, чтобы за кого-то код писать.
Вот отправная точка, в третьем же пункте ("String to unsigned long conversion") разбирается прямо таки схожий случай: https://www.google.ru/search?q=arduino+string+strtoul&oq=arduino+string+strtoul