Кнопка для отправки 433mhz кода в эфир

acidrain85
Offline
Зарегистрирован: 06.03.2019

Всем привет. Прошу не пинать. Перерыл все, но ответа не нашел.

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

Есть скетч (не мой), который каждые пять секунд посылает код; все работает, все открывается, но нужно что бы открывалось с кнопки.

Вот скеч где код посылается каждые 5 секунд (там есть лишние строки):

01#define txPin 3 //пин передатчика
02 
03void setup()
04{
05  pinMode(txPin, OUTPUT);
06  Serial.begin(115200);  // тут поставьте свою скорость
07  Serial.println("Came started");
08}
09 
10 volatile static long lastCode = 0;
11  
12void loop() {
13  // это раскомментить и вместо 3693 вписать свой код для шлагбаума
14 SendCame4(629);
15  delay(5000);
16  return;
17  
18  // при получении кода выводим его в терминал
19  if (lastCode > 0)
20  {
21    Serial.println(lastCode & 0xfff);
22    lastCode = 0;
23  }
24}
25void SendCame4(long Code) {
26  for (int j = 0; j < 7; j++) { // посылку посылаем 4 раза подряд.
27    // время стартового импульса
28    digitalWrite(txPin, HIGH);
29    delayMicroseconds(320);
30    digitalWrite(txPin, LOW);
31    for (int i = 12; i > 0; i--) {
32      byte b = bitRead(Code, i - 1); // побитово перебираем и посылаем код
33      if (b) {
34        digitalWrite(txPin, LOW); // 1
35        delayMicroseconds(640);
36        digitalWrite(txPin, HIGH);
37        delayMicroseconds(320);
38      }
39      else {
40        digitalWrite(txPin, LOW); // 0
41        delayMicroseconds(320);
42        digitalWrite(txPin, HIGH);
43        delayMicroseconds(640);
44      }
45    }
46    digitalWrite(txPin, LOW);
47    delayMicroseconds(11520);
48  }
49}

А вот скеч куда надо прикрепить посылаемый сигнал:

01/#define CAYENNE_DEBUG       // Uncomment to show debug messages
02#define CAYENNE_PRINT Serial  // Comment this out to disable prints and save space
03#include <CayenneMQTTESP8266Shield.h>
04 
05// WiFi network info.
06char ssid[] = "BEIREL";
07char wifiPassword[] = "7528843788";
08 
09// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
10char username[] = "291ec810-488a-11e8-еп67-db14f0c2b326";
11char password[] = "0e737ffa31e6de40bиак458fd082af113f3c1a4f";
12char clientID[] = "41f85a80-3f66-11e9-7гп5-c15442ccb423";
13 
14// Set ESP8266 Serial object. In this example we use the Serial1 hardware serial which is available on boards like the Arduino Mega.
15#define EspSerial Serial
16#define VIRTUAL_CHANNEL 1
17#define ACTUATOR_PIN 4
18#
19 
20ESP8266 wifi(&EspSerial);
21 
22void setup()
23{
24  Serial.begin(9600);
25  pinMode(ACTUATOR_PIN, OUTPUT);
26  pinMode(txPin, OUTPUT);
27  delay(10);
28 
29  // Set ESP8266 baud rate
30  EspSerial.begin(115200);
31  delay(10);
32   
33 
34  Cayenne.begin(username, password, clientID, wifi, ssid, wifiPassword);
35}
36volatile static long lastCode = 0;
37 
38void loop()
39{
40  Cayenne.loop();
41}
42 
43// Default function for sending sensor data at intervals to Cayenne.
44// You can also use functions for specific channels, e.g CAYENNE_OUT(1) for sending channel 1 data.
45CAYENNE_OUT_DEFAULT()
46{
47  // Write data to Cayenne here. This example just sends the current uptime in milliseconds on virtual channel 0.
48  Cayenne.virtualWrite(0, millis());
49  // Some examples of other functions you can use to send data.
50  //Cayenne.celsiusWrite(1, 22.0);
51  //Cayenne.luxWrite(2, 700);
52  //Cayenne.virtualWrite(3, 50, TYPE_PROXIMITY, UNIT_CENTIMETER);
53
54CAYENNE_IN(VIRTUAL_CHANNEL)
55{
56 
57 
58  // Write value to turn the relay switch on or off. This code assumes you wire your relay as normally open.
59  if (getValue.asInt() == 0) {
60    digitalWrite(ACTUATOR_PIN,  LOW);
61  }
62  else {
63    digitalWrite(ACTUATOR_PIN, HIGH);
64  }
65}
66 
67 
68// Default function for processing actuator commands from the Cayenne Dashboard.
69// You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands.
70CAYENNE_IN_DEFAULT()
71{
72  CAYENNE_LOG("Channel %u, value %s", request.channel, getValue.asString());
73  //Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError("Error message");
74}

Буду очень благодарен за помощь.

gfx125
Offline
Зарегистрирован: 27.05.2017

acidrain85 пишет:
Перерыл все, но ответа не нашел.

Точно все перерыли? Поройтесь еще здесь. Научитесь зажигать светодиод по кнопке. А там и в эфир можно будет отправлять. Принцип тот же.

acidrain85
Offline
Зарегистрирован: 06.03.2019

gfx125 пишет:

Принцип тот же.

Принцип тот же, но со светодиодом это одно (выбрал пин и все), а вот какую команду прописать что бы послать сигнал с передатчика мне не понятно

1if (getValue.asInt() == 0) {
2    SendCame4(629);

так не работает

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

acidrain85 пишет:

Принцип тот же, но со светодиодом это одно (выбрал пин и все), а вот какую команду прописать что бы послать сигнал с передатчика мне не понятно

1if (getValue.asInt() == 0) {
2    SendCame4(629);

так не работает

у вас проблема не в команде, а в считывании кнопки. А команду на посылку кода, насколько я вижу - вы вставили верно.

ВОРНИНГ - Обсуждение взлома сигналок вообще-то на форуме не приветсвуется

acidrain85
Offline
Зарегистрирован: 06.03.2019

b707 пишет:

acidrain85 пишет:

Принцип тот же, но со светодиодом это одно (выбрал пин и все), а вот какую команду прописать что бы послать сигнал с передатчика мне не понятно

1if (getValue.asInt() == 0) {
2    SendCame4(629);

так не работает

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

реле с этой кнопкой работает

b707 пишет:

ВОРНИНГ - Обсуждение взлома сигналок вообще-то на форуме не приветсвуется

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

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

acidrain85 пишет:

реле с этой кнопкой работает

тогда значит код неверный

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

Посольку у меня нет проблем с тем, как правильно отправлять код - тогда остается только считать что код считывается неверно.

acidrain85
Offline
Зарегистрирован: 06.03.2019

b707 пишет:

тогда значит код неверный

По отдельности то все работает(((

 

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

acidrain85 пишет:

По отдельности то все работает(((

 

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

acidrain85
Offline
Зарегистрирован: 06.03.2019

b707 пишет:

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

Да, и ворота и гараж

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

выкладывайте код, где вы пытались отправлять код с кнопки - в первом сообщении этого нет

acidrain85
Offline
Зарегистрирован: 06.03.2019

b707 пишет:

выкладывайте код, где вы пытались отправлять код с кнопки - в первом сообщении этого нет

дело не в том что при нажатии кнопки ни чего не происходит, а сама Arduino IDE ругалась на скечь, не компелировался. 

А вот сейчас, стоп стоп стоп вроде скомпелировался, сейчас подключу приемнк и посмотрю приходит код или нет.

Позже отпишусь...

acidrain85
Offline
Зарегистрирован: 06.03.2019

Все работает! Всем спасибо извините за беспокойство.

Есть еще один маленький вопросик: передатчик ОЧЕНЬ сильно греется даже когда ни чего не передает, дотронуться прям нельзя, это норм?

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

acidrain85 пишет:

Есть еще один маленький вопросик: передатчик ОЧЕНЬ сильно греется даже когда ни чего не передает, дотронуться прям нельзя, это норм?

КОНЕЧНО НЕТ

acidrain85
Offline
Зарегистрирован: 06.03.2019

b707 пишет:

КОНЕЧНО НЕТ

А в чем может быть причина? в самом модуле?