Передатчик и приемник Ардуино

привет, я использую передатчик и приемник Arduino, он работает правильно с отправкой и получением имени пользователя и пароля, но я бы включил проверку имени пользователя, если он действительно открывает светодиод, я добавил это в код, но кажется, что код игнорирует его (последняя часть), а также я хочу, чтобы он одновременно принимал пароль и имя пользователя

это код восстановления

#include <RH_ASK.h>//включаем библиотеку RadioHead ASK
#include <SPI.h> // включаем зависимую библиотеку SPI

 RH_ASK rf_driver; // создать объект ASK
int ledon = 13;
String userid;
String password;
 //RH_ASK ID1; // создать объект ASK
//RH_ASK pass1; // создать объект ASK

void setup() {

  rf_driver.init(); // инициализируем объект ASK


  Serial.begin(9600); //настройка серийного монитора на 9600

  //если(!rf_driver.init())
       //Serial.print("Ошибка инициализации");
}

void loop() {

  // установить буфер на размер ожидаемого сообщения
  uint8_t buf[9];  
  uint8_t buflen =sizeof(buf);

  //проверить правильность размера полученного пакета
  if (rf_driver.recv(buf,&buflen))
  {
    int i;
    // получено сообщение с корректной контрольной суммой
    Serial.print("id: ");
    Serial.println((char*)buf);
      userid =(char*)buf;
        Serial.println(userid);

  }

delay(5000);

   uint8_t buf2[8];  
  uint8_t buflen2 = sizeof(buf2);

   if (rf_driver.recv(buf,&buflen))

  {

    int i;
    // получено сообщение с корректной контрольной суммой
    Serial.print("password: ");
    Serial.println((char*)buf);
      password = (char*)buf;
      Serial.println(password);

  }
  delay(5000);

while ( userid =="A00034732" && password == "123456789"){
digitalWrite(ledon, HIGH);
delay(2000);
digitalWrite(ledon, LOW);

}
}

код передатчика ----

//Включаем библиотеку шифт-кеинга RadioHead Amplitidue
#include <RH_ASK.h>
// Подключаем зависимую библиотеку ISP
#include <SPI.h>

//создаем объект с амплитудной манипуляцией
RH_ASK rf_driver;


void setup() {
 // инициализируем объект ASK
rf_driver.init();

Serial.begin(9600);

  //если(!rf_driver.init())
      //Serial.print("Ошибка инициализации");

}

void loop() 
{

  const char *pass= "123456789";
rf_driver.send((uint8_t *)pass, strlen(pass));
rf_driver.waitPacketSent();
delay(5000);

const char *ID= "A00034732";

rf_driver.send((uint8_t *)ID, strlen(ID));
rf_driver.waitPacketSent();
delay(5000);

//const char *pass= "12345678";
//rf_driver.send((uint8_t *)pass, strlen(pass));
//rf_driver.waitPacketSent();
// задержка (5000);


}

, 👍0


1 ответ


1

Вы не сравниваете строки — вы сравниваете адреса строк. Используйте strcmp().

while ( 
    (strcmp(userid, "A00034732") == 0) && 
    (strcmp(password, "123456789") == 0)
) {
,

Я хочу преобразовать его в целое число, @amal