Как я могу присвоить переменную выходу функции в Arduino?
Я пытаюсь назначить выходные данные моей функции (которая регулирует выходной сигнал ЦАП) переменной, чтобы я мог распечатать и отобразить ее на своем последовательном мониторе. Вот код
#include <Wire.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;
int volza;
void setup() {
Serial.begin(38400);
Serial.println("Hello!");
dac.begin(0x60);
}
void loop() {
volza = dac.setVoltage(1095, 1); // ЭТО ПРОБЛЕМА
Serial.println(volza);
}
Я получаю сообщение об ошибке из-за закомментированной строки. Я думаю, это потому, что я пытаюсь вернуть значение внутри цикла void. Как это исправить?
1 ответ
Метод setVoltage
имеет следующий прототип:
void setVoltage( uint16_t output, bool writeEEPROM );
Это означает, что он не возвращает значение.
Если вы ожидаете вернуть 1095, почему бы не написать:
volza = 1095;
setVoltage(volza, 1);
Serial.println(volza);
Некоторая справочная информация:
Предположим, вы хотите иметь в библиотеке метод getVoltage
, тогда это возможно (вы должны сделать копию файла в своем собственном проекте и добавить метод. Однако я не уверен, как легко получить значение из EEPROM. Если это не так просто, нужно выполнить некоторую работу по программированию. Другое решение — сохранить значение в памяти, но это означает, что некоторые дополнительные байты из скудного свободного SRAM. , теоретически содержимое уже может быть изменено (если другой MCU также будет иметь доступ к EEPROM).
Отлично, большое спасибо за разъяснение. «1095», который у меня есть, - это просто фиктивный пример, я планирую, чтобы аналоговый вход фактически регулировал это значение, поэтому мне было интересно прочитать его, назначив его переменной. Вы бы сказали, что я мог бы использовать AnalogRead вместо того, чтобы пытаться присвоить его переменной?, @Ali the Dazzling
Вероятно, однако, что на самом деле происходит, зависит от реализации setVoltage., @Michel Keijzers
- C++ против языка Arduino?
- ошибка: ожидаемое первичное выражение перед токеном ','
- Ввести идентификатор чипа ESP32 в строковую переменную (новичок в Arduino/C++)
- Передача функции-члена класса в качестве аргумента
- Улучшенное циклическое переключение цветов RGB.
- Какие есть другие IDE для Arduino?
- Несовместимые типы при назначении «uint8_t {aka unsigned char}» на «uint8_t [1] {aka unsigned char [1]}»
- Как преобразовать массив символов в строку в arduino?
Я знаю, что это потому, что я пытаюсь вернуть значение, находясь внутри цикла void
... откуда вы это знаете?, @jsotolaИзучая проблему, я столкнулся с несколькими потоками, в которых упоминается, что «void» означает, что у вас не может быть возвращаемого значения. Пожалуйста, поправьте меня, если я ошибаюсь, @Ali the Dazzling
это правильно, однако это будет значение, возвращаемое
loop()
... loop() никогда не завершается, поэтому он не возвращается ни к одному вызывающему объекту, @jsotolaПонимаю. Спасибо!, @Ali the Dazzling