Всем доброго дня! Имею среду разработки Arduino 1.6.10. Копирую исходный код из учебника: int val ; int ledpin = 13 ; void setup () { Serial.begin (9600) ; ROBSTORE.RU pinMode (ledpin, OUTPUT) ; } void loop () { val = Serial.read () ; if (val == 'R') { digitalWrite (ledpin, HIGH) ; delay (500); digitalWrite (ledpin, LOW) ; delay (500); Serial.println ("Hello World!") ; } } и вставляю в среду разработки, компиляция проходит с ошибкой(результат компиляции), хотя если я набиваю тот же самый код в ручную, компиляция завершается успешно. Пробовал Arduino 1.6.9 версии - не помогло. Подскажите, что я делаю не так? ))), или как это побороть? ------------------------------------------------------------------------------------------------------------------ Arduino: 1.6.10 Hourly Build 2016/07/01 03:33 (Windows 7), Плата:"Arduino/Genuino Uno" sketch_jul18a:1: error: expected initializer before '?' token int val ? ^ C:\Users\ViT\AppData\Local\Temp\arduino_modified_sketch_351708\sketch_jul18a.ino: In function 'void loop()': sketch_jul18a:9: error: 'val' was not declared in this scope val = Serial.read () ? ^ sketch_jul18a:10: error: expected primary-expression before 'if' if (val == 'R') { ^ sketch_jul18a:10: error: expected ':' before 'if' sketch_jul18a:10: error: expected primary-expression before 'if' sketch_jul18a:10: error: expected ';' before 'if' exit status 1 expected initializer before '?' token Этот отчёт будет иметь больше информации с включенной опцией Файл -> Настройки -> "Показать подробный вывод во время компиляции" --------------------------------------------------------------------------------------------------------------------------------
Может я не прав но как вы запихиваете переменной int строковое значение из UART? И что за скрытая, ненавязчивая реклама сайта в скетче ?
Попробуй так.. И в сериал посылай 1. Код (C++): int val = 0 ; int ledpin = 13 ; void setup () { Serial.begin (9600) ; pinMode (ledpin, OUTPUT) ; Serial.println ("Start!") ; } void loop () { val = Serial.read () ; if (val == 1) { digitalWrite (ledpin, HIGH) ; delay (500); digitalWrite (ledpin, LOW) ; val=0; delay (500); } }
@_ViT_, сайт, откуда вы скопировали код, отдает неправильную кодировку символов (UTF8 вместо ASCII). Вставьте скопированный код в текстовый редактор, например Notepad++, и увидите что символ "точка с запятой" превратится в вопросительный знак (т.е. недопустимый символ для кодовой таблицы ASCII)
Securbond, ваш код так же не компилируется, если его скопировать в среду разработки через буфер обмена, а если напечатать в ручную то все в порядке и с вашим кодом и с моим. ZAZ-965, странная ситуация, вставил в Notepad++, вид кода идентичен. Далее, печатаю код в ручную в среде разработки (КОМПИЛИРУЕТСЯ УСПЕШНО), копирую в буфер обмена и вставляю во вновь созданную вкладку среды разработки, компиляция завершается неудачей, хотя визуально код в обоих вкладках идентичен. Данные операции пробовал на разных операционных системах (3-х компьютерах) Windows 10 Pro, Win 7 Ultimate x32, Win 7 Ultimate x64, результат одинаковый. Складывается впечатление что среда разработки не воспринимает адекватно буфер обмена операционной системы. Это особенность данной среды разработки? или дело в моих кривых руках?))) подскажите плз )))
@_ViT_, в Notepad++ переключите кодировку на ANSI (у меня она наверное по умолчанию) Вот этот код при просмотре в Far, точка с запятой закодирована двумя байтами CD BE (кодировка UTF8) В таблице ACSII код этого символа 3B Поменяйте в редакторе Arduino все точки с запятой и код будет успешно скомпилирован Картинка после замены символа "точка с запятой"
Странное что то у человека с буфером обмена. Уж с амперки коды всегда без проблем в IDE копировались. Без всяких заморочек.
Редактор Arduino IDE поддерживает отображение UTF8, но AVR-GСС ожидает кодировку ASCII. У Амперки кодировка страницы тоже UTF8 (и это правильно), поэтому неверных символов не видно. Если переключить на Win1251, то получим рис1. На тот же символ ругнулась Arduino рис2 Так что буфер не при чем, что положено то и получено. А Амперка - хороший форум и люди здесь добрые