Подскажиет как сделать, чтобы правильно работала схема?
- Войдите на сайт для отправки комментариев
Сб, 16/09/2017 - 19:55
Здравствуйте, подскажите как написать скетч?
Нужно подать внешнее питание (в размере 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
Здравствуйте, подскажите как написать скетч?
пальцами тыкаешь в нужные клавиши клавиатуры.
Здравствуйте, подскажите как написать скетч?
пальцами тыкаешь в нужные клавиши клавиатуры.
тыкаю так
tone(9, 1000), delay(100), tone(9, 500), delay(100);
вот после этого
if (p1 == 1) digitalWrite(7, 1),
а оно ругается зараза, как это работает?
а оно ругается зараза
Читать эту ругань пробовали?
тыкаю так
tone(9, 1000), delay(100), tone(9, 500), delay(100);
вот после этого
if (p1 == 1) digitalWrite(7, 1),
а оно ругается зараза, как это работает?
Заведите серво-машинку, чтобы она за такое тыкание по пальцам линейкой била.
А вообще, прежде, чем тыкать нужно обязательно почитать описание языка, пусть хотя бы скоращённое и убогое!
Читать эту ругань пробовали?
Не читатель!
Vataharla, ошибки в строках 12 - 15. Почитайте, как правильно использовать оператор if и else
А ещё не хватает закрывающей фигурной скобки для функции loop().
набежали русофобы, издеваются - пристрелите его нахер, что бы не мучился.
можно ли вообще так сделать, где почитать что то внятное по функции tone?
где почитать что то внятное по функции tone?
Почитать можно здесь: https://www.arduino.cc/en/Reference/Tone
Но, думаю, Вам в первую очередь нужно совсем не это.
где почитать что то внятное по функции tone?
Почитать можно здесь: https://www.arduino.cc/en/Reference/Tone
Но, думаю, Вам в первую очередь нужно совсем не это.
а что мне нужно, подскажите пожалуйста?
а вот как теперь сделать, чтобы выдавался шим сигнал на 9 пин, когда у меня на обоих входах (2 и 3) будет "еденица"
Применить логический оператор И (&&) в условии:
P.S. Тут найдёте много полезного - http://arduino.ru/Reference
на выходе 9 должен быть шим сигнал но не сплошным тоном
Это как?
Функция tone() выдаёт ШИМ с постоянной скважностью 50% и разной частотой.
Функция analogWrite() выдаёт ШИМ с постоянной частотой 490 Гц и разной скважностью.
а что мне нужно, подскажите пожалуйста?
Думаю, учебник по программированию.
а вот как теперь сделать, чтобы выдавался шим сигнал на 9 пин, когда у меня на обоих входах (2 и 3) будет "еденица"
Применить логический оператор И (&&) в условии:
мне как бы это не совсем подходит, так как мне нужно чтобы, когда у меня на выходе 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
на выходе 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); не компилируется вообще, но тут скобки фигурные нужны, это я понял.
Думаю, учебник по программированию.
не, это я уже предлагал, даже со ссылкой, ТС это не надо :)
Думаю, учебник по программированию.
не, это я уже предлагал, даже со ссылкой, ТС это не надо :)
почему не надо, я про оператор if почитал, скобки фигурные добавил, заработало, а вот про что теперь читать, все подряд ведь не будешь читать?
Vataharla, должен Вас разочаровать: учебник нужно читать именно от корки до корки и, вероятно, не один раз.
Vataharla, должен Вас разочаровать: учебник нужно читать именно от корки до корки и, вероятно, не один раз.
Чтобы создать простое условие? А какой именно, не один год пройдет, пока я найду то, что мне нужно в этих учебниках.
"Это что, я должен полгода учиться, а затем еще сдавать 2 экзамена, чтобы один раз прокатиться на автомобиле?"
Чтобы создать простое условие? А какой именно, не один год пройдет, пока я найду то, что мне нужно в этих учебниках.
я же говорил, что проше пристрелить, что бы не мучился.
Ну, если не будешь, то ... я же говорил, что Вам не надо.
Vataharla, должен Вас разочаровать: учебник нужно читать именно от корки до корки и, вероятно, не один раз.
Чтобы создать простое условие? А какой именно, не один год пройдет, пока я найду то, что мне нужно в этих учебниках.
Т.е, прочитать в выжимке, на которую уже Жека давал ссылку, что делают полсотни операторов и подробнее изучить нужные, вам требуются годы, тогда не понимаю, как вы разговаривать научились?
не понимаю, как вы разговаривать научились?
родители пиздили.
не понимаю, как вы разговаривать научились?
родители пиздили.
Не, привыкает быстро, лучше кушать не давать.
Vataharla, должен Вас разочаровать: учебник нужно читать именно от корки до корки и, вероятно, не один раз.
Чтобы создать простое условие? А какой именно, не один год пройдет, пока я найду то, что мне нужно в этих учебниках.
Т.е, прочитать в выжимке, на которую уже Жека давал ссылку, что делают полсотни операторов и подробнее изучить нужные, вам требуются годы, тогда не понимаю, как вы разговаривать научились?
Прочитал, но я не пойму как сделать, если у меня по условию else {digitalWrite(7, 0); noTone(9);} но мне нужно и одновременно подать шим сигнал на пин № 9, когда на 7 пине "ноль" а если не будет noTone(9) в операторе else, то тогда не будет затыкаться динамик на пине № 9 когда на пине №7 "еденица"
Про что тут читать я даже примерно не понимаю.
В этом случае, не читать, а алхоритму правильную писать. А алхоритму правильно написанную, переводить на понятный машине язык.
Про что тут читать я даже примерно не понимаю.
Vataharla, Вам вредно читать. Завязывайте с этим занятием.
Про что тут читать я даже примерно не понимаю.
Vataharla, Вам вредно читать. Завязывайте с этим занятием.
Вы сами себе противоречите, то вы упрекаете меня что я не читавши лезу с вопросами сюда, теперь вы говорите, что читать мне вредно, а что мне делать, если нужно собрать такую простую схемку, я же не прошу дать мне готовый скетч, я просто прошу подсказать как это работает, если вам это так сложно сделать, у вас нету на это времени, почему у вас находится время чтобы мне ответить что то иное?
я же не прошу дать мне готовый скетч, я просто прошу подсказать как это работает, если вам это так сложно сделать, у вас нету на это времени, почему у вас находится время чтобы мне ответить что то иное?
Епст, как можно сказать тебе, как это должно работать, если ты сам этого еще не придумал. Где у тебя analogWrite(), а где tone(), я уже запутался. Повторяю: напиши алгоритм - на вход 3.62 пришла единица, выход 4.12 при этом выдал то то и т.д.
я же не прошу дать мне готовый скетч, я просто прошу подсказать как это работает, если вам это так сложно сделать, у вас нету на это времени, почему у вас находится время чтобы мне ответить что то иное?
Епст, как можно сказать тебе, как это должно работать, если ты сам этого еще не придумал. Где у тебя 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.
Мда ... Вы считает это алгоритмом? Тяжёлый случай.
Ознакомьтесь вот. И попробуйте таки изложить алгоритм внятно.
Если на вход пин №2 или на вход пин№3 или на оба входа сразу не пришло напряжение = 5 вольтам, то в таком случае подать на выход пин №7 либо пин №8 либо на оба пина сразу сигнал HIGT, в это же время подать на выход пин №9 сигнал (тревоги) tone другой тональности и длительности. Когда на ОБА входа обязательно, чтобы именно когда на обоих входах пин №2 и пин №3 появляются 5 вольт, подать на выходы пин №7 и пин №8 сигнал LOW, "заткнуть" динамик на выходе пин №9 , который подавал сигнал (тревоги) и опять запустить его и подать на него сигнал (контроля) tone.
Ваша система должна реагировать в зависимости от состояния ДВУХ входов, а Вы состояние этих входов проверяете и реагируете на них по отдельности. Вот и получается не то. Перечитайте, что Вам Jeka_M про оператор И писал. Ваши проверки должны выглядеть как-то так:
Если на входе 2 высокий уровень И на входе 3 высокий уровень делаем то
Иначе Если на входе 2 высокий уровень И на входе 3 низкий уровень делаем это
и так далее.
На пин № 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
Нарисуйте себе такую таблицу всех возможных состояний и устраните в ней все логические нестыковки. Пока что, если выполнять условия по состоянию одного входа без учета состояния другого, задача не решаема.
На пин № 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, таблица состояний такая:
Теперь в эту таблицу добавить в две средние графы, что после tone2 (какой длительности?), начинает звучать tone1 (как долго?) и попытаться сформулировать для себя, как это сделать? (не забывая о параллельном контроле входов).
Точнее говоря, кроме конотроля 2-х параметров (что выливается в 4 строки таблицы) нужно контролировать, закончились или нет еще 2 интервала времени. Тогда в таблице получается 16 строк.
Не нужно мне больше состояний контролировать, в общем то вроде получилось с помощью логического элемента и и пары условий все работает как и хотелось
единственное в этом месте
tone(9,715,150);
delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы приоритет выдать условиям?
delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы приоритет выдать условиям?
:)))))
delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы приоритет выдать условиям?
:)))))
да что смешного, мне нужна эта пауза даже секунд в 20, чтобы динамик постоянно не "задалбливал" пищанием
Смешно не то, что Вам нужна пауза, а то, что Вы пишете по сути примерно следующее: "Блин, спать надо ложиться, но ведь еси я буду спать, то я не буду пить пиво! Как бы поставить питию приоритет!"
Смешно не то, что Вам нужна пауза, а то, что Вы пишете по сути примерно следующее: "Блин, спать надо ложиться, но ведь еси я буду спать, то я не буду пить пиво! Как бы поставить питию приоритет!"
ну как бы да, а как можно иначе сделать?
Нужно что-то одно выбрать: или пить пиво (проверять условия) или спать (включать delay). Оба вместе не работают.
Нужно что-то одно выбрать: или пить пиво (проверять условия) или спать (включать delay). Оба вместе не работают.
а прервать delay, когда произойдет условие можно?
а прервать delay, когда произойдет условие можно?
Нет. Не надо вообще delay вставлять, есть другие методы отсчета времени - функция миллис
а прервать delay, когда произойдет условие можно?
Штатный нельзя. Если самогонный напишете, то как напишете, так и будет.
Не нужно мне больше состояний контролировать, в общем то вроде получилось с помощью логического элемента и и пары условий все работает как и хотелось
tone(9,715,150);
delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы приоритет выдать условиям?
Вы не закончив отвечать на вопросы (для себя самого), решили сразу кодировать. В целом результат закономерен.((((
единственное в этом месте
tone(9,715,150);
delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы приоритет выдать условиям?
единственное в этом месте
tone(9,715,150);
delay(6000); хотелось бы паузу побольше, но из этого получается, что не срабатывают условия пока не пройдет эта "делей", как бы приоритет выдать условиям?
Во вот это прям "ЧЕЛОВЕЧЕЩЕ" выручил прям, правдо пришлось кое-что убрать, громадное прям спасибо, все теперь работает как надо, сразу начинает тревогу выдавать, когда условие наступает не ждет пока делей закончится. А то я миллис два вечера мучил у меня аж плата нагрелась и даже "задымилась", когда я в очередной раз значения в скетче с примером поменял и загрузил.
Все вроде работало но не долго, хоя как не долго: часов 5 была включена работало четко периодидечски снимал подавал "еденицу" на входы все четко было, а через пару дней опять запустил и ни але молчит, отключил все от ардуины, подключаю к компьютеру определяется как положено пытаюсь что то загрузить через arduino IDE вроде загружается но надпись загрузка висит минут десять и не чего не загружается, между пинами GND И +5v напряжение 4.1 вольта замеряю, очень сильно нагревается зама микросхема atmel ну прям палец не терпит, интересует вопрос это из за моего кода, ардуина "сдохла" или из за чего другого?
В принцепе Вы код не показали но скорей всего причина в подключении