Функция для IR REMOTE

Увидел такую функцию, что-то не одолел, как она код кнопки отрабатывает?

int getIrKey(){
  int len = pulseIn(irPin,LOW);
  int key, temp;
  key = 0;
  //Serial.print("len=");
  //Serial.println(len);
  if(len > 5000) {
    for(int i=1;i<=32;i++){
      temp = pulseIn(irPin,HIGH);
      if(temp > 1000)
        key = key + (1<<(i-17));
    }
  }
  if(key < 0 )
    key = -key;
  
  //if(key)
    //Serial.println(key);

    delay(250);
  return key;
}

Хреново

я не о качестве я об алгоритме

Ну хоть кто то с миллиса на пульсеин перелез.

Вот это интересная строчка:

с учетом того что i может изменятся от 1 до 32. Интересно, как автор видит сдвиг влево на отрицательное число шагов - как сдвиг вправо?

я не смог одолеть полёт его мысли, то и обратился к знающим

Именно так оно и есть. Сдвиг влево на -1 = сдвигу вправо на 1.

да ладно 0_0

Проверь.

Причем тут царь?))))

да, я это, про себя)))
совсем старый стал…

нет.
это зависит от компилятора и чипа. и в общем случае, сдвиг на отрицательное количество позиций является некорректной операцией. это экосистема ардуино разбаловала людей и сильно понизила порог вхождения в аппаратную разработку. можно фигачить целочисленные типы на вывод в консоль без всяких sprintf. хотя, конешно, внутри оно в итоге транслируется в нормальный код перед компиляцией, но в родной IDE даже исходники либ не глянешь которые установил) пример тупизма вызванного дилетантами в профессии: недавно обнаружили баг в опенсорсной(!) биткоин библиотеке, которую юзали в течение нескольких лет(!), а там был сильно ослаблен генератор случайных чисел, ну и украли там у когото 5 тыщ долларов перебором оставшихся вариантов ключа, вы прикиньте. еще одни клоуны выпускающие оффлайновые биткоин кошельки ledger, выпустили обновление драйверов для своих девайсов. а в драйверах новая функция - бекап мастер ключа хе-хе. на резонные вопросы коммунити они ответили “ну ващет мы всегда имели доступ к вашим ключам, чо вы кипешите?” При этом они кичатся тем, что какоето там швейцарское бюро кибер секурити, проверило их прошивку. По факту им дали на проверку все, кроме генератора энтропии, и бинарь собрать и подписать не дали.
Короче, чето я тоже старый стал.

На форуме ардуино обсирать ардуино? Да Вы просто гений.
И причем тут биткойны? Лично мне на это начхать.

1 лайк

Если лично вы импотент, не стоит делать вывод, что человечество скоро вымрет

3 лайка

Опять всё зафлудили, нет алгоритм разобрать для начинающего ардуинщика )))

По-моему всё как обычно )))

Какой там ещё сдвиг вправо! До 17-ти без сдвигов (сдвиг на 0), а после 17-ти сдвигаем влево на 1 разряд с каждым проходом.