Сигнализация
- Войдите на сайт для отправки комментариев
Здравствуйте!
Нужна помощь!
Есть проект сигнализации (для личного пользования) состоящей из приемника и двух передатчиков. При срабатывании датчика и передачи сигнала с 1 - го передатчика, передается сигнал С-1, при срабатывании второго, передается сигнал С-2. При приеме необходима селекция этих сигналов, т.е. при С-1 было звучание одной мелодии, а при С-2 другой.
Сигнал - 1:
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop()
{
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(600000);
}
Сигнал-2:
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop()
{
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(500);
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(600000);
}
Мелодия 1:
void setup() {
pinMode(9, OUTPUT); // устанавливаем 9 ногу как выход
beep(50);
beep(50);
beep(50);
delay(1000);
}
void loop() {
beep(650);
}
void beep(unsigned char delayms){
analogWrite(9, 100); // значение должно находится между 0 и 255
// поэкспериментируйте для получения хорошего тона
delay(delayms); // пауза delayms мс
analogWrite(9, 0); // 0 - выключаем пьезо
delay(delayms); // пауза delayms мс
}
Мелодия 2:
void setup() {
pinMode(9, OUTPUT); // устанавливаем 9 ногу как выход
beep(50);
beep(50);
beep(50);
delay(1000);
}
void loop() {
beep(650);
}
void beep(unsigned char delayms){
analogWrite(9, 200); // значение должно находится между 0 и 255
// поэкспериментируйте для получения хорошего тона
delay(delayms); // пауза delayms мс
analogWrite(9, 0); // 0 - выключаем пьезо
delay(delayms); // пауза delayms мс
}
Заранее всем большое спасибо!!!
П.С. У меня возникли сложности с написанием программы для приемника. Собственно в этом и есть просьба о помощи.
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
а сколько ардуин-то вообще и как они связаны?
3 штуки: по одной на передатчиках и 1 на приемнике, связаны, соответственно по радиоканалу приемник и передатчик 433 МГц http://www.ebay.com/itm/433Mhz-RF-transmitter-and-receiver-kit-for-Arduino-ARM-WL-MCU-Raspberry-pi-Good-/171284863309?pt=LH_DefaultDomain_0&hash=item27e15f994d
П.С. У меня возникли сложности с написанием программы для приемника. Собственно в этом и есть просьба о помощи.
В вышеприведенном коде я вижу лишь мигание светодиодом и издавание звуков. А где скетч для приемника, с написанием которого возникли сложности ? Скетч передатчика тоже весьма уместен, с ним, я так понимаю, нет проблем ?
Передатчик 1
// the setup function runs once when you press reset or power the board
04
void
setup
() {
05
// initialize digital pin 13 as an output.
06
pinMode(13, OUTPUT);
07
}
08
// the loop function runs over and over again forever
09
void
loop
()
10
{
11
digitalWrite(13, HIGH);
12
delay(1000);
13
digitalWrite(13, LOW);
14
delay(500);
15
digitalWrite(13, HIGH);
16
delay(1000);
17
digitalWrite(13, LOW);
18
delay(500);
19
digitalWrite(13, HIGH);
20
delay(1000);
21
digitalWrite(13, LOW);
22
delay(600000);
23
}
Передатчик 2
27
// the setup function runs once when you press reset or power the board
28
void
setup
() {
29
// initialize digital pin 13 as an output.
30
pinMode(13, OUTPUT);
31
}
32
// the loop function runs over and over again forever
33
void
loop
()
34
{
35
digitalWrite(13, HIGH);
36
delay(1000);
37
digitalWrite(13, LOW);
38
delay(500);
39
digitalWrite(13, HIGH);
40
delay(1000);
41
digitalWrite(13, LOW);
42
delay(500);
43
digitalWrite(13, HIGH);
44
delay(1000);
45
digitalWrite(13, LOW);
46
delay(500);
47
digitalWrite(13, HIGH);
48
delay(1000);
49
digitalWrite(13, LOW);
50
delay(500);
51
digitalWrite(13, HIGH);
52
delay(1000);
53
digitalWrite(13, LOW);
54
delay(600000);
55
}
Они были выложены свместе со скетчем приемника, с ними проблем нет.
По поводу скетча для приемника, его нет, т.к. я не знаю, чего в него написать. В этом собственно и есть суть моего вопроса.
ёп! мигание светодиодом и издавание звуков - это и есть передача? а мы-то тут голову ломаем.....
S7782, не могли бы Вы пояснить, что и каким образом передают скетчи "Передатчик 1" и "Передатчик 2" ?
Передают определенный сигнал (видно из текста скетча), в передатчике 1 он одного вида (сигнал - 1 сек., пауза 0,5 сек., и так три раза подряд), в передатчике 2, другого (аналогично первому, но 5 раз). В том то и вопрос, мне нужно чтобы приемник их отличал один от другого и давал ответную реакцию в виде разных звуковых сигналов, в зависимости от того какой передатчик его передает.
ёп! мигание светодиодом и издавание звуков - это и есть передача? а мы-то тут голову ломаем.....
В общем да. Сигнал передатчика состоит из нескольких повторяющихся импульсов. Ответная реакция приемника - звуки. И все.
я может сейчас крамольную мысль выскажу, но не могу сдержаться - а другого способа, кроме как моргнуть 5 раз, не предусмотрено, чтобы отличить второй передатчик от первого?
почему-то вспомнилось
— Значит так. Для деревенского ролика нужен дед, коза, завалинка. Игорь Владимирович приобнимет деда и скажет: «Не горюй, Иван Митрофаныч, поднимем село!»
— А обязательно, чтобы звали Иван Митрофанович?
— Да, а козу — Зойка! Здесь мелочей не бывает!
Используйте для ваших модулей библиотеку VirtualWire http://www.airspayce.com/mikem/arduino/VirtualWire/VirtualWire-1.27.zip
Статья на Хабре http://habrahabr.ru/post/182068/?utm_source=dlvr.it&utm_medium=twitter
Ааа, то есть светодиод - это как бы передатчик, а приемник.., впрочем, неважно. Вам необходима VirtualWire, там в примерах и передатчик, и приемник есть.
я может сейчас крамольную мысль выскажу, но не могу сдержаться - а другого способа, кроме как моргнуть 5 раз, не предусмотрено, чтобы отличить второй передатчик от первого?
почему-то вспомнилось
— Значит так. Для деревенского ролика нужен дед, коза, завалинка. Игорь Владимирович приобнимет деда и скажет: «Не горюй, Иван Митрофаныч, поднимем село!»
— А обязательно, чтобы звали Иван Митрофанович?
— Да, а козу — Зойка! Здесь мелочей не бывает!
Чесно говоря не стал заморачиваться, да и указанный скетч это как основа. Вот подскажите, разберусь, а там может чего и поинтереснее придумаю.
Ааа, то есть светодиод - это как бы передатчик, а приемник.., впрочем, неважно. Вам необходима VirtualWire, там в примерах и передатчик, и приемник есть.
Нет, нет. К указанному как светодиод выводу подключен передатчик.
Выдает ошибку
передал 1 "SOS" - приняли, декодировали ( действие_1 ), передал 2 "OSO" - приняли, декодировали ( действие_2 ).... в чём вопрос-то ?
библиотеку закиньте в папку libraries в корне Arduino и перезапустите Arduino.
ruselec сделал как Вы сказали. Все ок!
К указанному как светодиод выводу подключен передатчик.
Именно это я имел ввиду. Разберетесь с библиотекой, тогда все получится с сигнализацией, благо информации о готовых проектах с VirtualWire предостаточно.
Всем участникам большое спасибо за помощь!!!