Advertisement
Guest User

Untitled

a guest
Jan 17th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.48 KB | None | 0 0
  1. /* Данный скетч делает следующее: передатчик (TX) отправляет массив
  2. данных, который генерируется согласно показаниям с кнопки и с
  3. двух потенциомтеров. Приёмник (RX) получает массив, и записывает
  4. данные на реле, сервомашинку и генерирует ШИМ сигнал на транзистор.
  5. by AlexGyver 2016
  6. */
  7.  
  8. #include <SPI.h>
  9. #include "nRF24L01.h"
  10. #include "RF24.h"
  11.  
  12. RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно
  13. //RF24 radio(9,53); // для Меги
  14.  
  15. byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
  16.  
  17. byte button = 3; // кнопка на 3 цифровом
  18.  
  19. byte transmit_data[3]; // массив, хранящий передаваемые данные
  20. byte latest_data[3]; // массив, хранящий последние переданные данные
  21. boolean flag; // флажок отправки данных
  22.  
  23. void setup() {
  24. Serial.begin(9600); //открываем порт для связи с ПК
  25.  
  26. pinMode(button, INPUT_PULLUP); // настроить пин кнопки
  27.  
  28. radio.begin(); //активировать модуль
  29. radio.setAutoAck(1); //режим подтверждения приёма, 1 вкл 0 выкл
  30. radio.setRetries(0, 15); //(время между попыткой достучаться, число попыток)
  31. radio.enableAckPayload(); //разрешить отсылку данных в ответ на входящий сигнал
  32. radio.setPayloadSize(32); //размер пакета, в байтах
  33.  
  34. radio.openWritingPipe(address[0]); //мы - труба 0, открываем канал для передачи данных
  35. radio.setChannel(0x60); //выбираем канал (в котором нет шумов!)
  36.  
  37. radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  38. radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  39. //должна быть одинакова на приёмнике и передатчике!
  40. //при самой низкой скорости имеем самую высокую чувствительность и дальность!!
  41.  
  42. radio.powerUp(); //начать работу
  43. radio.stopListening(); //не слушаем радиоэфир, мы передатчик
  44. }
  45.  
  46. void loop() {
  47.  
  48. transmit_data[0] = !digitalRead(button); // инвертированный (!) сигнал с кнопки
  49.  
  50. for (int i = 0; i < 3; i++) { // в цикле от 0 до числа каналов
  51. if (transmit_data[i] != latest_data[i]) { // если есть изменения в transmit_data
  52. flag = 1; // поднять флаг отправки по радио
  53. latest_data[i] = transmit_data[i]; // запомнить последнее изменение
  54. }
  55. }
  56.  
  57. if (flag == 1) {
  58. radio.powerUp(); // включить передатчик
  59. radio.write(&transmit_data, sizeof(transmit_data)); // отправить по радио
  60. flag = 0; //опустить флаг
  61. radio.powerDown(); // выключить передатчик
  62. }
  63.  
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement