Проблемы с нехваткой памяти Arduino + IR + Raw code
У меня проблема с моим новым проектом с Arduino + ИК-эмиттером + большими необработанными кодами.
Я пробовал так:
https://gist.github.com/jjmjr/41ed083c8229d0218c962641c5af27b0
Как вы можете видеть, каждый из моих необработанных кодов кондиционера огромен, поэтому я попробовал с помощью progmem использовать команду «a» (как включить) на последовательном порту, чтобы отправить первую строку из необработанных кодов IR, но это не сработало.
Кто-нибудь может мне помочь?
Спасибо
@J Milan, 👍0
Обсуждение1 ответ
Это первые несколько пар данных.
Вы можете видеть, что они повторяются по предсказуемому шаблону.
Уменьшите объем данных в скетче, сохранив «ключ» для каждой пары чисел.
Первые несколько пар будут храниться примерно так.
0, 0, 0, 0, 0, X, Y, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0,
508, 356, // 0 превращаем все нули в 508, 360
508, 360, // 0 при необходимости корректируем значения
504, 364, // 0
508, 356, // 0
508, 360, // 0
508, 25052, // Х
3540, 1664, // Й
504, 1232, // 1 сделать все (1) 508, 1230
496, 364, // 0
504, 360, // 0
508, 360, // 0
508, 1232, // 1
492, 368, // 0
508, 356, // 0
512, 356, // 0
508, 360, // 0
508, 1232, // 1
492, 364, // 0
512, 1228, // 1
496, 1240, // 1
492, 368, // 0
508, 1228,
496, 1240,
492, 1240,
492, 1240,
492, 1240,
Проверьте это https://test.sui.li/oszi/
- Как выбрать вывод передачи в библиотеке IRremote для Arduino Uno?
- Ошибка "collect2.exe: error: ld returned 1 exit status"
- Модуль HW-477 с ИК-датчиком VS1838B: Помощь с выводами
- Arduino IRremote перестает работать
- Можно ли подключить более одного ИК-приемника к Arduino Uno?
- Вспомогательный объект Flash String в качестве переменной
- Использование ИК-пульта с Arduino
- KY-022 ИК-приемник, светодиод всегда горит, нет выхода
«не сработало» — это очень плохое описание наблюдаемого результата… оно не содержит никакой информации, которую можно было бы использовать для решения проблемы., @jsotola
пожалуйста, добавьте листинг кода к вашему вопросу..... используйте кнопку
{}
, чтобы отформатировать его как код, @jsotolaПожалуйста, поясните в своем вопросе, что код, о котором вы спрашиваете, находится в ссылке на github.com в вопросе. Фактически, вы можете даже скопировать часть этого кода в свой вопрос. Если это правда, думаю, я понимаю, как можно сократить массив данных вдвое. Разделите все значения в массиве на 50 и измените тип с unsigned int на unsigned char. Это должно работать до тех пор, пока все полученные числа (после деления на 50) меньше 256. Затем, когда вы вызываете методы библиотеки IR, умножьте значения массива на 50, чтобы восстановить исходное значение., @st2000
...Сообщите нам, сработает ли вышеизложенное, и я скопирую его в ответ, который вы сможете принять., @st2000
использование массивов в качестве PROGMEM не поможет, если вы загружаете их в ОЗУ целиком. @st2000, один из кодов — 25060., @Juraj
Ах, я понимаю вашу точку зрения. Мемкопия. @J Милан, вероятно, вам понадобится взломать библиотеку, чтобы правильно обработать «сжатые» данные, или решить эту проблему, используя сообщения и библиотеки (т. е. не необработанные IR-данные), которые подходят для вашей платформы. Альтернативно, существует множество различных типов платформ Arduino. То, что у вас есть, может поместиться в процессор с большим количеством флэш-памяти и оперативной памяти., @st2000
Пожалуйста, опубликуйте MCVE вашего кода. Обычно MCVE является хорошим способом решения проблем., @MichaelT