Помогите решить проблемму с передатчиком переменных на библиотеке RCSwitch.h

Тема в разделе "Arduino & Shields", создана пользователем ToxaRU, 1 окт 2015.

  1. ToxaRU

    ToxaRU Гик

    Вот такой код склепал он работает хорошо, но больно медленно(раз в секунду примерно цикл) основное время уходит на отправку как я понимаю, так вот хотел попросить помочь реализовать отправку допустим раз в 5 секунд наверное через millis? или еще как чтобы можно было на экране быстро менять переменную а отправлялась с интервалами.....

    Код (C++):
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27,16,2);
    #include <RCSwitch.h>

    RCSwitch mySwitch = RCSwitch();

    int q;
    int z;
    int q1; //переменная для конвертации
    int z1; //переменная для конвертации

    #define key1  300000
    #define key2  303000

    void setup() {
    lcd.init();
    lcd.backlight();
    Serial.begin(9600);
    lcd.setCursor(0, 0);                   // Устанавливаем курсор в начало 2 строки
      String s = "START ARDUINO";
    for (int i = 0; i < s.length(); i++) { lcd.print(s[i]); delay(100); }

      mySwitch.enableTransmit(8); // пин,на который подключен передатчик
     
    randomSeed(analogRead(0));
    }

    void loop() {
     
      delay(20); // Защита от скачков напряжения тока.
      int q = analogRead(A0); // Чтоб не засорять радио эфир, отправим данные только, если обнаружим изменения на PIN (A0).
      int z = analogRead(A1); // Чтоб не засорять радио эфир, отправим данные только, если обнаружим изменения на PIN (A1).
     
    q = map(q, 0, 1023, 0, 120); // Конвертируем значения
    z = map(z, 0, 1023, 0, 120); // Конвертируем значения
    q1 = map(q, 0, 120, 0, 360); // Конвертируем значения для вывода в монитор и на экран
    z1 = map(z, 0, 120, 0, 180); // Конвертируем значения для вывода в монитор и на экран

    sendRC(q+key1);

    sendRC(z+key2);

    lcd.clear();
    lcd.print("Horizont -- ");
      lcd.print(q1);            // Выводим текст
      lcd.setCursor(0, 1);   // Устанавливаем курсор в начало 2 строки
      lcd.print("Vertical -- ");
      lcd.print(z1);              // Выводим текст
       Serial.print(q1);
       Serial.print(z1);
     
    digitalWrite(13, LOW);

    }

    // подпрограмма отправки данных
    void sendRC(unsigned long code) {
     
    mySwitch.send(code, 20);

    }
     
  2. ToxaRU

    ToxaRU Гик


    Все сделал сам))) через millis все просто раз в 5 сек отправляем а все остальное не тормозит..еще и притормаживать пришлось)))