Доброго дня, уважаемые форумчане!
/как то я мучал вас своими “глупыми” вопросами, какими они за частую и являлись, на старом форуме в оккупированной мной теме “проблема функции “millis()”” .
Вот решил продолжить и на новом форуме./
Написал, как мне показалось, рабочую, замечательную программку в несколько строк.
всю отладку провел на уно - без проблем. Залил в Pro Mini, и… насос включается и не отключается, что с датчиком не делай. собственно вопрос - что бы самому разобраться, нужно как то выводить значения в компорт с Pro Mini, но не нашел как это сделать без программатора (прошил через уно), есть способы? (унка у меня китайская, камень не снимается)
Заранее спасибо!
#define sens 0 // назначение пина датчика
#define nasos 12 // назначение пина насоса
int sensvalue, filtr, ss, val_sensvalue; // создание переменных
long T; // создание переменных
boolean statusNasos = digitalRead(nasos); // создание переменной с которой программа считывает статус насоса (вкл/выкл) и считывание сигнала с пина управления насосом
void setup() {
Serial.begin(9600); // инициализация серийного порта с присвоением частоты (удалить)
pinMode(nasos, OUTPUT); // назначение пина выходным
pinMode(sens, INPUT) ; // назначение пина входным
digitalWrite(nasos,LOW); // назначение сигнала на пине (выкл)
sensvalue = analogRead(sens); // считывание значения с датчика и присвоение его переменной
T = millis(); // присвоение переменной текущего значения счетчика времени
}
void loop() {
if(statusNasos == LOW){ // если насос выключен, то
if( (millis()-T)>= 3000){ //если разница значении переменной "Т" и счетчика "millis" составляет больше 3000 едениц, то
T = millis(); //присвоение переменной текущего значения счетчика времени
ss = analogRead(sens); //присвоение значения с пина датчика переменной "ss"
sensvalue = (sensvalue * 5 + ss)/6; // математическая операция усредняющая показания значения с датчика за пооследние 6 измерений
val_sensvalue = map(sensvalue,200,480,0,10); // математическая оперрация приводящая цифру от минимального до максимального значения к виду от 0 до 10 в случае еслизначение не выходит за рамки от 200 до 480
val_sensvalue = constrain(val_sensvalue,0,10); // задает значение "0" всему что меньше нуля и "10" всему что больше
}
if (val_sensvalue != filtr ){ //если значение одной переменной отличается от значения другой, то
Serial.print(val_sensvalue); Serial.print(". ");Serial.print(millis()/1000/60);Serial.println(" MuHyT"); // вывести в серийный порт следующие данные
filtr = val_sensvalue; // присвоить значение переменной "вал", переменной "фильтр"
}}
if (val_sensvalue >= 7 && statusNasos == LOW){ // если значение переменной "вал" больше или ровно 7 и если значение переменной "статуснасос" имеет низкий уровень, то
digitalWrite(nasos,HIGH); // подать на пин насоса питание (перевезти значение на высокий уровень
Serial.println(" Bk/|"); // вывести в серийный порт следующие данные
statusNasos = digitalRead(nasos); // записать значение уровня на пине насоса в переменную "статус насос"
}
if (statusNasos == HIGH){ //если значение переменной "статуснасос" имеет высокий уровень, то
ss = analogRead(sens); //присвоение значения с пина датчика переменной "ss"
sensvalue = (sensvalue * 5 + ss)/6; // математическая операция усредняющая показания значения с датчика за пооследние 6 измерений
val_sensvalue = map(sensvalue,200,480,0,10); // математическая оперрация приводящая цифру от минимального до максимального значения к виду от 0 до 10 в случае еслизначение не выходит за рамки от 200 до 480
val_sensvalue = constrain(val_sensvalue,0,10); // задает значение "0" всему что меньше нуля и "10" всему что больше
if (val_sensvalue != filtr ){
Serial.println(val_sensvalue); // вывести в серийный порт следующие данные
filtr = val_sensvalue;
}
if (val_sensvalue <= 2 && statusNasos == HIGH){ // если значение переменной "вал" меньше или ровно 2 и если значение переменной "статуснасос" имеет высокий уровень, то
digitalWrite(nasos,LOW); // снять с пина насоса питание (перевезти значение на низкий уровень
Serial.println("Bblk/|"); // вывести в серийный порт следующие данные
statusNasos = digitalRead(nasos); // записать значение уровня на пине насоса в переменную "статус насос"
}}
}