Когда пишу if (Serial.read() == 'qwerty') arduino не правильно понимает

278
07 февраля 2018, 13:36
//Первая arduino, отправляющая значение
#include <Wire.h>
void setup()
{
  Wire.begin(2);                // подключаем шину I2C с адресом #2
  Wire.onRequest(requestEvent); // зарегистрированное событие, которое будет возникать в ответ на вопрос
}
void loop()
{
;  delay(100);
}
// Эта пользовательская функция будет выполняться всякий раз,
// Она зарегистрирована как событие (см. блок setup).
void requestEvent()
{
  Wire.write("qwerty"); // отвечаем сообщением из 6 байтов, как ведущая плата того и ждет
}

Тут вроде все норм, а снизу неочень

//Вторая, которая по задумке должна зажигать светодиод
#include <Wire.h>
void setup()
{
  Wire.begin();         
  Serial.begin(9600);  
  pinMode(13, OUTPUT);
}
void loop()
{
  Wire.requestFrom(2, 6);    
  while(Wire.available())    
  {
   char c = Wire.read(); 
   Serial.print(c);          
  }
  if (Serial.read() == 'qwerty'){
     digitalWrite(13, HIGH);     
  }
   delay(500);
}

Но тут не задачка, if попросту не понимает условия т.е.

if (Serial.read() == 'qwerty')
Answer 1
  1. Одинарные кавычки означают "символ", то бишь, литерал типа char.
  2. Двойные кавычки означают "строка", то бишь массив char в самом простом случае.

Из найденного в интернете

Serial.readString()

читает строку с Serial порта. То есть если эта функция работает, то итоговый код должен выглядеть так:

if(Serial.readString() == "qwerty")
{
    //Ваши действия
}

P.S. С ардуино давно не игрался, информация чисто из интернета и опыта.

Answer 2

Это же C++, а не Python или Java.

void setup() {
   Serial.begin(57600);
}
void loop() {
   if (Serial.available() >= 6) {
      String str = Serial.readString();
      if (str == "qwerty")
         Serial.println("true");
      else
         Serial.println("false");
   }
}
READ ALSO
ошибка компиляции при использовании std::bind2nd

ошибка компиляции при использовании std::bind2nd

Очень долго старался понять в чем же ошибка, когда я использую std::bind2nd

223
Путь к файлу программы без консоли. С++

Путь к файлу программы без консоли. С++

Всем привет, мне нужно узнать программно где лежат файл программы

291
Нужна помощь, чтобы разобраться в задаче [требует правки]

Нужна помощь, чтобы разобраться в задаче [требует правки]

Дан одномерный массивНайти количество различных чисел в этом массиве, используя функцию сортировки

262
Проблема синхронизации потоков в Embarcadero Builder C++

Проблема синхронизации потоков в Embarcadero Builder C++

Пишу оконное приложение на Embarcadero C++ Builder XE7, ОС Windows 7В нем при запуске главной формы создается, но сразу не запускается поток

240