Проблема с LCD
- Войдите на сайт для отправки комментариев
Втр, 14/08/2018 - 03:54
Здравствуйте
Я пытаюсь добавить LCD к этой программе, но последние две строки вызывают проблему.
Когда я включаю однлу из них, импульсы на PC13 исчезают.
Пожалуйста, помогите мне это исправить.
#include <LiquidCrystal.h> //#include <math.h> LiquidCrystal lcd(PA0, PA1, PA2, PA3, PA4, PA5); const int buttonPin1 = PB10; // the number of the pushbutton1 pin const int buttonPin2 = PB11; // the number of the pushbutton2 pin const int ledPin = PC13; // the number of the LED pin // variables will change: int buttonState1 = 0; // variables for reading the pushbutton status int buttonState2 = 0; ///////////// float pulsewidth = 0; float phase = 0; //////////////// void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin1, INPUT_PULLDOWN); pinMode(buttonPin2, INPUT_PULLDOWN); lcd.begin(16, 2); } void loop() { /////////////// //pulsewidth = digitalWrite (PC13, LOW ); pulsewidth = (ledPin, LOW); ////////////// // read the state of the pushbuttons value: buttonState1 = digitalRead(buttonPin1); buttonState2 = digitalRead(buttonPin2); // check if the pushbuttons is pressed. // Based on the pushbutton status and truth table of XOR, turn on or off the LED at Pin 13 if ((buttonState1 == HIGH && buttonState2 == LOW) || (buttonState1 == LOW && buttonState2 == HIGH)) { // turn LED on: digitalWrite(ledPin, HIGH); } else { // turn LED off: digitalWrite(ledPin, LOW); } ///////////////////////// lcd.setCursor(0, 0); //lcd.print("Ph="); // lcd.print( pulsewidth); //////////////////////// }
Не будете ли так любезны сообщить какой микроконтроллер или плата используется? Может я чего не понимаю, но как может int принимать значение PB10?
Что делает строка 29?
STM32F103
Может я чего не понимаю, но как может int принимать значение PB10?
Что делает строка 29?
Василий, PB10 - это макрос обозначения пина для STM32Duino, как например пин А2 для Уно/Нано.
А вот строка 29 действительно интересна :))))
Все понятно. Обфускация.
просто бред.
Вы хоть чуть-чуть в Си понимаете? - имхо нет
бред или не бред, но ответа на проблему нет.
бред или не бред, но ответа на проблему нет.
а в чем заключается "импульсы на PC13 исчезают" ? Случаем не то, что pulsewidth - ноль? - он в вашем коде и должен быть ноль, всегда.
На PB10 и PB11 подаются прямоугольные импульсы, на PC 13 - их разность.
Как я уже сказал, проблема заключается в последних двух строках
На PB10 и PB11 подаются прямоугольные импульсы, на PC 13 - их разность.
Как я уже сказал, проблема заключается в последних двух строках
В этом коде нет и намека на вычисление разности двух импульсов. Проблема вовсе не в ЛСД, он абсолютно не при чем. Замените вывод на дисплей обычным выводом в Сериал - ситуация не изменится.
Проблема в том, что вы даже приблизительно не понимаете, что нужно написать в коде...
строка #37 вычитывает = ХОR функция
строка #37 вычитывает = ХОR функция
Ты не поверишь, но в указанной строке нету ни одного XOR.
строка #37 вычитывает = ХОR функция
под разностью импульсов обычно понимают разность их длительности. Где тут измеряется длительность?
Или вы под разностью импульсов понимаете разность логических состояний двух входов?
Тем не менее, вы так и не ответили, в чем заключается проблема "пропадения импульсов" при подключении двух последних строк? - опишите подробно
Ты не поверишь, но в указанной строке нету ни одного XOR.
судя по всему, под "разностью импульсов" понимается банальное
if (buttonStatt1 != buttonState2)
На PB10 и PB11 подаются прямоугольные импульсы, на PC 13 - их разность.
Как я уже сказал, проблема заключается в последних двух строках
Проблема вовсе не в ЛСД, он абсолютно не при чем.
Проблема в том, что вы даже приблизительно не понимаете, что нужно написать в коде... = ?
загрузил так - импульсов нет
Разница линия # 49
я ж вам написал - опишите подробно! А вы мне снова свой код лепите.
импульсов нет - что это значит? диод не мигает?или мигает, но не с той частоой? или горит постоянно?
Я подключил осциллограф, на PC13 напряжение 0В после включения линии № 49
а если строки 48 и 49 перенести в Сетап после строки 23?
Тогда импульсы есть , но на LCD Ph=0.00
а если строки 48 и 49 перенести в Сетап после строки 23?
здесь отчет будет только один раз
Тогда импульсы есть , но на LCD Ph=0.00
ну, Ph то у вас так и так всегда будет ноль, ибо строка 29 ничего не меряет
А как сделать чтобы измеряла ?
загрузил так - импульсы есть
...
Очередной случай проявления сущности лживого и беспринципного Си.
А как сделать чтобы измеряла ?
а что именно вы хотите измерить?
длину импульсов в микросекундах
длину импульсов в микросекундах
длину импульсов в микросекундах
как убрать лишное сообщение ?
Не писать сюда больше
DIYMan
или так
pinOutState = pinAState ^ pinBState;
длину импульсов в микросекундах
у вас в коде, как я уже писал - нет даже намека на измерение импульсов. Вы бы хоть какой-нибудь код привели, как вы пытались это делать - или вы ждете что вам этот код с нуля напишут?
Для затравки подсказываю куда копать - надо засечь время в момент одного фронта импульса, потом дождаться второго фронта, снова засечь время и вычесть из второго времени первое. Сейчас в коде у вас работы со временем нет вовсе.
сперва надо чтобы ЛСД работало а потом это.
https://www.arduino.cc/reference/en/language/functions/advanced-io/pulsein/
= Похоже на строку #29 = не с нуля