Помощь ! Код сигнализации на arduino
- Войдите на сайт для отправки комментариев
Пт, 21/04/2017 - 14:03
Здравствуйте. При помощи коллег на форуме, написал следующий код..
Задача простая, при активации датчика начинает бесконечно пищать зуммер и загорается зеленый лед (этот этап у меня получился). Отключить все это можно нажав импульсную кнопку 1 раз (нажал-отпустил), но у меня что-то не выходит никак.
Прошу помочь ! Буду премного благодарен !
int zelPin = 2; // зеленый лед int krasnPin = 3; // красный лед int zum = 4; // зуммер int pir = 5; // датчик пир int buttonPin = 6; int buttonState = 0; void setup() { pinMode(2, OUTPUT); pinMode(3,OUTPUT); pinMode(4, OUTPUT); pinMode(5, INPUT); pinMode(6,INPUT); Serial.begin(9600); } boolean exitWhile = false ; void loop() { buttonState = digitalRead(buttonPin); int pirVal = digitalRead(pir); //Если обнаружили движение if(pirVal == HIGH) { digitalWrite(zelPin, LOW); digitalWrite(krasnPin, HIGH); while (exitWhile == false) { digitalWrite(zum, HIGH); delay(1); digitalWrite(zum, LOW); delay(1); if (buttonState == HIGH){ exitWhile = true; } } } else { digitalWrite (zelPin,HIGH); digitalWrite(krasnPin,LOW); digitalWrite(zum, LOW); } }
svitr,
судя по Вашей предыдущей теме, в которой El как-то пытался Вам помочь, Вы совсем не умеете программирования и не знаете языка (когда он по запарке предложил Вам строку на другом языке, Вы стали спрашивать куда её вставлять). Судя по тому коду, что Вы выложили сейчас, Вы совсем не понимаете, что в нём написано.
Я конечно могу Вам сказать, что сделать, чтобы пищалка замолкала - перенесите строку 19 пониже - вставьте её между строками 32 и 33. А строки 37-39 удалите вовсе. Пищалка начнёт замолкать, только Вам это не поможет - это не помощь, т.к. завтра у Вас появится новая пищалка и снова начнётся "мыло и мочало - мы начнём сначала, давайте всем миром помогайте".
Реальная помощь Вам может быть только одна - совет научиться программировать и изучить язык на котором Вы собираетесь писать. Ну, или, если писать Вы не собираетесь, то впредь просто обращайтесь в раздел "Ищу исполнителя", там всё напишут за Вас по вполне сходной цене.
Что поделать... специалистами не рождаются, специалистами становятся. Не все вокруг Энштейны и Менделеевы, многие как я с нуля начинают, и имеют право задавать хотя бы элементарные вопросы. Если вы не любите новичков - внесите соответствующие корректировки в правила создания тем.
К слову, я отлично понимаю свой же код который сам же и написал, а то что я задаю вопросы по программированию не говорит о том что я не понимаю что делаю. Процесс обучения всегда сопровождается вопросами и непониманием, поэтому наверное в школах работаю учителя, да ?
За помощь благодарю. Пообещаю больше не беспокоить местное экспертное сообщество своими вопросами.
К слову, я отлично понимаю свой же код который сам же и написал,
Ничего Вы в этом коде не понимаете. Могу позадавать вопросы по разным строчкам, типа "для чего и что делает", чтобы Вы в этом убедились. А писали Вы его не сами. Сами Вы только кнопки нажимали. Писал за Вас El и другие.
Лучшее, что Вы можете сделать, это взять книги по программированию и читать, разбирая все примеры, а не пытаться написать программу на языке, который для Вас набор бессмысленных букв. Впрочем, не хотите учиться - не надо, мне пофиг - Вам жить.
Считайте как угодно. Со своей стороны лишь отмечу, мне было непонятно как реализовать вышеприведенный сценарий с выключением сирены посредством кнопки, потому что логические функции на С++ для новичка это сложно. Особенно если с математикой в школе не дружил.
И будет сложно пока не последуете моему совету - взять книги и учиться вместо того, чтобы побираться по форумам, справшивая как строку на бейсике в С-шный код вставить.
...потому что логические функции на С++ для новичка это сложно.
Нет на С++ никаких логических функций!
Есть раздел математики - называется "Булева алгебра". И все логические функции в любом языке программирования, будь то Си, Фортран, Кобол, Паскаль, РХП или Бейсик берутся только оттуда.
Особенно если с математикой в школе не дружил.
Собственно, у Вам есть три варианта, два приемлемых и один - позорный. Где какой - разбирайтесь сами:
1. Подружиться с математикой.
2. Обратиться в раздел "Ищу исполнителя".
3. Побираться по форуму в недежде, что кто-то напишет за Вас либо исправит Ваши ошибки.
Здравствуйте. При помощи коллег на форуме, написал следующий код..
Задача простая, при активации датчика начинает бесконечно пищать зуммер и загорается зеленый лед (этот этап у меня получился). Отключить все это можно нажав импульсную кнопку 1 раз (нажал-отпустил), но у меня что-то не выходит никак.
Прошу помочь ! Буду премного благодарен !
Я правильно понимаю логику вашего устройства - устройство должно иметь два состояния - "пищит" или "не пищит". В состояние "пищит" оно взводится по датчику и даже, если датчик больше не показывает движения, то устройство все равно пищит. В состояние "не пищит" оно сбрасывается кнопкой без фиксации - так?
Совершенно верно.
Ну, как вариант:
Считайте как угодно. Со своей стороны лишь отмечу, мне было непонятно как реализовать вышеприведенный сценарий с выключением сирены посредством кнопки, потому что логические функции на С++ для новичка это сложно. Особенно если с математикой в школе не дружил.
Вам здесь старшие товарищи порекомендовали книжки и в целом они совершенно правы. Но первое, с чего начинается программа, это алгоритм. Возьмите лист бумаги и распишите, что в какой момент и по какой причине должно произойти. После чего переводите свои тезисы в понятный МК язык (здесь уже без словаря никак). И математика в вашем случае не причем. Да и в основной массе задач достаточно курса воскресной школы.
Еще вариант, без delay()
Ну, как вариант:
Ну, всё, карта пошла!
Прав был ТС - нафига книжки читать?
Ну, как вариант:
Ну, всё, карта пошла!
Прав был ТС - нафига книжки читать?
так от скуки жеж, кому то не сложно, а на более сложные задачи настроя нет
Всем большое спасибо, тему можно закрывать.