#1 2017-03-27 19:58:42

Cookins
Учасник
Зареєстрований: 2017-03-27
Повідомлень: 2

Написание скетча... Вопрос по pin output

Добрый
Такой вопрос - у меня в скетче указано в

void setup() {
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);

И во время работы ардуино по умолчанию вкл реле.
Как сделать чтобы по умолчанию они были выключены?

Неактивний

#2 2017-03-27 20:31:20

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Написание скетча... Вопрос по pin output

pinMode(RELAY1, OUTPUT);  - это конфигурация пина на выход
digitalWrite(RELAY1, HIGHT) это запись лог.единицы в пин
У Вас же по умолчанию записан лог. ноль digitalWrite(RELAY1, LOW), поэтому реле включены.
А вообщем то потрудитесь прочесть хотя бы что здесь написано http://arduino.ua/ru/prog/  smile .

Неактивний

#3 2017-03-27 22:38:53

Cookins
Учасник
Зареєстрований: 2017-03-27
Повідомлень: 2

Re: Написание скетча... Вопрос по pin output

Nefreemen пише:

pinMode(RELAY1, OUTPUT);  - это конфигурация пина на выход
digitalWrite(RELAY1, HIGHT) это запись лог.единицы в пин
У Вас же по умолчанию записан лог. ноль digitalWrite(RELAY1, LOW), поэтому реле включены.
А вообщем то потрудитесь прочесть хотя бы что здесь написано http://arduino.ua/ru/prog/  smile .

Это понятно, что значит low, high.
Я спрашиваю, почему и как, а не что значит.
Почему по умолчанию на output идет high, а не low.
Прописать в loop сразу low не годится, потому как оно будет повторятся и надо чтобы реле иногда было включено постоянно, после какого события (само собой не идет речь после reset события).
У меня нигде не прописано digitalwrite(relay1, low) или иное на включение.

Остання редакція Cookins (2017-03-27 22:40:56)

Неактивний

#4 2017-03-28 10:41:53

alex_dol
Учасник
Зареєстрований: 2015-12-28
Повідомлень: 196

Re: Написание скетча... Вопрос по pin output

Все инициализация пишется в секции setup, выполняется эта секция один раз при старте, далее по кругу крутится секция loop.
Все умолчания которые вам не нравятся делаются в setup. Хорошим тоном считается принудительная инициализация всего, что вам надо, тогда вы не будете зависить от компилятора и чипа.

З,Ы, Потрудитесь прочитать хотя бы основы программирования.

Неактивний

#5 2017-03-28 13:44:00

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Написание скетча... Вопрос по pin output

От компилятора то что здесь может зависЕть?

Неактивний

#6 2017-03-28 15:28:30

alex_dol
Учасник
Зареєстрований: 2015-12-28
Повідомлень: 196

Re: Написание скетча... Вопрос по pin output

В данном случае, ничего.

Был у меня случай:
int16_t   A
int16_t   B
uint16_t  C

A = B - C

Не помню на какой версии IDE, но результат вычислялся неправильно.

Неактивний

#7 2017-03-28 17:29:49

Roman1984
Учасник
Зареєстрований: 2017-02-17
Повідомлень: 97

Re: Написание скетча... Вопрос по pin output

Вставлю 5 копеек. После строк

pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);

ваш контроллер настраивает указанные выводы на выход. При этом по умолчанию на каждом из выводов присутствует логический 0. Особенность вашего релейного шилда в том, что реле на нём включаются при подаче логического 0, а выключаются при подаче логической 1. Поэтому после этих строк реле включены. Чтобы их выключить необходимо дописать 2 строки для подачи логической 1.

digitalWrite(RELAY1, HIGH);
digitalWrite(RELAY2, HIGH);

Остання редакція Roman1984 (2017-03-28 17:30:38)

Неактивний

#8 2017-03-28 18:17:31

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: Написание скетча... Вопрос по pin output

Cookins пише:
Nefreemen пише:

pinMode(RELAY1, OUTPUT);  - это конфигурация пина на выход
digitalWrite(RELAY1, HIGHT) это запись лог.единицы в пин
У Вас же по умолчанию записан лог. ноль digitalWrite(RELAY1, LOW), поэтому реле включены.
А вообщем то потрудитесь прочесть хотя бы что здесь написано http://arduino.ua/ru/prog/  smile .

Это понятно, что значит low, high.
Я спрашиваю, почему и как, а не что значит.
Почему по умолчанию на output идет high, а не low.
Прописать в loop сразу low не годится, потому как оно будет повторятся и надо чтобы реле иногда было включено постоянно, после какого события (само собой не идет речь после reset события).
У меня нигде не прописано digitalwrite(relay1, low) или иное на включение.

Так вопрос тогда нужно задать корректно и код привести тоже корректней а то получилось привели код инициализации пинов а пишите о включении. Вам уже дали правильный ответ что шильд реле как и светодиод включается лог. 0. (поскольку в шилде стоит оптопара). Да и я написал что реле вкл. лог. 0, думал Вам это известно, собственно это несложно было проверить smile.

Неактивний

#9 2017-03-29 09:19:33

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Написание скетча... Вопрос по pin output

alex_dol пише:

В данном случае, ничего.

Был у меня случай:
int16_t   A
int16_t   B
uint16_t  C

A = B - C

Не помню на какой версии IDE, но результат вычислялся неправильно.

Ой, да ладно придумывать.

Неактивний

#10 2017-03-31 21:13:54

Roman1984
Учасник
Зареєстрований: 2017-02-17
Повідомлень: 97

Re: Написание скетча... Вопрос по pin output

Green пише:
alex_dol пише:

В данном случае, ничего.

Был у меня случай:
int16_t   A
int16_t   B
uint16_t  C

A = B - C

Не помню на какой версии IDE, но результат вычислялся неправильно.

Ой, да ладно придумывать.

Скорее всего одна из переменных А или В принимали в некоторых случаях отрицательные значения, а переменная С, объявленная как беззнаковая - выдавала билиберду. Вообще с типами данных надо быть аккуратнее, особенно если пишите программу для управления баллистическими ядерными ракетами :-)

Неактивний

#11 2017-04-01 10:55:12

Green
Учасник
Зареєстрований: 2015-11-08
Повідомлень: 593

Re: Написание скетча... Вопрос по pin output

Я бы ещё поверил, если бы это был ранний Codevision. Но GCC не может работать неправильно.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму