+2 голосов

Нужно на led дисплее в tinkercad вывести горит лампочка или нет, если горит то допустим поставить точку (готовая схема LED).Точка горит постоянно.Знаю ошибка скорее всего очень глупая но подскажите пж

int state = 0;
int led1=6;
int led2=7;
int led3=8;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
void setup (){
lcd.begin(16,2);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
}

void loop(){
  for(int i=6; i<9; i++)
  {
  digitalWrite(i,HIGH);
  delay(1000);
  digitalWrite(i,LOW);
  }
  for(int i=8; i<5; i--)
  {
  digitalWrite(i,HIGH);
  delay(1000);
  digitalWrite(i,LOW);
  }
lcd.setCursor(0,0);
lcd.print("123"); 
state = digitalRead (led1);
  if(state == HIGH ){
    lcd.setCursor(0,1);
    lcd.print("1");
  }
    state = digitalRead (led1);
  if(state == LOW ){
    lcd.setCursor(0,1);
    lcd.print(".");
  }
state = digitalRead (led2);
  if(state == HIGH )
    lcd.print("2");
state = digitalRead (led2);
  if(state == LOW )
    lcd.print(".");
state = digitalRead (led3);
  if(state == HIGH )
    lcd.print("3");
state = digitalRead (led3);
  if(state == LOW )
    lcd.print(".");
  }

(7 баллов) 1 2

1 Ответ

+2 голосов
 
Лучший ответ

Начнем с начала.

int state = 0;

int — целочисленный тип. Вы туда пихаете результат от digitalRead, который является булеым (bool / boolean) значением (true / false). 

state = digitalRead (led1);
...
state = digitalRead (led2);
...
state = digitalRead (led3);

У Вас одна переменная сразу на три пина? Создайте для каждого свой, только с булевым типом (см. выше).

if(state == HIGH )

Как я и говорил, digitalRead возвращает булевое значение, следовательно статус будет либо true (истина), либо false (ложь).

Можно сделать так:

if(state) { /* Аналог state == true */ }
if(!state) { /* Аналог state == false */ }

Кстати, считывать состояние перед каждым сравнением (в Вашем случае) не обязательно. Можно считать только один раз, а потом использовать.

(1.6 тыс. баллов) 3 9 33
выбран
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. KrSV

    2 балл(ов)

  2. Палыч

    2 балл(ов)

  3. Дамир

    2 балл(ов)

  4. lcco

    2 балл(ов)

  5. Ergamister

    2 балл(ов)

  6. Александр312

    2 балл(ов)

...