матричная клавиатура + 433мгц нужна помощь

Тема в разделе "Arduino & Shields", создана пользователем artemon25, 11 июн 2016.

  1. artemon25

    artemon25 Нуб

    Добрый всем вечер нужна помощь в одном моменте хотелось бы чтоб калитка открывалась с матричной клавиатуры 3*4 и с пульта на 433мгц. имею скетч на работу реле и матричной клавы обе работают попытался их объеденить но при заливке скетча клава работает а вот радиосигнал нет и в мониторе порта радиосигнал не проходит в чём может быть причина. выкладывю скетч работы реле с пульта и втрой клавиатура

    Код (C++):
    #include <RCSwitch.h>

    RCSwitch mySwitch = RCSwitch();
    int relay = 10; //Реле будет тут
    int analogData=0; //тут будут храниться данные с АЦП пин 0
    int ledstate=0; //переменная состояния вкл-выкл

    void setup() {
      Serial.begin(9600);
      mySwitch.enableReceive(0);  // приемник на pin 2 (DATA)
      pinMode(relay7, OUTPUT);
      digitalWrite(relay7, LOW);
    }
    void loop() {
       

        if (mySwitch.available()) {
       
        int value = mySwitch.getReceivedValue();
       
        if (value == 0) {
          Serial.print("error code"); // Ошибка приемка кода
        } else {
          Serial.print("code good"); // Принял код
          Serial.print( mySwitch.getReceivedValue() );

        }
        if (mySwitch.getReceivedValue() == 7688384) {   // 6133332 - код Включения1
          digitalWrite(relay, HIGH);
        }
         if (mySwitch.getReceivedValue() ==  7688204) {   // 6133392 - код выключения1
          digitalWrite(relay, LOW);
    mySwitch.resetAvailable();
    }
    }
    }
     
    а вот и второй
    Код (C++):
    #include <Password.h>
    #include <Keypad.h>

    Password password = Password("2405");  // password
    int dlugosc = 4;                        // length of the password

    int ledRed = 11;
    int ledGreen = 12;
    int buzzer = 13;
    int relay = 10;
    int ilosc; // number of clicks
    const byte ROWS = 4; // rows
    const byte COLS = 3; // cols
    char keys[ROWS][COLS] =
    {
      {'1','2','3'},
      {'4','5','6'},
      {'7','8','9'},
      {'*','0','#'}
    };
    byte rowPins[ROWS] = {2,3,4,5};
    byte colPins[COLS] = {6,7,8};
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    void setup()
    {
      Serial.begin(9600);
      keypad.addEventListener(keypadEvent);
      pinMode(ledRed, OUTPUT);
      pinMode(ledGreen, OUTPUT);
      pinMode(buzzer, OUTPUT);
      pinMode(relay, OUTPUT);
      digitalWrite(ledRed, HIGH);
      digitalWrite(ledGreen, LOW);
    digitalWrite(relay, HIGH);
    }
    void loop()
    {
      keypad.getKey();
    }
    void keypadEvent(KeypadEvent eKey)
    {
      switch (keypad.getState())
      {
        case PRESSED:
         
    int i;
    for( i = 1; i <= 1; i++ )
    {
      digitalWrite(buzzer, HIGH);
      delay(50);          
      digitalWrite(buzzer, LOW);
      delay(50);
     
    }  
    Serial.print("Pressed: ");
    Serial.println(eKey);
    switch (eKey)

     
    {
    /*
    case '#':
    break;
    case '*':
    break;
    */

    default:
    ilosc=ilosc+1;
    password.append(eKey);
    }
    //Serial.println(ilosc);
    }

    if(ilosc == dlugosc)
    {
    delay(250);
    checkPassword();
    ilosc = 0;
    }
    }

    void checkPassword()
    {
      if (password.evaluate())
      {
    int i;
    for( i = 1; i <= 2; i++ )
    {
      digitalWrite(buzzer, HIGH);
      delay(70);          
      digitalWrite(buzzer, LOW);
      delay(70);    
    }  
        ilosc = 0;
        password.reset();

        Serial.println("Success");  
        digitalWrite(ledRed, LOW);
        digitalWrite(ledGreen, HIGH);
         digitalWrite(relay, LOW);
         delay (5000);
          digitalWrite(ledGreen, LOW);
          digitalWrite(relay, HIGH);
           digitalWrite(ledRed, HIGH);
         
    }
    else
      {
    int i;
    for( i = 1; i <= 1; i++ )
    {
      digitalWrite(buzzer, HIGH);
      delay(200);          
      digitalWrite(buzzer, LOW);
      delay(200);    
    }
        ilosc = 0;
        password.reset();
        Serial.println("Wrong");
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledRed, HIGH);
        digitalWrite(relay, HIGH);
      }
      }
     
     
  2. artemon25

    artemon25 Нуб

    я сам пробовал объеденить скетчи и уменя вот что получилось
    Код (C++):
    #include <Password.h>
    #include <Keypad.h>
    #include <RCSwitch.h>


    RCSwitch mySwitch = RCSwitch();
    Password password = Password("2405");  // password
    int dlugosc = 4;                        // length of the password
    int ledRed = 11;
    int ledGreen = 12;
    int buzzer = 13;
    int relay = 10;
    int analogData=0; //тут будут храниться данные с АЦП пин 0
    int ledstate=0; //переменная состояния вкл-выкл
    int ilosc; // number of clicks
    const byte ROWS = 4; // rows
    const byte COLS = 3; // cols
    char keys[ROWS][COLS] =
    {
      {'1','2','3'},
      {'4','5','6'},
      {'7','8','9'},
      {'*','0','#'}
    };
    byte rowPins[ROWS] = {9,3,4,5};
    byte colPins[COLS] = {6,7,8};
    Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
    void setup()
    {
      Serial.begin(9600);
      mySwitch.enableReceive(0);  // приемник на pin 2 (DATA)
      keypad.addEventListener(keypadEvent);
      pinMode(ledRed, OUTPUT);
      pinMode(ledGreen, OUTPUT);
      pinMode(buzzer, OUTPUT);
      pinMode(relay, OUTPUT);
      digitalWrite(ledRed, HIGH);
      digitalWrite(ledGreen, LOW);
    digitalWrite(relay, HIGH);
    }
    void loop()
       
    {
      keypad.getKey();
    }

    void keypadEvent(KeypadEvent eKey)
    {
      switch (keypad.getState())
      {
        case PRESSED:
         
    int i;
    for( i = 1; i <= 1; i++ )
    {
      digitalWrite(buzzer, HIGH);
      delay(50);          
      digitalWrite(buzzer, LOW);
      delay(50);
     
    }  
    Serial.print("Pressed: ");
    Serial.println(eKey);
    switch (eKey)

     
    {
    /*
    case '#':
    break;
    case '*':
    break;
    */

    default:
    ilosc=ilosc+1;
    password.append(eKey);
    }
    //Serial.println(ilosc);
    }

    if(ilosc == dlugosc)
    {
    delay(250);
    checkPassword();
    ilosc = 0;
    }
    }

    void checkPassword()
    {
      if (password.evaluate())
      {
    int i;
    for( i = 1; i <= 2; i++ )
    {
      digitalWrite(buzzer, HIGH);
      delay(70);          
      digitalWrite(buzzer, LOW);
      delay(70);    
    }  
        ilosc = 0;
        password.reset();

        Serial.println("Success");  
        digitalWrite(ledRed, LOW);
        digitalWrite(ledGreen, HIGH);
         digitalWrite(relay, LOW);
         delay (5000);
          digitalWrite(ledGreen, LOW);
          digitalWrite(relay, HIGH);
           digitalWrite(ledRed, HIGH);
         
    }
    else
      {
    int i;
    for( i = 1; i <= 1; i++ )
    {
      digitalWrite(buzzer, HIGH);
      delay(200);          
      digitalWrite(buzzer, LOW);
      delay(200);    
    }
        ilosc = 0;
        password.reset();
        Serial.println("Wrong");
        digitalWrite(ledGreen, LOW);
        digitalWrite(ledRed, HIGH);
        digitalWrite(relay, HIGH);
        {
         
        if (mySwitch.available()) {
       
        int value = mySwitch.getReceivedValue();
       
        if (value == 0) {
          Serial.print("error code"); // Ошибка приемка кода
        } else {
          Serial.print("code good"); // Принял код
          Serial.print( mySwitch.getReceivedValue() );

        }
        if (mySwitch.getReceivedValue() == 7688384) {   // 6133332 - код Включения1
          digitalWrite(relay, HIGH);
        }
         if (mySwitch.getReceivedValue() ==  7688204) {   // 6133392 - код выключения1
          digitalWrite(relay, LOW);
     
          mySwitch.resetAvailable();
      }
    }
        }
      }
    }
    может быть delay мешает или я как то не так написал скетч
    всем заранее спасибо за помощь
     
  3. NikitOS

    NikitOS Король шутов Администратор

    /
    case '#':
    break;
    case '*':
    break;
    */
    это что