#arduino #integer #ip
#arduino #целое число #ip
Вопрос:
Мне нужно получить последний октет IP-адреса в 3 отдельных int
s для управления MAX7219.
Я знаю, что октет — это uint8_t
Используя IPAddress ip = Wifi.localIP();
, скажем, мой ip [3] был 148, мне нужно:
int b1 = 1
int b2 = 4
int b3 = 8
, но скажем, ip [3] было всего 8, тогда b1 и b2 должны быть равны 0.
Комментарии:
1. Зачем вам нужно разделить октет на 3 отдельных целых числа? Что вы делаете с этими целыми числами?
Ответ №1:
Первое, что пришло на ум; вероятно, есть более элегантные способы сделать это, но это работает:
b3 = ip[3] % 10;
b2 = ((ip[3] % 100) - b3) / 10;
b1 = (ip[3] - (10 * b2) - b3) / 100;
Непроверенный, но вы поняли идею.
Однако не уверен, зачем вам понадобились бы отдельные целые числа.
Ответ №2:
заключительная функция; обратите внимание, что no_green — это двоичный массив со светодиодными битами
void showIP()
{
IPAddress ip = WiFi.localIP();
b3 = ip[3] % 10;
b2 = ((ip[3] % 100) - b3) / 10;
b1 = (ip[3] - (10 * b2) - b3) / 100;
// write bits to MAX7219
lc.setRow( 0, 6, byte( no_green[ b1] )); // hr leds position
lc.setRow( 0, 3, byte( no_green[ b2] )); // min leds position
lc.setRow( 0, 0, byte( no_green[ b3] )); // sec leds position
delay(6000);
}