Противофазное включение Led c помощью оператора if...else...

Wiring, Processing, библиотеки

Противофазное включение Led c помощью оператора if...else...

Сообщение Rizvan » 17 сен 2015, 22:53

Я только недавно начал увлекаться Arduino и возникло масса вопросов, которые еще стоит узнать.

Как с помощью управляющего оператора if...else... или просто if , заставить противофазно гореть два светодиода. Пытался написать, а выходили ошибки и не получалось :(
Вот что написал....

Код: Выделить всё
const int ledPin1 = 3;
const int ledPin2 = 9;

void setup ()
{  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);  }

void loop ()
{ digitalWrite(ledPin1, HIGH);
  delay(250);

  digitalWrite(ledPin2, LOW);
  delay(250);

  if (ledPin1=HIGH)
  {    digitalWrite(ledPin2, LOW);  }
else
{
  digitalWrite(ledPin2, HIGH);
  }}

и выдает ошибку

Код: Выделить всё
sketch_sep17a.ino: In function 'void loop()':
sketch_sep17a:27: error: assignment of read-only variable 'ledPin1'
assignment of read-only variable 'ledPin1'
Rizvan
 
Сообщения: 2
Зарегистрирован: 17 сен 2015, 21:19

Re: Противофазное включение Led c помощью оператора if...els

Сообщение admin » 18 сен 2015, 10:07

В строчке:
Код: Выделить всё
if (ledPin1=HIGH)

заметна классическая опечатка. Вместо сравнения вы пытаетесь выполнить операцию присваивания.

Нужно:
Код: Выделить всё
if (value == HIGH)


Но так как ledPin1 у вас объявлена неизменной:
Код: Выделить всё
const int ledPin1 = 3;

, то компилятор ругается, что вы пытаетесь изменить константную переменную.

Но это всё синтаксис. Главное у вас вообще неправильная логика.
Правильно было бы как-то так:
Код: Выделить всё
const int ledPin1 = 3;
const int ledPin2 = 9;

// текущее состояние
int led_state = HIGH;

void setup ()
{
    pinMode(ledPin1, OUTPUT);
    pinMode(ledPin2, OUTPUT);
}

void loop ()
{
    if (led_state) {
        digitalWrite(ledPin1, HIGH);
        digitalWrite(ledPin2, LOW);
    }
    else {
        digitalWrite(ledPin1, LOW);
        digitalWrite(ledPin2, HIGH);
    }
    led_state = !led_state;
    delay(500);
}
Аватара пользователя
admin
Администратор
 
Сообщения: 315
Зарегистрирован: 05 май 2011, 14:57
Откуда: Калининград

Re: Противофазное включение Led c помощью оператора if...els

Сообщение Rizvan » 19 сен 2015, 08:38

admin: Простите, следующие вопросы....

int led_state = HIGH; // как это выражение понять? какому порту мы присвоили Высокий уровень?

led_state = !led_state; // а здесь получается , если он высокий его делают низким и наоборот...
Rizvan
 
Сообщения: 2
Зарегистрирован: 17 сен 2015, 21:19

Re: Противофазное включение Led c помощью оператора if...els

Сообщение admin » 19 сен 2015, 11:44

Рекомендую к прочтению - Блокнот программиста Arduino (PDF 1.3 Mb).

Rizvan писал(а):int led_state = HIGH; // как это выражение понять? какому порту мы присвоили Высокий уровень?

- это просто переменная

Rizvan писал(а):led_state = !led_state; // а здесь получается , если он высокий его делают низким и наоборот...

да.
Аватара пользователя
admin
Администратор
 
Сообщения: 315
Зарегистрирован: 05 май 2011, 14:57
Откуда: Калининград


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

cron
© 2009-2017 |  О проекте  |  Политика Конфиденциальности  |