Помогите определить в чем ошибка

int red = 0; 
int blue = 1;

void setup() {
  pinMode(red, OUTPUT);
  pinMode(blue, OUTPUT);
}
  
  
  void loop() {
      
  digitalWrite(red, HIGH); 
  delay(1000);    
  digitalWrite(red, LOW);  
  delay(1000);  
 
    if  (digitalWrite(red, HIGH) ) {
      digitalWrite(blue, HIGH); }
      } 

Получаю ошибку:
In function ‘void loop()’:
20:22: error: could not convert ‘digitalWrite(((uint8_t)red), 1)’ from ‘void’ to ‘bool’

Подскажите, что не так делаю.
Сильно не пинайте пжл.

Что непонятно ? Он вроде ясно пишет, что не может конвертировать тип void в тип bool.
А его это пытаются заставить сделать в строке 17.

Даже интересно, что ты там пытаешься сделать загоняя в условие функцию которая ничего возвращать не умеет ?

ну я вот хочу понять что делаю не так?
я хочу чтобы во время свечения светодиода red, загорался blue,
вот и пытаюсь описать условие.
в изучение пока только до этой темы дошел)))

if (digitalWrite(red, HIGH) ){} Запись не имеет смысла , это не если включён красный светодиод.

Вы не так прочитали тему до которой “дошли”. Перечитайте ещё раз (а если надо, то и ещё, … пока не станет очевидным, что здесь не так).

1 лайк

Надо иттить дальше

1 лайк

Может подскажите, как правильно должно быть?

digitalRead

А может таки прочитаете “тему”. Мы же не можем её за Вас изучить.

Английского совсем не знаете? Функция для чтения значения пина называется digitalRead(), а не Write - что вроде бы логично…

Функцийе digitalWrite() нельзя узнать, горит светодиод или нет.

Ящитаю, это недоработка разрабов Вайринга. Могли бы вернуть Тру, если светодиоТ зажегся. Или если перегорел, тогда Фальш

Тогда заменить, зажечь и вернуть двойной тру!

Спасибо за подсказки)

Я подправил код, но вот второй вопрос, почему тогда синий светодиод не гаснет, а горит постоянно?

digitalWrite(red, HIGH);
delay(500);
digitalWrite(red, LOW);
delay(500);

if (digitalRead(red) == LOW) {
digitalWrite(blue, HIGH); }
else{
digitalWrite(blue, LOW);}

После 14 строки условие в 17 (даже если бы оно было правильно оформлено) не сработает НИКОГДА !

В крайнем коде условие ВСЕГДА верно и диод синий диод всегда горит …

Добавьте в код отладочный вывод в консоль состояния ваших переменных в ключевых точках программы, и многое станет для вас понятнее. Иначе тема разрастется до 100500 постов

int red = 0;                      // пин красного светодиода
int blue = 1;                     // пин синего светодиода

void setup() {
 pinMode(red, OUTPUT);           // назначить пин красного на выход
 pinMode(blue, OUTPUT);          // назначить пин синего  на выход
}

void loop() {

 digitalWrite(red, HIGH);         // вывести на пин красного зачение HIGH (зажечь)
 delay(1000);                     // задержка 1 сек.
 digitalWrite(red, LOW);          // вывести на пин красного зачение LOW (потушить)
 delay(1000);                     // задержка 1 сек.

 if  (digitalRead(red)  == HIGH)    // если красный горит
 {
   digitalWrite(blue, HIGH);      // вывести на пин синего зачение HIGH (зажечь)
 }
}

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

1 лайк

Вы уверены ? LOW тогда depth ???

1 лайк

спасибо))) поправил, привычка))

Спасибо большое)
Я чуть ранее написал.
Не понятно только почему синий светодиод горит постоянно? (

Не бывать тебе проггером.