помогите новичку пожалуйста

ardnew
Offline
Зарегистрирован: 02.03.2016

помогите пожалуйста, с компьютера на ардуино поступают команды в таком виде: "Rele 1", "Rele 2", "Rele 3" (изменить их нельзя)
написал такой код:

   if (Serial.available() > 0)
  {
   char str = Serial.read();  
    if (str == 'Rele 1') digitalWrite(led11, HIGH);
    if (str == 'Rele 2') digitalWrite(led12, HIGH);
    if (str == 'Rele 3') digitalWrite(led13, HIGH);
  }

но не работает, что делаю не так ?
заранее признателен за помощь !

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

#76

axill
Offline
Зарегистрирован: 05.09.2011

ardnew пишет:

помогите пожалуйста, с компьютера на ардуино поступают команды в таком виде: "Rele 1", "Rele 2", "Rele 3" (изменить их нельзя)
написал такой код:

   if (Serial.available() > 0)
  {
   char str = Serial.read();  
    if (str == 'Rele 1') digitalWrite(led11, HIGH);
    if (str == 'Rele 2') digitalWrite(led12, HIGH);
    if (str == 'Rele 3') digitalWrite(led13, HIGH);
  }

но не работает, что делаю не так ?
заранее признателен за помощь !

str это у вас всего один символ, а не строка. Из Serial нужно читать всю строку и сравнивать ее или используя Сишные функции типа strcmp или использовать ардуиновский тип String

axill
Offline
Зарегистрирован: 05.09.2011

kulon пишет:

как минимум не хватает фигурных скобок

if ( условие ) { // выполнять действия }

скобки обязательны когда есть несколько операндов, в данном с ними или без них будет работать одинаково

kulon
Offline
Зарегистрирован: 02.03.2016

Подскажите и мне пожалуйста, сейчас уперся в tone() http://arduino.ru/Reference/Tone 

и 

pulseIn() http://arduino.ru/Reference/PulseIn

пишу

duration = pulseIn(pin, HIGH);

вот если эту duration посылаешь в print в com-port показывет замерянное число (в микросекундах)

вроде все норм

но если хочу использовать это значение в delay или tone

delay (duration)

или 

tone(13, 200, duration);

ардуино не видит значение (число) которое я подразумеваю под duration...принимает его как ноль 

что-то я совсем неправильно понимаю??