demoss

приемник№2

Jul 30th, 2021
841
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*   Данный скетч делает следующее: передатчик (TX) отправляет массив
  2.      данных, который генерируется согласно показаниям с кнопки и с
  3.      двух потенциомтеров. Приёмник (RX) получает массив, и записывает
  4.      данные на реле, сервомашинку и генерирует ШИМ сигнал на транзистор.
  5.     by AlexGyver 2016
  6. */
  7. #define STRIP_PIN 5     // пин ленты
  8. #define NUMLEDS 8      // кол-во светодиодов
  9. #define COLOR_DEBTH 3
  10.  
  11.  
  12.  // подключаем библу
  13. #include <SPI.h>
  14. #include "nRF24L01.h"
  15. #include "RF24.h"
  16. #include "printf.h"
  17. #include <microLED.h>  
  18. microLED<NUMLEDS, STRIP_PIN, MLED_NO_CLOCK, LED_WS2812, ORDER_GRB, CLI_AVER> strip;
  19. RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно
  20. //RF24 radio(9,53); // для Меги
  21.  
  22.  
  23. uint16_t recieved_data[1]; // массив принятых данных
  24. uint16_t latest_data[1];
  25. int flag; // флажок отправки данных
  26. byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
  27.  
  28. void setup() {
  29.   Serial.begin(9600); //открываем порт для связи с ПК
  30.   flag = 1;
  31.   recieved_data[0] = 0x0;
  32.   radio.begin(); //активировать модуль
  33.   radio.setAutoAck(true);         //режим подтверждения приёма, 1 вкл 0 выкл
  34.   radio.setRetries(0, 15);    //(время между попыткой достучаться, число попыток)
  35.   radio.enableAckPayload();    //разрешить отсылку данных в ответ на входящий сигнал
  36.   radio.setPayloadSize(32);     //размер пакета, в байтах
  37.  
  38.   radio.openReadingPipe(1, address[0]);     //хотим слушать трубу 0
  39.   radio.setChannel(0x66);  //выбираем канал (в котором нет шумов!)
  40.  
  41.   radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  42.   radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  43.   //должна быть одинакова на приёмнике и передатчике!
  44.   //при самой низкой скорости имеем самую высокую чувствительность и дальность!!
  45.  
  46.   radio.powerUp(); //начать работу
  47.   radio.startListening();  //начинаем слушать эфир, мы приёмный модуль
  48.     strip.setBrightness(255);
  49.   delay(500);
  50. }
  51.  
  52. void loop() {
  53.   static int dir = 1;
  54.   static int bright = 255;
  55.   byte pipeNo;
  56.   while ( radio.available(&pipeNo)) {  // слушаем эфир со всех труб
  57.     radio.read( &recieved_data, sizeof(recieved_data) );  
  58.     // чиатем входящий сигнал
  59.  if (recieved_data[0] == 0x1) { // если есть изменения в recieved_data
  60.       strip.setBrightness(255); //задаем яркость
  61.       strip.fill(mGreen);       //заливаем зеленым
  62.       strip.show();             //послали на ленту
  63.       Serial.println("green");
  64.       latest_data[0] = recieved_data[0]; // запомнить последнее изменение
  65.  
  66.     }
  67.      if (recieved_data[0] == 0x2) { // затухание зеленого
  68.         bright = 255;
  69.               strip.fill(mGreen);
  70.         latest_data[0] = recieved_data[0];
  71. while (bright > 0) {      //пока яркость выше 0
  72.     bright --;    // 5 - множитель скорости изменения
  73.   strip.setBrightness(bright); //присваиваем  значение яркости
  74.   strip.show();               //выводим на ленту
  75.   delay(5);
  76.  
  77. }
  78. }
  79.      if (recieved_data[0] == 0x3) { // если есть изменения в recieved_data
  80.       strip.setBrightness(255);   //задаем яркость
  81.       strip.fill(mRed);           //заливаем ленту красным
  82.       strip.show();              //послали на ленту
  83.       Serial.println("red");
  84.       latest_data[0] = recieved_data[0]; // запомнить последнее изменение
  85.  
  86.     }
  87.      if (recieved_data[0] == 0x4) { // если есть изменения в recieved_data
  88.         bright = 255;
  89.               strip.fill(mRed);
  90.         latest_data[0] = recieved_data[0];
  91. while (bright > 0) {      //пока яркость выше 0
  92.     bright --;    // 5 - множитель скорости изменения
  93.   strip.setBrightness(bright); //присваиваем  значение яркости
  94.   strip.show(); //
  95.   delay(5);
  96.   }
  97.   }
  98. }
  99. }
RAW Paste Data