Почему в строчке "#define RF pinMode(OUTPUT,12);" выдаёт ошибку?
- Войдите на сайт для отправки комментариев
Сб, 18/11/2017 - 00:34
В строчке "#define RF pinMode(OUTPUT,12);" выдаёт ошибку "expected ')' before ';' token". Если вставляю ещё одну скобку[#define RF pinMode(OUTPUT,12));] выдает ошибку "invalid use of void expression"
весь текст приведите. ошибка где-то выше
Ну и как минимум pinMode(pin, mode) а не наоборот.
Автор код откуда-то криво скопипастил. pinmode это уже всё-таки другая строка, а после RF что-то протетрял. Ищите!
[quote=Penni]
Ну и как минимум pinMode(pin, mode) а не наоборот.
Действительно, вы правы: #define RF pinMode(12, OUTPUT)
и после #define ";" не ставится, вернее после скобок.
и после #define ";" не ставится, вернее после скобок.
Зависит "от", что называется. Можно и ставить, иногда - ставить будет ошибкой:
Не стал создавать новую тему, эта кажется про синтаксис в #define, и наиболее подходящая.
Подскажите пожалуйста как правильно записать замену команды HT.setLedNow(L_AKB); на две команды lcd.setCursor(3, 1); lcd.print("O"); . Нужно для отладки, чтобы для макета не паять вторую светодиодную матрицу. Сразу скажу, что ctrl+F плохой вариант, ибо у каждого светодиода L_??? своя позиция, а писать сразу для светодиодов и удалить в будущем идущий подрят блок #define более заманчивый способ.
Изначально пробовал #define HT.setLedNow(L_AKB); lcd.setCursor(3, 1); lcd.print("O"); Но даже когда сократил и убрал ; всё равно как-то об точку спотывается при компиляции и ошибку выдаёт, пока есть в коде HT :(
Если в #define убираю после HT точку, ошибок не выдаёт. Может можно как-то экранировать эту точку?
#include "ht16k33.h" HT16K33 HT; #define L_AKB 0 #define HT.setLedNow(L_AKB) lcd.print("O") void setup() { HT.begin(0x00); } void loop() { // HT.setLedNow(L_AKB); }C:\temp\oshibka__define_\oshibka__define_.ino: In function 'void setup()':
oshibka__define_:4: error: expected primary-expression before '.' token
#define HT.setLedNow(L_AKB) lcd.print("O")
^
C:\temp\oshibka__define_\oshibka__define_.ino:7:3: note: in expansion of macro 'HT'
HT.begin(0x00);
^
oshibka__define_:4: error: expected ';' before 'lcd'
#define HT.setLedNow(L_AKB) lcd.print("O")
^
C:\temp\oshibka__define_\oshibka__define_.ino:7:3: note: in expansion of macro 'HT'
HT.begin(0x00);
^
exit status 1
expected primary-expression before '.' token
P.S. Ок, паяю сижу новую матрицу...
У меня похожая ошибка в скачаной библиотеке. Выдает ошибку "was not declared in this scope OUTPUT" в 8-10 строке,
HT1632::HT1632(uint8_t data_pin, uint8_t write_clock_pin, uint8_t chip_select_pin) { this->data_pin = data_pin; this->write_clock_pin = write_clock_pin; this->chip_select_pin = chip_select_pin; } void HT1632::initialize() { start_char_column_index = -31; pinMode(chip_select_pin, OUTPUT); pinMode(write_clock_pin, OUTPUT); pinMode(data_pin, OUTPUT); digitalWrite(chip_select_pin, HIGH);а если их убрать , то в строке
'HIGH' was not declared in this scope