Мост Уитстона.
- Войдите на сайт для отправки комментариев
Пт, 12/04/2019 - 19:05
Приветствую!
В мосту два фоторезистора, один для дневного света, на другой падает свет от светодиода, яркость диода зависит от "i".
После нажатия кнопки напряжениеna на PA7 должно быть минимальным, строки 45-56
Редко , но иногда мост настраиваться на минимуму.
В программе есть проблема с надежным определением минимума.
Подскажите как это исправить ?
HardwareTimer pwmtimer4(4); #include "EmonLib.h" #include <LiquidCrystal.h> LiquidCrystal lcd(PA0, PA1, PA2, PA3, PA4, PA5); EnergyMonitor emon1; float cur, acur[50], sumc; int i = 0; int ovfi = 0; int (Irms) = 0; int currentIrms = 0; int previousIrms; int maxIrms = 0; int minIrms = 4095.0; void setup() { pwmtimer4.pause(); pwmtimer4.setPrescaleFactor(3); pwmtimer4.setOverflow(2000); //pwmtimer4.setCompare(TIMER_CH2, 2880); pwmtimer4.refresh(); pwmtimer4.resume(); pinMode(PB7, PWM); //duty regulated for balance pinMode(PB6, INPUT_PULLDOWN); pinMode(PB9, INPUT_PULLDOWN); pinMode(PA7, INPUT); // Irms lcd.begin(16, 2); emon1.current(PA7, 2.8); } void loop() { ovfi = 3000 - i; pwmtimer4.setCompare(TIMER_CH2, i); previousIrms = currentIrms; currentIrms = analogRead(PA7); if (digitalRead(PB9) == HIGH) { if (currentIrms != minIrms) { if (previousIrms > currentIrms) { i++; } else { i --; } } } lcd.setCursor(0, 1); lcd.print( currentIrms); //lcd.print( minValue); lcd.setCursor(8, 1); lcd.print( i); //delay(100); emon1.calcVI(20, 2); float Irms = emon1.Irms; lcd.setCursor(0, 0); lcd.print("U="); lcd.print(Irms); //delay (500); }
пожалуй подпишусь
И в чём именно она состоит?
Не понял для чего нажимается кнопка, что должно произойти и т.п.
Более понятного объяснения не будет?
Тогда разбирайтесь сами.
Ну, можно добавить
И тогда i никогда не будет отрицательным.
Вывод i сделан ШИМом, знач яркость светодиода будет зависить от i только в среднем, за время существенно более периода ШИМа, а не мгновенно. А в стр.43 вводится пошти мгновенное значение. Отсюда и свистопляска. Надо усреднять введеное и по нему работать. Если устойчивость не потеряется при этом то заработает.
Пытаюсь добавить " if(i<0) i=0; " , открыл скобку и закрыл , но получаю ошибку
@ Logik
В ручной настройке (две кнопки) есть delay, добавил и здесь но не помагает.
//Пытаюсь добавить " if(i<0) i=0; " , открыл скобку и закрыл , но получаю ошибку
ууу как все запущено... Короче забей, те не по силам.
Пытаюсь добавить " if(i<0) i=0; " , открыл скобку и закрыл , но получаю ошибку
Ошибка 1: Скобку открыл два раза подряд.
Ошибка 2: Условный оператор if...else применён не правильно.
До строки #10, 3 скобки открыты , после #20, 3 закрыты, #12 до #18 скобки для i
1) Две открытых скобки подряд - строки 10 и 12.
2) Нахрена там скобки, если тело оператора if написано там же, в строке 09 ?
3) Да и вся строка if (i < 0) i = 0; не на своём месте, нельзя её вставлять перед открывающей скобкой предыдущего оператора if. Синтаксиса Вы не знаете и написали полную хрень.
Количество открытых скоб = количество закрытых , когда убрать #10 тога скобка # 24 зекрывает loop
Дело не в количестве скобок... Код в сообщении #7 написан вообще неправильно.
Количество открытых скоб = количество закрытых , когда убрать #10 тога скобка # 24 зекрывает loop
Гена, ты сюда спорить прищел? Или советов более умных людей спрашивать?
Это та знаю , а как написать правильно = не знаю.
Это та знаю , а как написать правильно = не знаю.
че ты знаешь? ты даже данную тебе готовую строку в ставить в готовый код не можешь. Иди давай синтаксис Си учить - и пока не сможешь эту строчку вставить правильно - не возвращайся.
Тому кто 2х2 не знает, нет смысла интегралы обьяснять.
b707
Я не спорю только говорю что происходит когда убрать скобку
b707
Я не спорю только говорю что происходит когда убрать скобку
ну так почитай же книжку какую-нить! Или ты всю программу так писать думаешь - убирая и добавляя скобки наобум?
это if (i < 0) i = 0; равно
Valera19701
Спасибо, программа работает лучше.
Это та знаю , а как написать правильно = не знаю.
Ну, прочитайте Вы хоть какую-нибудь книжку, ну, пожалуйста. Ну, поймите Вы наконец, что нельзя программировать методом тыка.
... Ну, поймите Вы наконец, что нельзя программировать методом тыка.
А всё остальное методом ТЫКА делать можно!!! )))
конечно можна. людей например.
конечно можна. людей например.
главное не пальцем, а то моду взяли, из пробирки...
Вывод i сделан ШИМом, знач яркость светодиода будет зависить от i только в среднем, за время существенно более периода ШИМа, а не мгновенно. А в стр.43 вводится пошти мгновенное значение. Отсюда и свистопляска. Надо усреднять введеное и по нему работать. Если устойчивость не потеряется при этом то заработает.
Спасибо за подсказку, она помогла.