Официальный сайт компании Arduino по адресу arduino.cc
Проблема с простейшей программой.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 08/07/2019 - 20:59
Суть программы: регулировать яркость RGB ленты. Код представлен ниже.
#define PIN_PHOTO_SENSOR A4 #define LED_R 11 // Pin D11 --> красный #define LED_G 10 // Pin D10 --> зеленый #define LED_B 9 // Pin D9 --> синий void setup() { pinMode( LED_R, OUTPUT ); pinMode( LED_G, OUTPUT ); pinMode( LED_B, OUTPUT ); analogWrite (LED_R,255); analogWrite (LED_G,255); analogWrite (LED_B,255); Serial.begin(9600); int x; } void loop() { int val1 = analogRead(PIN_PHOTO_SENSOR); delay(1000); int val2 = analogRead(PIN_PHOTO_SENSOR); delay(1000); if(val2 < val1){ x=x-10; } if(val2 > val1){ x==x+10; } else{ delay(100); } green(x); } void red(int s){ analogWrite (LED_R,255-s); } void green(int s){ analogWrite (LED_G,255-s); } void blue(int s){ analogWrite (LED_B,255-s); }
Ошибка в строке №32, а именно: exit status 1 'x' was not declared in this scope.
Уже не знаю что делать, помогите пожалуйста.
А еще в строке 24 и 27.
Присмотритесь к строке 15.
не только в строке 32, но и 24 и 27. просто ИДЕ, когда показывает ошибки - идет "снизу".
А что. собственно, непонятно в сообщении? - переменная x незадекларирована? - так задеркларируйте
так я ее в 15 строке задеклорировал или я чтото не понимаю.
так я ее в 15 строке задеклорировал или я чтото не понимаю.
Чтобы понять, погуглите: "Область видимости переменных".
так я ее в 15 строке задеклорировал или я чтото не понимаю.
Прочитайте что-нибудь про "область видимости переменных" в языке Си. Вам компилятор пишет, что переменная "в этой области видимости незадекларирована". И он однако, прав.
Если я задекларирую переменную х в void loop(),то каждый новый цикл программы переменная х будет равна нулю, как сделать так чтобы значения х запоминались?
Если я задекларирую переменную х в void loop(),то каждый новый цикл программы переменная х будет равна нулю, как сделать так чтобы значения х запоминались?
или сделать ее глобальной, или static
Если я задекларирую переменную х в void loop(),то каждый новый цикл программы переменная х будет равна нулю, как сделать так чтобы значения х запоминались?
или сделать ее глобальной, или static
Добрый Вы. Нахрена ТС-у читать, когда и так всё скажут.(((
Все, разобрался, всем спасибо.
Все, разобрался, всем спасибо.
Главное - сам!
К строке 27 присмотрелся?
К строке 27 присмотрелся?
ну у тя и глазомер )))
Если я задекларирую переменную х в void loop(),то каждый новый цикл программы переменная х будет равна нулю
вовсе нет.
Если я задекларирую переменную х в void loop(),то каждый новый цикл программы переменная х будет равна нулю
вовсе нет.
у меня обозначена как static в процедуре, и точно, пока не скинешь в ноль, результат накапливался, для меня это когнитивный диссонанс, принял как данность )))
у меня обозначена как static в процедуре, и точно, пока не скинешь в ноль, результат накапливался, для меня это когнитивный диссонанс, принял как данность )))
убери статик - не будет диссонанаса...
Если я задекларирую переменную х в void loop(),то каждый новый цикл программы переменная х будет равна нулю
вовсе нет.
у меня обозначена как static в процедуре, и точно, пока не скинешь в ноль, результат накапливался, для меня это когнитивный диссонанс, принял как данность )))
дак почитай за отличие static переменных и автоматических, как у ТС, када он х в loop() обьявляет. Статик инициализируется 1 рас и хранит последнее значение при выходе из функции, а отоматические переменные создаются на стеке каждый раз при входе в функцию. Сомневаюсь, что лжывый С++ ее обнуляет при этом, т.е хранит она, какправило, всяку каку, что на стеке валялась ДО этого. Взрослые, еслишто, меня поправят.
отоматические переменные создаются на стеке каждый раз при входе в функцию. Сомневаюсь, что лжывый С++ ее обнуляет при этом, т.е хранит она, какправило, всяку каку
числовые типы должны иннициализироваться нулем каждый раз, насколько я помню
отоматические переменные создаются на стеке каждый раз при входе в функцию. Сомневаюсь, что лжывый С++ ее обнуляет при этом, т.е хранит она, какправило, всяку каку
числовые типы должны иннициализироваться нулем каждый раз, насколько я помню
глобальные - да, без вопросов. Они и кладуца в сегмент инициализированных данных. А локальные - раньше в них мусор валялся, счас мошт стандарты поменяли. ЕвгенийП точно знает. Но молчит.
Их компилятор может вообще на своё усмотрение проинициализировать ближайшим (по ходу выполнения) числом.
проверил, да, локальные обнуляюца. буду знать теперь.
Upd. я даже знаю почему. Если обьявить
int i; в функции, без инициализатора, неявно будет обьявлено
int i = int();
По крайней мере, очень на то похоже. :)