Передача переменной в функцию
У меня есть следующий код для включения или выключения светодиода. Я хотел бы изменить функцию, чтобы она также передавала PIN. Чем следует заменить X?
#define BIN_LED 2
#define PIN_LED 3
void led(uint8_t x, bool on) {
digitalWrite(x, on ? LOW : HIGH);
}
void setup() {}
void loop() {
led(BIN_LED, true);
delay(1000);
led(BIN_LED, false);
delay(1000);
}
@motion channel, 👍-2
Обсуждение1 ответ
Лучший ответ:
▲ 3
Ты сделал это. Все, что осталось,-это указать тип данных " X " в объявлении функции, как вы уже сделали для "on". "uint8_t" было бы разумным выбором.
,
@JRobert
это не сработало. Я обновил вопрос с вашим предложением., @motion channel
@motionchannel Это не сработало, потому что вы не настроили вывод в качестве выхода. Ответ правильный, код компилируется и правильно передает контакт. Поместите pinMode (BIN_LED, OUTPUT);
в функцию setup ()
, чтобы ваш код загорелся светодиодом. Вы можете посмотреть на пример кода из Arduino IDE, чтобы увидеть, как это работает., @StarCat
Смотрите также:
- C++ против языка Arduino?
- avrdude ser_open() can't set com-state
- Как читать и записывать EEPROM в ESP8266
- Float печатается только 2 десятичных знака после запятой
- устаревшее преобразование из строковой константы в 'char*'
- Запрограммировать ATMega328P и использовать его без платы Arduino.
- Разница между print() и println()
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
подумайте ... что такое X в
digitalWrite(X, on)
?, @jsotolaFWIW, подумай *почему* ты тоже это делаешь. Если вам нужно более короткое имя функции, подумайте о том, чтобы просто сгладить fn. Если вам нужен более "значимый" fn, я не уверен, что это достигнет этого., @Dave Newton