модули HC-12

Тема в разделе "Arduino & Shields", создана пользователем MontiMonolitov, 8 янв 2018.

  1. MontiMonolitov

    MontiMonolitov Нерд

    Всех с прошедшими!!!
    Играюсь с модулями HC-12, понадобилась схема на передатчике пять кнопок, на приемнике три выхода (светодиод). Три положения кнопок (все включены, все выключены и комбинация кнопок). Собрал, прошил все работает, но при включенном светодиоде имеется не переодичное моргание. Есть идеи как избавиться от моргания?
    код передатчика
    Код (C++):
    #include <SoftwareSerial.h>

    SoftwareSerial mySerial(2, 3); //RX, TX

    byte buttonState[3]; // массив, хранящий передаваемые данные

    boolean onOff = 0;


    void setup() {
      pinMode(4, INPUT_PULLUP);
      pinMode(5, INPUT_PULLUP);
      pinMode(6, INPUT_PULLUP);
      pinMode(7, INPUT_PULLUP);
      pinMode(8, INPUT_PULLUP);
       pinMode(A3, OUTPUT);    
      pinMode(A4, OUTPUT);    
      pinMode(A5, OUTPUT);    
      mySerial.begin(9600);
      Serial.begin(9600);
    }

    void loop() {
       buttonState[0] = digitalRead(4) && digitalRead(5) && digitalRead(6) && digitalRead(7) && digitalRead(8);//
       buttonState[1] = !digitalRead(4) && !digitalRead(5) && !digitalRead(6) && !digitalRead(7) && !digitalRead(8);
       buttonState[2] = digitalRead(4) && !digitalRead(5) && digitalRead(6) && digitalRead(7) && !digitalRead(8);

      if(buttonState[0] == 1){        // Все кнопки вкл
        mySerial.println(1111);       //Отправляем (1111)
        Serial.println(1111);
       digitalWrite(A5, HIGH);        //
        onOff = 1;                    //Установить boolean в 1
      }
      if(buttonState[0] == 0 && onOff == 1){
        mySerial.println(111);       //Отправляем (111)
        Serial.println(111);
        digitalWrite(A5, LOW);
      }
      if(buttonState[1] == 1){       // Все кнопки выкл
        mySerial.println(2222);      //Отправляем (2222)
        Serial.println(2222);
        digitalWrite(A4, HIGH);
        onOff = 1;                    //Установить boolean в 1
      }
      if(buttonState[1] == 0 && onOff == 1){
        mySerial.println(222);       //Отправляем (222)
        Serial.println(222);
        digitalWrite(A4, LOW);
      }
      if(buttonState[2] == 1){       //Комбинация кнопок
        mySerial.println(3333);      //Отправляем (3333)
        Serial.println(3333);
        digitalWrite(A3, HIGH);
        onOff = 1;                  //Установить boolean в 1
      }
      if(buttonState[2] == 0 && onOff == 1){
        mySerial.println(333);     //Отправляем (333)
        Serial.println(333);
        digitalWrite(A3, LOW);
      }
     
        delay(20);//задержка для лучшей последовательной связи
    }
    Код приемника:
    Код (C++):
    #include <SoftwareSerial.h>

    SoftwareSerial mySerial(2, 3); // RX, TX



    void setup() {
      mySerial.begin(9600);
      pinMode(4, OUTPUT);
      pinMode(5, OUTPUT);
      pinMode(6, OUTPUT);
    }

    void loop() {
     
      if(mySerial.available() > 1){  
        int input = mySerial.parseInt();  
        if(input == 1111){                  //Если при получении кода (1111)
          digitalWrite(4, HIGH);//
        }
        if(input == 111){
          digitalWrite(4, LOW);//
        }
        if(input == 2222){                  //Если при получении кода  (2222)
          digitalWrite(5, HIGH);//
        }
        if(input == 222){
          digitalWrite(5, LOW);//
        }
        if(input == 3333){                  //Если при получении кода (3333)
          digitalWrite(6, LOW);//
        }
        if(input == 333){
          digitalWrite(6, HIGH);//
        }
       
      }
     
     
      delay(20);//задержка для лучшей последовательной связи
    }
     
  2. MontiMonolitov

    MontiMonolitov Нерд

    Все разрешилось, убрал в приемнике Delay
    вот так было с ним и без него
    сделей.jpg безделай.jpg
     
    arkadyf нравится это.