Приветствую. Столкнулся с проблемой, которую не могу решить. В ВИКах нашел тестер для батареек, и хочу использовать в своем проекте. И здесь засада по питанию. От 5В последовательно к минусу два резистора по 10кОм, следовательно ток будет 0,00025А. Это потребление не критичное, но в моем проекте это лишняя утечка. В разрыв по питанию хочу поставить транзистор и вот вопрос: Как написать скетч чтобы через каждых 5 минут вкючался , допустим PIN 2 (управление транзистором), а через три секунды после включения транзистора происходило считывание PIN A0 в течении 5 секунд. Потом все выключилось и ждем следующих 5 минут. Начинал с этого: currentTime = millis(); // считываем время, прошедшее с момента запуска программы if(currentTime >= (loopTime + 300000)){ // сравниваем текущий таймер с переменной loopTime + 5 минут float voltage = analogRead(A0) / 1024.0 * 10.0; if (voltage < 2.8) voltage += 0,7; //0,7 это транзистор } loopTime = currentTime;
На соседнем форуме помогал решить задачку, и понял, что можно применить это же решение. Если в программе не используются Delay по пол-секунды и более, то будет работать. Код (Text): #define RelayPin 2 long Period =300000; //период 5мин void setup(){ pinMode(RelayPin, OUTPUT); } void loop(){ long CurrntMsInPeriod = millis()%Period; digitalWrite(RelayPin, CurrntMsInPeriod < 5000); //5c- время включения реле с начала цикла. if ( CurrntMsInPeriod >= 3000 && CurrntMsInPeriod < 5000){ //2c- время работы с 3 по 5-ю секунду. float voltage = float(analogRead(A0))/102.4; } }