Нужно на led дисплее в tinkercad вывести горит лампочка или нет, если горит то допустим поставить точку (готовая схема LED).Точка горит постоянно.Знаю ошибка скорее всего очень глупая но подскажите пж Код (C++): 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("."); }
Как-то я вообще не могу понять логику вашего кода. Вначале вы поочерёдно, на одну секунду, зажигаете светодиоды на пинах 6, 7, 8. Затем вы проделываете ту-же операцию в обратном порядке. Потом, когда все светодиоды погашены вы начинаете проверять их состояние. Естественно вы получаете всегда LOW. В выводе информации на экран особо не разбирался. Если что - опишите как вы хотели это видеть на экране.
Смотрите,мне нужно подавать на этот экран какой-либо знак допустим "." когда светодиод к примеру 6 включен,когда он выключен под ним поле должно быть пустое
Так у вас всегда и будет точка. Вы же перед проверкой все светики тушите. Вы не забыли про if else? много лишних операций, может, из-за них вы и запутались?
Скорее всего так и есть т.к. я в этом мало понимаю и не совсем понял этот материал.Буду ооочень благодарен если болеее конкретно
Cyp41k, учитесь чётко формулировать ваши желания. Без этого в программировании очень трудно. Я спросил в ответ какие-то пространные рассуждения о включении точки не понятно где. Микроконтроллер чётко будет выполнять все ваши команды, но команды должны быть чёткими и понятными. Угадывать ваши желания он не может. Так-же ни кто на форуме угадывать ваши хотелки не будет. Так вот, пока я не в курсе вашей задумки могу посоветовать одно. Выводите знак включения светодиода сразу после его включения и гасите его сразу после его выключения.
Чучуть поменял код.Да я забыл упоменуть что в задании было указано что нужно сделать светлофор из светодтодов потом после этого вывести на дисплей номера лампочек и под ними на рядок ниже сделать что бы когда горит лампочка 1 под ней на дисплее была точка ,когда она не горит под ней ничего.И так с каждой лампочкой Код (C++): 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(){ digitalWrite(8,HIGH); delay(500); digitalWrite(8,LOW); digitalWrite(7,HIGH); delay(500); digitalWrite(7,LOW); digitalWrite(6,HIGH); delay(500); digitalWrite(6,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("."); }
Ну так вынесите Код (C++): lcd.setCursor(0,0); lcd.print("123"); в setup а дальше как я вам советовал например для светодиода 1 Код (C++): digitalWrite(6,HIGH); lcd.setCursor(0,1); lcd.print("."); delay(500); digitalWrite(6,LOW); lcd.setCursor(0,1); lcd.print(" "); Для остальных аналогично, только знакоместо укажите правильно.