Разделение вывода значений в COM порт и на ЖК индикатор
- Войдите на сайт для отправки комментариев
Пнд, 11/11/2019 - 17:02
Всем привет, имеется датчик который подключен к плате с контроллером (Atmega 328). Показания этого датчика выдаются на 1) ЖК индикатор и 2) в com порт одновременно. Ед я хочу чтобы в ком порте выдавались показания в течение скажем 35 секунд, а потом только по нажатию клав ввод, а на ЖК индикаторе шли непрерывно показания. Код написан, но только в ком порт выдается как и задумано, а вот значения на ЖК инд. показываются только первые 35 сек. Может кто подскажет как сделать?
#include <LiquidCrystal.h> #include <TroykaMQ.h> #define analogMQ7 A0 // Пин к которому подключен датчик (A0) #define PIN_MQ7_HEATER 13 //Пин к которому подключен нагреватель MQ7 mq7(analogMQ7); //float analogMQ7 = A0; // Пин к которому подключен A0 int highLevel = 2; // значение выше 2 ppm int val; int i; long loopTime=35000; // 35 seconds int ledPin = 6; int speak = 7; LiquidCrystal disp(9, 8, 5, 4, 3, 2); // создаем объект //////////////////////////////////////// void setup() { Serial.begin (9600); Serial.println("Разогрев..."); // Печать текста "Разогрев" Serial.println("Измерение..."); pinMode(ledPin, OUTPUT); pinMode(speak, OUTPUT); disp.begin(16, 2); // инициализируем дисплей 2 строки по 16 символов disp.print("Warming up"); delay(10000); disp.setCursor(0, 2); disp.print("Test string"); delay(5000); disp.clear(); disp.home();//установка курсора в вехний левый угол disp.print("Please wait..."); disp.noDisplay();// выключаем дисплей delay(500); disp.display();// включаем дисплей delay(500); disp.noDisplay();// выключаем дисплей delay(500); disp.display();// включаем дисплей delay(500); disp.noDisplay();// выключаем дисплей delay(500); disp.display();// включаем дисплей delay(500); disp.noDisplay();// выключаем дисплей delay(500); disp.display();// включаем дисплей delay(500); disp.noDisplay();// выключаем дисплей delay(500); disp.display();// включаем дисплей delay(500); disp.noDisplay();// выключаем дисплей delay(500); disp.display();// включаем дисплей delay(500); disp.clear(); mq7.cycleHeat(); } void loop() { if (!mq7.isCalibrated() && mq7.atHeatCycleEnd()) { mq7.calibrate();// выполняем калибровку датчика на чистом воздухе mq7.cycleHeat(); // запускаем термоцикл } if (mq7.isCalibrated() && mq7.atHeatCycleEnd()) { mq7.cycleHeat(); // запускаем термоцикл } ///////////////////////////////////////////// val = mq7.readCarbonMonoxide(); Serial.print("CO(gas) = "); Serial.print(mq7.readCarbonMonoxide()); Serial.println(" ppm"); if (val >=highLevel){ Serial.println("danger"); delay(1000); } else { Serial.println("Safely"); delay(1000); } unsigned long currentMillis = millis(); while (millis()>=loopTime) /////////////////////////////////////////// for ( i = 0; i <= i; i ++) { while(!Serial.available()>0); Serial.print("CO(gas) = "); Serial.print(mq7.readCarbonMonoxide()); Serial.println(" ppm"); if (val >=highLevel){ Serial.println("danger"); } else { Serial.println("Safely"); } Serial.parseInt(); } //////////////////////////////////////////// mq7.cycleHeat(); val = mq7.readCarbonMonoxide(); disp.setCursor(0, 0); if (val >= highLevel){ digitalWrite(ledPin, HIGH); //включение светодиода digitalWrite(speak, HIGH); delay(1000); digitalWrite(speak, LOW); delay(1000); tone(speak, 1000, 1000); disp.setCursor(0, 2); // печатаем вторую строку disp.print("Danger"); mq7.cycleHeat(); } else { digitalWrite(ledPin, LOW); disp.setCursor(0, 2); // печатаем вторую строку disp.print("Safely"); mq7.cycleHeat(); } // сдвигаем на 13 позиций (длина строки) влево for (int positionCounter = 0; positionCounter < 16; positionCounter++) { // сдвиг на одну позицию disp.scrollDisplayLeft(); //delay(200);//Пока не ясно нужно ли ставить эту задержку } disp.display(); disp.setCursor(0, 0); // печатаем вторую строку //disp.autoscroll(); // включаем автопрокрутку disp.print("CO(Gas)="); disp.print(mq7.readCarbonMonoxide()); disp.print(" ppm"); //disp.setCursor(0, 1); // печатаем вторую строку //disp.print("Safely"); delay(100); }
Может кто подскажет как сделать?
Автор кода точно подскажет.