Как подать один сигнал одновременно на два выхода

Makcumayc
Offline
Зарегистрирован: 23.06.2019

Как подать один сигнал одновременно на два выхода?
Хочу сделать, чтобы определённая последовательность нулей и единиц подавалась на 9 пин и она же одновременно подавалась на 13, для индикации так сказать
Что-то не получается

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Пиши прямо в порт с маской.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Хотя, я думаю, реальная одновременность тебе нахрен не нужна.

sadman41
Offline
Зарегистрирован: 19.10.2016

Для индикации можно пин 9 завести на RX обдурины, если лень светодиод подключать.

b707
Онлайн
Зарегистрирован: 26.05.2017

Makcumayc пишет:

Как подать один сигнал одновременно на два выхода?
Хочу сделать, чтобы определённая последовательность нулей и единиц подавалась на 9 пин и она же одновременно подавалась на 13, для индикации так сказать
Что-то не получается

просто повесь на 9-й пин светодиод  и все

Makcumayc
Offline
Зарегистрирован: 23.06.2019

Нет, по 9 пину код уйдёт в другое устройство
Тут принципиальный момент, можно ли так сделать

sadman41
Offline
Зарегистрирован: 19.10.2016

Можно. #1

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

Makcumayc пишет:

Тут принципиальный момент, можно ли так сделать

Да, дейлайте на здоровье, кто ж Вам не даёт-то? Как пробовали, показывайте.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

На два выхода или на два входа?
Просто обычно сигналы подают на входы,
а снимают с выходов.

Makcumayc
Offline
Зарегистрирован: 23.06.2019

DetSimen пишет:

Пиши прямо в порт с маской.

Можно чуть подробнее? В этом деле новичок

Makcumayc
Offline
Зарегистрирован: 23.06.2019

trembo пишет:
На два выхода или на два входа? Просто обычно сигналы подают на входы, а снимают с выходов.

На два выхода. Значит снять с двух выходов, выразился неправильно

sadman41
Offline
Зарегистрирован: 19.10.2016

А какая задержка допустима? 0 фемтосекунд или больше?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Makcumayc пишет:

Можно чуть подробнее? В этом деле новичок

А от тебя можно чуть подробнее?

Покажи как ты пытался сделать и что у тебя не получилось.

b707
Онлайн
Зарегистрирован: 26.05.2017

Makcumayc пишет:

Нет, по 9 пину код уйдёт в другое устройство
Тут принципиальный момент, можно ли так сделать

И что? можно подумать, что паралелльно подключенный светодиод помешает коду "уйти в другое устройство"...

b707
Онлайн
Зарегистрирован: 26.05.2017

Makcumayc пишет:

Как подать один сигнал одновременно на два выхода?

digitalWrite(9, HIGH);
digitalWrite(13, HIGH);

не получается?

 

Makcumayc
Offline
Зарегистрирован: 23.06.2019

Так а зачем усложнять, если светодиод есть сразу на плате?
Да и в принципе в дальнейшем это пригодится, думаю

sadman41
Offline
Зарегистрирован: 19.10.2016

Можно подумать, что два шоттки, подключенных к одному выходу как-то помешают пустить сигналы в два устройства без опасения спалить оба.

Makcumayc
Offline
Зарегистрирован: 23.06.2019

Ворота пишет:

Makcumayc пишет:

Можно чуть подробнее? В этом деле новичок

А от тебя можно чуть подробнее?

Покажи как ты пытался сделать и что у тебя не получилось.

int led=13;  
int kod=9;   
void setup()
 {pinMode(led,OUTPUT);
  pinMode(kod,OUTPUT);
  digitalWrite(kod,HIGH);
  delay(2000);
  digitalWrite(kod,LOW);
  delay(2000);
  digitalWrite(kod,HIGH);
}
void loop()
 {int reads = digitalRead(kod);
  digitalWrite(led,reads);
}
Пробовал так. Не считывает с одного пина на другой, просто в единицу устанавливает
b707
Онлайн
Зарегистрирован: 26.05.2017

Makcumayc пишет:

Пробовал так. Не считывает с одного пина на другой, просто в единицу устанавливает

и не будет, потому что пин rjl обьявлен как выход.

Обьясните, что мешает рядом с digitalWrite(kod,HIGH); написать строчку digitalWrite(led,HIGH);

Makcumayc
Offline
Зарегистрирован: 23.06.2019

b707 пишет:

Makcumayc пишет:

Как подать один сигнал одновременно на два выхода?

digitalWrite(9, HIGH);
digitalWrite(13, HIGH);

не получается?

 

Так конечно получится, только у меня код будет зависеть от нажатия на кнопки, потому нужно чтобы ардуино именно считывал информацию с 9 пина и индицировал на 13

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Во-первых, вставляй правильно код (больше такое читать не буду).

Во-вторых, всё она у тебя нормально считывает. Просто там на пине ни хрена не меняется, вот она тебе HIGH и показывает.

(для справки. loop начинает исполняться ПОСЛЕ того, как setup ПОЛНОСТЬЮ выполнится).

sadman41
Offline
Зарегистрирован: 19.10.2016

Какая-то чушь и компот, а не код. С первопостом очень мало общего.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

b707 пишет:

и не будет, потому что пин rjl обьявлен как выход.

Да, будет, выходы также читаются.

Всё у него считывается и нормально работает. Там сидит 1 и никогда не меняется. С чего её меняться-то?

Makcumayc
Offline
Зарегистрирован: 23.06.2019

За вставку извиняюсь. А вставлять я в loop пробовал, тоже самое. И меняется же на пине сигнал каждые 2 секунды, просто ограничил одним циклом

b707
Онлайн
Зарегистрирован: 26.05.2017

Ворота пишет:

Да, будет, выходы также читаются.

да, промахнулся

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Считывает и правильно записывает!

П.С. пока читал опередили

b707
Онлайн
Зарегистрирован: 26.05.2017

Makcumayc пишет:

За вставку извиняюсь. А вставлять я в loop пробовал, тоже самое. И меняется же на пине сигнал каждые 2 секунды, просто ограничил одним циклом

максимус, либо ты вставляешь именно тот код, который не работает. либо идешь лесом.

Коллеги. извините за прямоту

Makcumayc
Offline
Зарегистрирован: 23.06.2019

Ворота пишет:

b707 пишет:

и не будет, потому что пин rjl обьявлен как выход.

Да, будет, выходы также читаются.

Всё у него считывается и нормально работает. Там сидит 1 и никогда не меняется. С чего её меняться-то?


Так почему не меняется то?

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

sadman41 пишет:

Какая-то чушь и компот, а не код. С первопостом очень мало общего.

Это "разводка безопасного кабеля".

anatoli_nik
Offline
Зарегистрирован: 17.01.2019

Почитай что такое delay и как он работает.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Makcumayc пишет:

Так почему не меняется то?

Мужик, включай мозги. Я тебе что написал ...

Ворота пишет:

(для справки. loop начинает исполняться ПОСЛЕ того, как setup ПОЛНОСТЬЮ выполнится).

Ну и смотри. Твой setup всё сделал и ЗАКОНЧИЛСЯ. После этого запускается loop. 

А вот теперь ты мне скажи, с какого хера ему меняться? Кто его меняет? Кто меняет состояние исходного пина?

Makcumayc
Offline
Зарегистрирован: 23.06.2019

Значит я что-тот не так понимаю. LOW — это же 0. Вот он и меняется с HIGH на LOW, с 1 на 0, нет?

b707
Онлайн
Зарегистрирован: 26.05.2017

Ворорта - он пишет "А вставлять я в loop пробовал, тоже самое."

ИМХО, пока верный код не выложит - обсуждать смысла нет

b707
Онлайн
Зарегистрирован: 26.05.2017

Makcumayc пишет:

Значит я что-тот не так понимаю. LOW — это же 0. Вот он и меняется с HIGH на LOW, с 1 на 0, нет?

всем веселой пятницы....

Makcumayc
Offline
Зарегистрирован: 23.06.2019

b707 пишет:

Makcumayc пишет:

За вставку извиняюсь. А вставлять я в loop пробовал, тоже самое. И меняется же на пине сигнал каждые 2 секунды, просто ограничил одним циклом

максимус, либо ты вставляешь именно тот код, который не работает. либо идешь лесом.

Коллеги. извините за прямоту

Вот сам код, он слишком громоздкий. Вот хочу, чтобы он одновременно эти LOW и HIGH подавал на 13 и 9 пин

 

int led=9;
int ind=13;
void setup() {
}
void loop(){
  
int reads = digitalRead(led);
digitalWrite(ind,reads);
  
pinMode(led, OUTPUT); 
digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led, LOW);
delay(120);
digitalWrite(led, HIGH);
delay(30);  
digitalWrite(led, LOW);
delay(40);
digitalWrite(led, HIGH);
delay(40);
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(50);
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(40);
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(70); 
digitalWrite(led, LOW);
delay(40);
digitalWrite(led, HIGH);
delay(60);
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(30);  
digitalWrite(led, LOW);
delay(120);
digitalWrite(led, HIGH);
delay(30); 
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(40);
digitalWrite(led, LOW);
delay(40);
digitalWrite(led, HIGH);
delay(50);  
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(40);
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(70); 
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(60);
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(50); 
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(40);
digitalWrite(led, LOW);
delay(40);
digitalWrite(led, HIGH);
delay(50); 
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(20);
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(20);
digitalWrite(led, LOW);
delay(40);
digitalWrite(led, HIGH);
delay(30); 
digitalWrite(led, LOW);
delay(40);
digitalWrite(led, HIGH);
delay(60);
digitalWrite(led, LOW);
delay(20);
digitalWrite(led, HIGH);
delay(30); 
}

 

 

Makcumayc
Offline
Зарегистрирован: 23.06.2019

b707 пишет:

Makcumayc пишет:

Значит я что-тот не так понимаю. LOW — это же 0. Вот он и меняется с HIGH на LOW, с 1 на 0, нет?

всем веселой пятницы....

Так, хватит издеваться, я же сказал, что новичок. Был бы благодарен, если бы объяснили, в чём не прав

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Makcumayc пишет:

Значит я что-тот не так понимаю. 

Это точно.

Makcumayc пишет:

LOW — это же 0. Вот он и меняется с HIGH на LOW, с 1 на 0, нет?

В твоём коде, во время исполнения  loop НИХЕРА не меняется. setup ЗАКОНЧИЛСЯ до начала исполнения loop. Ты понимаешь смысл слова "закончился"? 

Кто, где и когда менятеся? Кто его меняет? Я по-моему это уже в третий раз пишу. 

Если ты говоришь не об этом коде, что выложил, а о каком-то другом, так выкладывай его. Только выкладывай правильно. Ещё раз выложишь так, как тот - тебя просто пошлют НА (я первый это сделаю).

 

 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Makcumayc пишет:

Вот сам код, он слишком громоздкий. Вот хочу, чтобы он одновременно эти LOW и HIGH подавал на 13 и 9 пин

Т.е. ты хочешь сказать, что то, что ты выкладывал раньше было фуфлом для лохов? И я потратил полчаса на обсуждение этого фуфла?

Кто над кем издевается?

Про этот код.

В строке №7 читается всегда HIGH, установленный в строке 95. Всё! Чего другого ты ожидал?

И, кстати, кто будет конфигурировать пин ind как OUTPUT?

Makcumayc
Offline
Зарегистрирован: 23.06.2019

Ворота пишет:

Makcumayc пишет:

Вот сам код, он слишком громоздкий. Вот хочу, чтобы он одновременно эти LOW и HIGH подавал на 13 и 9 пин

В строке №7 читается всегда HIGH, установленный в строке 95. Всё!

Чего другого ты ожидал?

Да, ты прав, всегда висит последнее состояние, но почему? Ожидал я, что при смене  HIGH на LOW на 9 пине, 13 пин будет так же менять своё состояние. Вот и вопрос, почему так не происходит, и как это осуществить?

А насчёт первого кода извиняюсь. Накидал код, чтобы попроще выглядел, а получилось только хуже

bwn
Offline
Зарегистрирован: 25.08.2014

Makcumayc пишет:

Да, ты прав, всегда висит последнее состояние, но почему? Ожидал я, что при смене  HIGH на LOW на 9 пине, 13 пин будет так же менять своё состояние. Вот и вопрос, почему так не происходит, и как это осуществить?

А насчёт первого кода извиняюсь. Накидал код, чтобы попроще выглядел, а получилось только хуже

Оно и есть, как ожидали. А программа, она, последовательно выполняется.

P/S Хотите как по своей задумке, 7-8 строчки после каждого digitalWrite(); вбейте.

b707
Онлайн
Зарегистрирован: 26.05.2017

Makcumayc пишет:

Вот и вопрос, почему так не происходит, и как это осуществить?

осуществить просто - вставить чтнение состояния пина после КАЖДОГО изменения . Вот сколько у тебя loop() digitakWrite(), столько надо вставить digitalRead()

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Makcumayc пишет:

Ожидал я, что при смене  HIGH на LOW на 9 пине, 13 пин будет так же менять своё состояние.

Вот и вопрос, почему так не происходит

С какого перепугу это должно происходить? Вот просто скажи, с какого? В строке №7 ты читаешь пин led и в строке №8 выводишь значение на пин ind. Ну? А потом в строке, скажем, №13 меняешь состояние пина led. И что? Строки 7 и 8 должны вкаким-то олшебным образом тут же выполниться? Или как? А если они не выполняются, то с какого перепугу пин ind изменится? С чего ты ждал-то, что там что-то меняться будет?

Makcumayc пишет:

как это осуществить?

Знаешь, я даже пытаться не буду объяснять тебе как это сделать, например, через прерывания на изменение пина - это не твоя тема (пока). С твоим нынешним уровнем знаний это не делается никак. Хочешь осуществить - соедини проводочком. Только смотри чтобы они не были оба в OUTPUT, а то дым пойдёт.

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

Чёта уже вторая пятничная тема. То писатель таймеров пожаловал, теперь вот синхронизатор пинов.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Я щас ржать буду в голос. 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

А я лучше пойду накачу за здоровье всех альтернативно-одарённых.

Makcumayc
Offline
Зарегистрирован: 23.06.2019

Ладно, я понял, спасибо

b707
Онлайн
Зарегистрирован: 26.05.2017

Makcumayc пишет:

Ладно, я понял, спасибо

точно понял? - обычно так говорят когда непонятно нифига...

b707
Онлайн
Зарегистрирован: 26.05.2017

Makcumayc

дарю код, который выводит твою последовательность сразу на 2 пина. А еще он в 5 раз короче. Учись пользоваться массивами, такие "портянки" из 100 одинаковых строк - писать просто стыдно.

int led=9;
int ind=13;
int delays[] = { 1000,120,30,40,40,20,50,40,20,20,70,40,60,20,30,120,30,20,40,40,
50,20,70,20,60,20,50,20,40,40,50,20,20,20,20,40,50,40,60,20,30,0};
int i =0;
void setup() {
pinMode(led, OUTPUT);
pinMode(ind, OUTPUT);
}
void loop(){
  
while (delays[i]) {
 digitalWrite(led, !digitalRead(led));
 digitalWrite(ind, !digitalRead(ind));
 delay(delays[i]);
 i++;}
i =0;
}