Подскажиет как сделать, чтобы правильно работала схема?

Vataharla
Offline
Зарегистрирован: 30.07.2017

Здравствуйте, подскажите как написать скетч?

Нужно подать внешнее питание (в размере 5 вольт постоянного тока) на два пина, на каждый из пинов  ардуино через резистор на 10кОМ допустим к цифровому пину 2 и к пину 4, "плюс" подать на вход а "минус" на GND ардуино. При этом когда на оба пина подается пять вольт на выходе 9 должен быть шим сигнал но не сплошным тоном.

Первое условие, если пропадают 5 вольт на пине №2, то подать "еденицу" на выход 7 и одновременно на выход 9 подать шим сигнал.

Второе условие, если пропадают 5 вольт на пине №4, то подать "еденицу" на выход 8 и одновременно на выход 9 подать шим сигнал.

Третье условие, если пропадают 5 вольт на обоих пинах №2 и №4

void setup() {
  pinMode(2, INPUT); // вход ардуино 2 на который нужно подать, 5 вольт + резистор на 10 кОм
  pinMode(4, INPUT); // вход ардуино 4 на который нужно подать, 5 вольт + резистор на 10 кОм
  pinMode(7, OUTPUT); // сюда подключен речевой информатор №1
  pinMode(8, OUTPUT); // сюда подключен речевой информатор №2
  pinMode(9, OUTPUT); // сюда подключен усилитель + динамик
  Serial.begin(9600); // открывает ком порт
}
void loop(){
  boolean p1 = !digitalRead(2); // подается "еденица" на вход ардуино 2
  boolean p2 = !digitalRead(4); // подается "еденица" на вход ардуино 4
  if (p1 == 1) digitalWrite(7, 1), tone(9, 500); // если на входе ардуино 2 "еденица", то на выходе ардуино 7 будет "ноль" (и сплошной тон, а нужна какая либо мелодия)
  else digitalWrite(7, 0); // если на входе ардуино 2 "ноль", то на выходе ардуино 7 будет "ноль"
  if (p2 == 1) digitalWrite(8, 1), tone(9, 500); // если на входе ардуино 4 "еденица", то на выходе ардуино 8 будет "ноль" (и сплошной тон, а нужна какая либо мелодия)
  else digitalWrite(8, 0); // если на входе ардуино 4 "ноль", то на выходе ардуино 8 будет "ноль"
  Serial.print("p1: "); Serial.print(p1); // выводит в монитор ком порта текущее состояние входа ардуино 2 
  Serial.print(", p2: "); Serial.println(p2); // выводит в монитор ком порта текущее состояние входа ардуино 4

 

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

Vataharla пишет:

Здравствуйте, подскажите как написать скетч?

пальцами тыкаешь в нужные клавиши клавиатуры.

Vataharla
Offline
Зарегистрирован: 30.07.2017

Клапауций 112 пишет:

Vataharla пишет:

Здравствуйте, подскажите как написать скетч?

пальцами тыкаешь в нужные клавиши клавиатуры.

тыкаю так 

tone(9, 1000), delay(100), tone(9, 500), delay(100);

вот после этого

 if (p1 == 1) digitalWrite(7, 1),

а оно ругается зараза, как это работает?

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

Vataharla пишет:

а оно ругается зараза

Читать эту ругань пробовали?

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

Vataharla пишет:

тыкаю так 

tone(9, 1000), delay(100), tone(9, 500), delay(100);

вот после этого

 if (p1 == 1) digitalWrite(7, 1),

а оно ругается зараза, как это работает?

Заведите серво-машинку, чтобы она за такое тыкание по пальцам линейкой  била.

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

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

Jeka_M пишет:

Читать эту ругань пробовали?

Не читатель!

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

Vataharla, ошибки в строках 12 - 15. Почитайте, как правильно использовать оператор if и else

А ещё не хватает закрывающей фигурной скобки для функции loop().

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

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

Vataharla
Offline
Зарегистрирован: 30.07.2017
с этим вроде бы разобрался, вроде работает, а вот как теперь сделать, чтобы выдавался шим сигнал на 9 пин, когда у меня на обоих входах (2 и 3) будет "еденица", если у меня:
if (p1 == 1) {digitalWrite(7, 1);// если на входе ардуино 2 "ноль", то на выходе ардуино 7 будет "еденица"
tone(9, 1000);
delay(100);
tone(9, 500);
delay(100);}
else {digitalWrite(7, 0); // если на входе ардуино 2 "еденица", то на выходе ардуино 7 будет "ноль"
noTone(9);}
if (p2 == 1) {digitalWrite(8, 1); // если на входе ардуино 4 "ноль", то на выходе ардуино 8 будет "еденица"
tone(9, 1000);
delay(100);
tone(9, 500);
delay(100);}
else {digitalWrite(8, 0); // если на входе ардуино 4 "еденица", то на выходе ардуино 8 будет "ноль"
noTone(9);}

можно ли вообще так сделать, где почитать что то внятное по функции tone?

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Vataharla пишет:

где почитать что то внятное по функции tone?

Почитать можно здесь: https://www.arduino.cc/en/Reference/Tone

Но, думаю, Вам в первую очередь нужно совсем не это.

Vataharla
Offline
Зарегистрирован: 30.07.2017

andriano пишет:

Vataharla пишет:

где почитать что то внятное по функции tone?

Почитать можно здесь: https://www.arduino.cc/en/Reference/Tone

Но, думаю, Вам в первую очередь нужно совсем не это.

а что мне нужно, подскажите пожалуйста?

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

Vataharla пишет:

а вот как теперь сделать, чтобы выдавался шим сигнал на 9 пин, когда у меня на обоих входах (2 и 3) будет "еденица"

Применить логический оператор И (&&) в условии:

if (pin2 == 1 && pin3 == 1) 
{
  // что-то сделать...
}

P.S. Тут найдёте много полезного -  http://arduino.ru/Reference

Vataharla пишет:

на выходе 9 должен быть шим сигнал но не сплошным тоном

Это как?

Функция tone() выдаёт ШИМ с постоянной скважностью 50% и разной частотой.
Функция analogWrite() выдаёт ШИМ с постоянной частотой 490 Гц и разной скважностью.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Vataharla пишет:

а что мне нужно, подскажите пожалуйста?

Думаю, учебник по программированию.

Vataharla
Offline
Зарегистрирован: 30.07.2017

Jeka_M пишет:

Vataharla пишет:

а вот как теперь сделать, чтобы выдавался шим сигнал на 9 пин, когда у меня на обоих входах (2 и 3) будет "еденица"

Применить логический оператор И (&&) в условии:

if (p1 == 1 && p2 == 1) 
{
  // что-то сделать...
}

мне как бы это не совсем подходит, так как мне нужно чтобы, когда у меня на выходе 7 и 8 будут "нули) заткнуть динамик, который выдает шим сигнал на 9 пин по условию
  else {digitalWrite(7, 0); 
  noTone(9);}

else {digitalWrite(8, 0);

  noTone(9);}

но и в тоже время когда "нули" на выходах 7 и 8 выдавался шим сигнал на 9 пин типа звук контролирующий, что схема работает, а когда появлялась "еденица" на выходе 7 либо 8 либо на обоих сразу выдавать типа звуковой сигнал тревоги, на 9 пин, а когда на 7 и 8 пине "нули" опять выдавать звуковой сигнал контроля 

P.S. Тут найдёте много полезного -  http://arduino.ru/Reference

Vataharla пишет:

на выходе 9 должен быть шим сигнал но не сплошным тоном

Это как?

Функция tone() выдаёт ШИМ с постоянной скважностью 50% и разной частотой.

Функция analogWrite() выдаёт ШИМ с посточнной частотой около 490 Гц и разной скважностью.

ардуино, так так компилируется и работает(но выдает сплошной только один звуковой сигнал с частотой 500 герц):

if (p1 == 1) digitalWrite(7, 1), tone(9, 500); так работает и не ругается,

а если так if (p1 == 1) digitalWrite(7, 1), tone(9, 500), delay(100), tone(9, 1000), delay(100); не компилируется вообще, но тут скобки фигурные нужны, это я понял.

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

andriano пишет:

Думаю, учебник по программированию.

не, это я уже предлагал, даже со ссылкой, ТС это не надо :)

Vataharla
Offline
Зарегистрирован: 30.07.2017

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

andriano пишет:

Думаю, учебник по программированию.

не, это я уже предлагал, даже со ссылкой, ТС это не надо :)

почему не надо, я про оператор if почитал, скобки фигурные добавил, заработало, а вот про что теперь читать, все подряд ведь не будешь читать?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Vataharla, должен Вас разочаровать: учебник нужно читать именно от корки до корки и, вероятно, не один раз.

Vataharla
Offline
Зарегистрирован: 30.07.2017

andriano пишет:

Vataharla, должен Вас разочаровать: учебник нужно читать именно от корки до корки и, вероятно, не один раз.

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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

"Это что, я должен полгода учиться, а затем еще сдавать 2 экзамена, чтобы один раз прокатиться на автомобиле?"

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

Vataharla пишет:

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

я же говорил, что проше пристрелить, что бы не мучился.

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

Vataharla пишет:
все подряд ведь не будешь читать?

Ну, если не будешь, то ... я же говорил, что Вам не надо.

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

Vataharla пишет:

andriano пишет:

Vataharla, должен Вас разочаровать: учебник нужно читать именно от корки до корки и, вероятно, не один раз.

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

Т.е, прочитать в выжимке, на которую уже Жека давал ссылку, что делают полсотни операторов и подробнее изучить нужные, вам требуются годы, тогда не понимаю, как вы разговаривать научились?

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

bwn пишет:

не понимаю, как вы разговаривать научились?

родители пиздили.

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

Клапауций 112 пишет:

bwn пишет:

не понимаю, как вы разговаривать научились?

родители пиздили.

Не, привыкает быстро, лучше кушать не давать.

Vataharla
Offline
Зарегистрирован: 30.07.2017

bwn пишет:

Vataharla пишет:

andriano пишет:

Vataharla, должен Вас разочаровать: учебник нужно читать именно от корки до корки и, вероятно, не один раз.

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

Т.е, прочитать в выжимке, на которую уже Жека давал ссылку, что делают полсотни операторов и подробнее изучить нужные, вам требуются годы, тогда не понимаю, как вы разговаривать научились?

Прочитал, но я не пойму как сделать, если у меня по условию  else {digitalWrite(7, 0); noTone(9);} но мне нужно и одновременно  подать шим сигнал на пин № 9, когда на 7 пине "ноль" а если не будет noTone(9) в операторе else, то тогда не будет затыкаться динамик на пине № 9 когда на пине №7 "еденица"

Про что тут читать я даже примерно не понимаю.

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

В этом случае, не читать, а алхоритму правильную писать. А алхоритму правильно написанную, переводить на понятный машине язык.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Vataharla пишет:

Про что тут читать я даже примерно не понимаю.

Vataharla, Вам вредно читать. Завязывайте с этим занятием.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

andriano пишет:
Vataharla, Вам вредно читать. Завязывайте с этим занятием.
А то волосы на ладонях начнут расти.

Vataharla
Offline
Зарегистрирован: 30.07.2017

andriano пишет:

Vataharla пишет:

Про что тут читать я даже примерно не понимаю.

Vataharla, Вам вредно читать. Завязывайте с этим занятием.

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

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

Vataharla пишет:

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

Епст, как можно сказать тебе, как это должно работать, если ты сам этого еще не придумал. Где у тебя analogWrite(), а где tone(), я уже запутался. Повторяю: напиши алгоритм - на вход 3.62 пришла единица, выход 4.12 при этом выдал то то и т.д.

Vataharla
Offline
Зарегистрирован: 30.07.2017

bwn пишет:

Vataharla пишет:

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

Епст, как можно сказать тебе, как это должно работать, если ты сам этого еще не придумал. Где у тебя analogWrite(), а где tone(), я уже запутался. Повторяю: напиши алгоритм - на вход 3.62 пришла единица, выход 4.12 при этом выдал то то и т.д.

На пин № 2 будет приходить внешнее питание постоянного тока 5 вольт через резистор на 10кОм. на выход пин №7 подать LOW. На пин № 3 будет приходить внешнее питание постоянного тока 5 вольт через резистор на 10кОм. на выход пин №8 подать LOW. 

На выход пин №9 динамик с усилителем подать сигнал (контроля) tone.

Если на вход пин №2 или на вход пин№3 или на оба входа сразу не пришло напряжение = 5 вольтам, то в таком случае подать на выход  пин №7 либо пин №8 либо на оба пина сразу сигнал HIGT, в это же время подать на выход пин №9 сигнал (тревоги) tone другой тональности и длительности. Когда на ОБА входа обязательно, чтобы  именно когда на обоих входах пин №2 и пин №3 появляются 5 вольт, подать на выходы пин №7 и пин №8 сигнал LOW, "заткнуть" динамик на выходе пин №9 , который подавал сигнал (тревоги) и опять запустить его и подать на него сигнал (контроля) tone.

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

Мда ... Вы считает это алгоритмом? Тяжёлый случай.

Ознакомьтесь вот. И попробуйте таки изложить алгоритм внятно.

kalapanga
Offline
Зарегистрирован: 23.10.2016

Vataharla пишет:

Если на вход пин №2 или на вход пин№3 или на оба входа сразу не пришло напряжение = 5 вольтам, то в таком случае подать на выход  пин №7 либо пин №8 либо на оба пина сразу сигнал HIGT, в это же время подать на выход пин №9 сигнал (тревоги) tone другой тональности и длительности. Когда на ОБА входа обязательно, чтобы  именно когда на обоих входах пин №2 и пин №3 появляются 5 вольт, подать на выходы пин №7 и пин №8 сигнал LOW, "заткнуть" динамик на выходе пин №9 , который подавал сигнал (тревоги) и опять запустить его и подать на него сигнал (контроля) tone.

Ваша система должна реагировать в зависимости от состояния ДВУХ входов, а Вы состояние этих входов проверяете и реагируете на них по отдельности. Вот и получается не то. Перечитайте, что Вам Jeka_M про оператор И писал. Ваши проверки должны выглядеть как-то так:

Если на входе 2 высокий уровень И на входе 3 высокий уровень делаем то

Иначе Если на входе 2 высокий уровень И на входе 3 низкий уровень делаем это

и так далее.

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

Vataharla пишет:

На пин № 2 будет приходить внешнее питание постоянного тока 5 вольт через резистор на 10кОм. на выход пин №7 подать LOW. На пин № 3 будет приходить внешнее питание постоянного тока 5 вольт через резистор на 10кОм. на выход пин №8 подать LOW. 

На выход пин №9 динамик с усилителем подать сигнал (контроля) tone.

Если на вход пин №2 или на вход пин№3 или на оба входа сразу не пришло напряжение = 5 вольтам, то в таком случае подать на выход  пин №7 либо пин №8 либо на оба пина сразу сигнал HIGT, в это же время подать на выход пин №9 сигнал (тревоги) tone другой тональности и длительности. Когда на ОБА входа обязательно, чтобы  именно когда на обоих входах пин №2 и пин №3 появляются 5 вольт, подать на выходы пин №7 и пин №8 сигнал LOW, "заткнуть" динамик на выходе пин №9 , который подавал сигнал (тревоги) и опять запустить его и подать на него сигнал (контроля) tone.

Исходя из первого абзаца:
вход2 == HIGH,  выход7 = LOW; выход9 = tone1
вход3 == HIGH, то выход8 = LOW; выход9 = tone1
Далее:
вход2 == LOW, выход7 = HIGH; выход9 = tone2
вход3 == LOW, выход8 = HIGH; выход9 = tone2
вход2 = вход3 == HIGH,  выход7 = выход8 = LOW, выход9 = tone1

Теперь, внимание: чему равен выход9, если вход2 == HIGH, а вход3 == LOW, или наоборот. Вы нарушили требования первого абзаца ТЗ, выход9 не может генерить одновременно tone1 и tone2
Нарисуйте себе такую таблицу всех возможных состояний и устраните в ней все логические нестыковки. Пока что, если выполнять условия по состоянию одного входа без учета состояния другого, задача не решаема.

Vataharla
Offline
Зарегистрирован: 30.07.2017

bwn пишет:

Vataharla пишет:

На пин № 2 будет приходить внешнее питание постоянного тока 5 вольт через резистор на 10кОм. на выход пин №7 подать LOW. На пин № 3 будет приходить внешнее питание постоянного тока 5 вольт через резистор на 10кОм. на выход пин №8 подать LOW. 

На выход пин №9 динамик с усилителем подать сигнал (контроля) tone.

Если на вход пин №2 или на вход пин№3 или на оба входа сразу не пришло напряжение = 5 вольтам, то в таком случае подать на выход  пин №7 либо пин №8 либо на оба пина сразу сигнал HIGT, в это же время подать на выход пин №9 сигнал (тревоги) tone другой тональности и длительности. Когда на ОБА входа обязательно, чтобы  именно когда на обоих входах пин №2 и пин №3 появляются 5 вольт, подать на выходы пин №7 и пин №8 сигнал LOW, "заткнуть" динамик на выходе пин №9 , который подавал сигнал (тревоги) и опять запустить его и подать на него сигнал (контроля) tone.

Исходя из первого абзаца:
вход2 == HIGH,  выход7 = LOW; выход9 = tone1
вход3 == HIGH, то выход8 = LOW; выход9 = tone1
Далее:
вход2 == LOW, выход7 = HIGH; выход9 = tone2
вход3 == LOW, выход8 = HIGH; выход9 = tone2
вход2 = вход3 == HIGH,  выход7 = выход8 = LOW, выход9 = tone1

Теперь, внимание: чему равен выход9, если вход2 == HIGH, а вход3 == LOW, или наоборот. Вы нарушили требования первого абзаца ТЗ, выход9 не может генерить одновременно tone1 и tone2
Нарисуйте себе такую таблицу всех возможных состояний и устраните в ней все логические нестыковки. Пока что, если выполнять условия по состоянию одного входа без учета состояния другого, задача не решаема.

Да хорошо, это ясно, что  не возможно одновременно генерировать на пин №9 два сигнала tone1 и tone2, но возможно же генерировать tone1 через не продолжительный переиод времени после генерации tone2, таблица состояний такая:

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

Теперь в эту таблицу добавить в две средние графы, что после tone2 (какой длительности?), начинает звучать tone1 (как долго?) и попытаться сформулировать для себя, как это сделать? (не забывая о параллельном контроле входов).

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Точнее говоря, кроме конотроля 2-х параметров (что выливается в 4 строки таблицы) нужно контролировать, закончились или нет еще 2 интервала времени. Тогда в таблице получается 16 строк.

Vataharla
Offline
Зарегистрирован: 30.07.2017

Не нужно мне больше состояний контролировать, в общем то вроде получилось с помощью логического элемента и и пары условий все работает как и хотелось

void setup() {
  pinMode(2, INPUT_PULLUP); // ВХ 1
  pinMode(3, INPUT_PULLUP); // ВХ 2
  pinMode(7, OUTPUT);   // ВЫХ 1
  pinMode(8, OUTPUT);   // ВЫХ 2
  pinMode(9, OUTPUT);   // ВЫХ 3
  Serial.begin(9600); // открывает ком порт
  }
void loop()
{
  boolean p1 = digitalRead(2); // "еденица" на ВХ 1
  boolean p2 = digitalRead(3); // "еденица" на ВХ 2
  if (p1 == 0 && p2 == 0)
  {tone(9,715,150);
   delay(6000);}
  if (p1 == 1) {digitalWrite(7, 1);// если на ВХ 1 придет "ноль", то на ВЫХ 1 послать "еденицу"
  tone(9, 1000);
  delay(100);
  tone(9, 500);
  delay(100);
  }
  else digitalWrite(7, 0); //отрицание (на ВЫХ 1 послать "ноль")
  if (p2 == 1) {digitalWrite(8, 1); // если на ВХ 2 придет "ноль", то на ВЫХ 2 послать "еденицу"
  tone(9, 1000);
  delay(100);
  tone(9, 500);
  delay(100);
  }
  else digitalWrite(8, 0); //отрицание (на ВЫХ 2 послать "ноль")
  Serial.print("p1: "); Serial.print(p1); // выводит в монитор ком порта текущее состояние входа ардуино 1 
  Serial.print(", p2: "); Serial.println(p2); // выводит в монитор ком порта текущее состояние входа ардуино 2
}  

 

 

единственное в этом месте 

tone(9,715,150);
   delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы  приоритет выдать условиям?

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

Vataharla пишет:

delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы  приоритет выдать условиям?

:)))))

Vataharla
Offline
Зарегистрирован: 30.07.2017

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

Vataharla пишет:

delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы  приоритет выдать условиям?

:)))))

да что смешного, мне нужна эта пауза даже секунд в 20, чтобы динамик постоянно не "задалбливал" пищанием

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

Смешно не то, что Вам нужна пауза, а то, что Вы пишете по сути примерно следующее: "Блин, спать надо ложиться, но ведь еси я буду спать, то я не буду пить пиво! Как бы поставить питию приоритет!"

Vataharla
Offline
Зарегистрирован: 30.07.2017

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

Смешно не то, что Вам нужна пауза, а то, что Вы пишете по сути примерно следующее: "Блин, спать надо ложиться, но ведь еси я буду спать, то я не буду пить пиво! Как бы поставить питию приоритет!"

ну как бы да, а как можно иначе сделать?

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

Нужно что-то одно выбрать: или пить пиво (проверять условия) или спать (включать delay). Оба вместе не работают.

Vataharla
Offline
Зарегистрирован: 30.07.2017

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

Нужно что-то одно выбрать: или пить пиво (проверять условия) или спать (включать delay). Оба вместе не работают.

а прервать delay, когда  произойдет условие можно?

b707
Offline
Зарегистрирован: 26.05.2017

Vataharla пишет:

а прервать delay, когда  произойдет условие можно?

Нет. Не надо вообще delay вставлять, есть другие методы отсчета времени - функция миллис

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

Vataharla пишет:

а прервать delay, когда  произойдет условие можно?

Штатный нельзя. Если самогонный напишете, то как напишете, так и будет.

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

Vataharla пишет:

Не нужно мне больше состояний контролировать, в общем то вроде получилось с помощью логического элемента и и пары условий все работает как и хотелось

единственное в этом месте 

tone(9,715,150);
   delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы  приоритет выдать условиям?

Вы не закончив отвечать на вопросы (для себя самого), решили сразу кодировать. В целом результат закономерен.((((

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Vataharla пишет:

единственное в этом месте 

tone(9,715,150);
   delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы  приоритет выдать условиям?

unsigned long pauza = millis();

void setup() {

}
void loop()
{
  if (p1 == 0 && p2 == 0)
  {
    if (millis() - pauza >= 6000) 
    {
      pauza = millis();
      tone(9, 715, 150);
    }
  }
}

 

Vataharla
Offline
Зарегистрирован: 30.07.2017

vosara пишет:

Vataharla пишет:

единственное в этом месте 

tone(9,715,150);
   delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы  приоритет выдать условиям?

unsigned long pauza = millis();

void setup() {

}
void loop()
{
  if (p1 == 0 && p2 == 0)
  {
    if (millis() - pauza >= 6000) 
    {
      pauza = millis();
      tone(9, 715, 150);
    }
  }
}

 

Во вот это прям "ЧЕЛОВЕЧЕЩЕ" выручил прям, правдо пришлось кое-что убрать,  громадное прям спасибо, все теперь работает как надо, сразу начинает тревогу выдавать, когда условие наступает не ждет пока делей закончится. А то я миллис два вечера  мучил у меня аж плата нагрелась и даже "задымилась", когда я в очередной раз значения в скетче с примером поменял и загрузил.  

Vataharla
Offline
Зарегистрирован: 30.07.2017

Все вроде работало но не долго, хоя как не долго: часов 5 была включена работало четко периодидечски снимал подавал "еденицу" на входы все четко было, а через пару дней опять запустил и ни але молчит, отключил все от ардуины, подключаю к компьютеру определяется как положено пытаюсь что то загрузить через arduino IDE вроде загружается но надпись загрузка висит минут десять и не чего не загружается, между пинами GND И +5v напряжение 4.1 вольта замеряю, очень сильно нагревается зама микросхема atmel ну прям палец не терпит, интересует вопрос это из за моего кода, ардуина "сдохла" или из за чего другого? 

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

В принцепе Вы код не показали но скорей всего причина в подключении