код в void loop исполняется снизу вверх

AmorS
Offline
Зарегистрирован: 14.03.2016

Добрый день.

Первый раз подключил Arduino Mega2560.

Сразу столкнулся с особенностью: код в void loop исполняется снизу вверх, т.е первым выполняется delay(1000), а последним digitalWrite(shagAPin,LOW). Почему так? Может быть нужно как то настраивать IDE. Или это особенность моей МЕГИ.

Программный код вот такой:

int shagAPin = 2;
int shagCPin = 8;

void setup() 
{
 pinMode(shagAPin,OUTPUT);
 pinMode(3,OUTPUT);
 pinMode(shagCPin,OUTPUT);
 pinMode(5,OUTPUT);
}

void loop() 
{ 
 digitalWrite(shagAPin,LOW);
 digitalWrite(shagCPin,HIGH); 
  delay(500);
 digitalWrite(shagCPin,LOW);
 digitalWrite(shagAPin,HIGH);
  delay(1000);
}

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Добавь Serial.print и убедись, что пишешь бред.

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

AmorS пишет:

Сразу столкнулся с особенностью: код в void loop исполняется снизу вверх

безобразие - переверни монитор и всё заработает как нужно

Logik
Offline
Зарегистрирован: 05.08.2014

О сколько нам открітий чудных, готовит новичек AmorS!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

AmorS пишет:

Сразу столкнулся с особенностью: код в void loop исполняется снизу вверх, т.е первым выполняется delay(1000), а последним digitalWrite(shagAPin,LOW). Почему так? Может быть нужно как то настраивать IDE. Или это особенность моей МЕГИ.

Это особенность Вашего понимания процесса :)

Тут Вам правильно сказали - поставьте печать в Serial и убедитесь.

Вы как определяли последовательность исполнения? П свечению светодиодов? Так они у Вас поди "наоборот" подключениы. В смысле, что подключать их можно как угодно, и то и другое правильно, но Вы ожидаете не того, что на самом деле происходит при Вашем подключении.

Если нужно чёткое объяснение процесса, то 1) дайте схему включения диодов и 2) напишите что и в какой последовательности у Вас светится (хотя, последнее я и сам Вам могу написать, если схему включения дадите).

P.S. А вообще, спасибо, настроение с утра на весь день подняли - давно так не смеялся :)

lex2k
Offline
Зарегистрирован: 17.12.2015

 
13 {
14  digitalWrite(shagAPin,LOW);
15  digitalWrite(shagCPin,HIGH);
16   delay(500);
17  digitalWrite(shagCPin,LOW);
18  digitalWrite(shagAPin,HIGH);
19   delay(1000);
20 }

void loop()

 

попробуй вот так скомпилировать

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

AmorS
Offline
Зарегистрирован: 14.03.2016

Да я сам понимаю что бред!

Но, помогите разобраться по порядку.

отбросим пока void loop...

Дело обстоит так:

Подключаю к МЕГЕ 4-х релейный модуль

5v (Мега) - VCC (релейный модуль)

GND (Мега) - GND (релейный модуль)

pin2 (Мега) - IN1 (релейный модуль)

pin8 (Мега) - IN2 (релейный модуль)

Загружаю в контроллер только вот это:

int shagAPin = 2;
int shagCPin = 8;

void setup() 
{
 pinMode(shagAPin,OUTPUT);
 pinMode(shagCPin,OUTPUT);
 }

void loop() 
{ 
}

И срабатывают реле 1 и 2

Почему? Ведь на пинах 2 и 8 еще ничего нет.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Некоторые модули реле включаются низким уровнем LOW, а не высоким HIGH. В ардуине если принудительно не подать высокий уровень (HIGH), то пины по-умолчанию будут с низким уровнем. Вот реле с самого начала и будет включено. А выключаться будет при HIGH.

AmorS
Offline
Зарегистрирован: 14.03.2016

Хм..

Да, действительно - включается низким уровнем LOW. С роду бы не подумал.

Все. Разобрался.

Спасибо!

AmorS
Offline
Зарегистрирован: 14.03.2016

kisoft пишет:

"А кина не будет..." 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

AmorS пишет:

kisoft пишет:

"А кина не будет..." 

Жаль, что так быстро, впрочем еще не вечер :)

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

AmorS пишет:

Хм..

Да, действительно - включается низким уровнем LOW. С роду бы не подумал.

Все. Разобрался.

Спасибо!

А если бы сразу выложил схему подкоючения, как просили, то гораздо меньше времени пудрил бы мозги и себе и людям. Что за манера не давать информации (и даже игнорировать просьбы о ней) и при это рассчитывать на какую-то помощь?

lex2k
Offline
Зарегистрирован: 17.12.2015

AmorS пишет:

Хм..

Да, действительно - включается низким уровнем LOW. С роду бы не подумал.

Все. Разобрался.

Спасибо!

к стате поподаюся которые включаются высоким.....имей в виду на будующие

 

AmorS
Offline
Зарегистрирован: 14.03.2016

ЕвгенийП пишет:

А если бы сразу выложил схему подкоючения, как просили, то гораздо меньше времени пудрил бы мозги и себе и людям. Что за манера не давать информации (и даже игнорировать просьбы о ней) и при это рассчитывать на какую-то помощь?

Свое первое Ардуино распаковал только вчера. Заказывал в Китае. Поэтому ожидал всякое.

Прошу прощения за моветон.

Radjah
Offline
Зарегистрирован: 06.08.2014

lex2k пишет:

AmorS пишет:

Хм..

Да, действительно - включается низким уровнем LOW. С роду бы не подумал.

Все. Разобрался.

Спасибо!

к стате поподаюся которые включаются высоким.....имей в виду на будующие

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

AmorS пишет:

Свое первое Ардуино распаковал только вчера. Заказывал в Китае. Поэтому ожидал всякое.

Прошу прощения за моветон.

Да, это-то нормально. Просто, когда задаёшь вопрос, надо давать всю информацию и уж тем более, когда о ней попросили. Не заставляйте людеё гадать на кофейной гуще. Это не им, а Вам нужно.

keefa
Offline
Зарегистрирован: 19.06.2015

ЕвгенийП пишет:

Да, это-то нормально. Просто, когда задаёшь вопрос, надо давать всю информацию и уж тем более, когда о ней попросили. Не заставляйте людеё гадать на кофейной гуще. Это не им, а Вам нужно.

А я еще бы посоветовал, перед тем как задавать вопрос -  поискать, почитать, попробовать решить проблему самому. Так интереснее будет и попути можно многому научиться. а так, только вчера купил ардуино, еще ничего не сделал, а уже вопросы на форум сыпать. ИМХО.