ዝርዝር ሁኔታ:

የአርዱዲኖ የሙቀት ዳሳሽ ለኮቪድ 19 ተተገበረ 12 ደረጃዎች (ከስዕሎች ጋር)
የአርዱዲኖ የሙቀት ዳሳሽ ለኮቪድ 19 ተተገበረ 12 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: የአርዱዲኖ የሙቀት ዳሳሽ ለኮቪድ 19 ተተገበረ 12 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: የአርዱዲኖ የሙቀት ዳሳሽ ለኮቪድ 19 ተተገበረ 12 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: Arduino በከፊል ሲብራራ https://t.me/arduinoshopping 2024, ታህሳስ
Anonim
የአሩዲኖ የአየር ሙቀት ዳሳሽ ለኮቪድ 19 ተተግብሯል
የአሩዲኖ የአየር ሙቀት ዳሳሽ ለኮቪድ 19 ተተግብሯል

የሰው አካል ማቀነባበሪያውን የሙቀት መጠን ለመለካት ስንፈልግ ለአርዱዲኖ የሙቀት መጠን ዳሳሽ መሠረታዊ አካል ነው።

ከአሩዱኖ ጋር ያለው የሙቀት ዳሳሽ የሙቀት መጠኑን ለመቀበል እና ለመለካት በእውቂያ ውስጥ መሆን ወይም ቅርብ መሆን አለበት። ያ ነው ቴርሞሜትሮች የሚሰሩት።

ያልተለመደ ወይም በሽታ በሚኖርበት ጊዜ በሰው አካል ውስጥ ከሚለወጡ የመጀመሪያ ምክንያቶች አንዱ እነዚህ መሣሪያዎች የታመሙ ሰዎችን የሰውነት ሙቀት ለመለካት እጅግ በጣም ያገለግላሉ።

የሰውን አካል የሙቀት መጠን ከሚቀይሩት በሽታዎች አንዱ COVID 19 ነው። ስለዚህ ዋና ዋናዎቹን ምልክቶች እናቀርባለን-

ሳል ድካም የአተነፋፈስ ችግር (ከባድ ሁኔታዎች) ትኩሳት ትኩሳት ዋናው ባህሪው የሰውነት ሙቀት መጨመር ምልክት ነው። በዚህ በሽታ ውስጥ እነዚህን ምልክቶች ያለማቋረጥ መከታተል አለብን።

ስለዚህ ፣ የሙቀት መጠኑን ለመቆጣጠር እና ይህንን መረጃ በ JLCPCB Datalogger በኩል ከአርዱዲኖ ጋር የሙቀት ዳሳሽ በመጠቀም አንድ ፕሮጀክት እናዘጋጃለን።

ስለዚህ ፣ በዚህ ጽሑፍ ውስጥ ይማራሉ-

  • እንዴት JLCPCB Datalogger ከአሩዲኖ ጋር የሙቀት ዳሳሽ ያለው?
  • ከአሩዱኖ ጋር የሙቀት ዳሳሽ እንዴት ይሠራል።
  • የ DS18B20 የሙቀት ዳሳሽ ከአርዱዲኖ ጋር እንዴት ይሠራል
  • በርካታ ተግባራት ያላቸው አዝራሮችን ይጠቀሙ።

በመቀጠልም የአርዲኖን የሙቀት ዳሳሽ በመጠቀም የእርስዎን JLCPCB Datalogger እንዴት እንደሚያሳድጉ እናሳይዎታለን።

አቅርቦቶች

አርዱዲኖ UNO

JLCPCB የታተመ የወረዳ ቦርድ

DS18B20 የሙቀት ዳሳሽ

አርዱዲኖ ናኖ አር 3

መዝለሎች

ኤልሲዲ ማሳያ 16 x 2

Ushሽቡተን ማብሪያ / ማጥፊያ

ተከላካይ 1 ኪ

የ SD ካርድ ሞዱል ለአርዱዲኖ

ደረጃ 1: ከአርዱዲኖ ጋር የሙቀት ዳሳሽ ያለው የ JLCPCB ዳታሎገር ግንባታ

የ JLCPCB ዳታሎገር ግንባታ ከአየር ሙቀት ዳሳሽ ጋር ከአርዱዲኖ ጋር
የ JLCPCB ዳታሎገር ግንባታ ከአየር ሙቀት ዳሳሽ ጋር ከአርዱዲኖ ጋር

ቀደም ሲል እንደተጠቀሰው ፕሮጀክቱ ከአርዱዲኖ ጋር የሙቀት ዳሳሽ ያለው የ JLCPCB Datalogger መፍጠርን ያጠቃልላል ፣ እናም በዚህ መረጃ አማካይነት የታከመውን ህመምተኛ የሙቀት መጠን መከታተል እንችላለን።

ስለዚህ ወረዳው ከላይ ባለው ስእል ላይ ይታያል።

ስለዚህ ፣ እርስዎ እንደሚመለከቱት ፣ ይህ ወረዳ የታካሚውን የሙቀት ንባብ የመለካት ኃላፊነት ካለው ከአርዱዲኖ ጋር የ DS18B20 የሙቀት ዳሳሽ አለው።

በተጨማሪም አርዱዲኖ ናኖ ይህንን ውሂብ የመሰብሰብ እና በ SD ካርድ ሞዱል የማስታወሻ ካርድ ላይ የማከማቸት ኃላፊነት አለበት።

እያንዳንዱ መረጃ በየራሱ ጊዜ ይቀመጣል ፣ ይህም ከ RTC ሞዱል DS1307 ይነበባል።

ስለዚህ ፣ ከአሩዲኖ ጋር ያለው የሙቀት ዳሳሽ መረጃ እንዲቀመጥ ተጠቃሚው ሂደቱን ከ 16x2 ኤልሲዲ ጋር በመቆጣጠሪያ ምናሌው በኩል ማከናወን አለበት።

ደረጃ 2

ምስል
ምስል

በስእል 2 በ LCD ማያ 16x2 ላይ እንደሚታየው እያንዳንዱ ቁልፍ አንድን አማራጭ የመቆጣጠር ኃላፊነት አለበት።

ከዚህ በታች እንደሚታየው እያንዳንዱ አማራጭ በስርዓቱ ውስጥ አንድ ተግባር የማከናወን ኃላፊነት አለበት።

  • አማራጭ ኤም በማስታወሻ ካርድ ላይ ያለውን መረጃ መለካት እና መቅዳት የመጀመር ሃላፊነት አለበት።
  • አማራጭ H የስርዓት ሰዓቶችን የማስተካከል ሃላፊነት አለበት።
  • አማራጭ ኦ/ፒ በስርዓቱ ውስጥ የውሂብ መግባትን ለማረጋገጥ ወይም የጽሑፍ መረጃን ወደ ማህደረ ትውስታ ካርድ ለማቆም ያገለግላል።

የስርዓት ቁጥጥር ሂደቱን ለመረዳት ከዚህ በታች ያለውን ኮድ እናቀርባለን እና የ JLCPCB ዳታሎገርን ከአየር ሙቀት ዳሳሽ ጋር በአርዱኢኖ ደረጃ በደረጃ ቁጥጥር ስርዓት እንወያይበታለን።

#ያካትቱ // ቤተ -መጽሐፍት በሁሉም የ DS18B20 ዳሳሽ ተግባር

#ያካትቱ #ያካትቱ // Biblioteca I2C do LCD 16x2 #ያካትቱ // Biblioteca de Comunicacao I2C #ያካትቱ // OneWire ቤተ -መጽሐፍት ለ DS18B20 ዳሳሽ #ያካተተ #ያካትታል LiquidCrystal_I2C lcd (0x27 ፣ 16 ፣ 2); // Configurando o endereco do LCD 16x2 para 0x27 #define ONE_WIRE_BUS 8 // DS18B20 ዳሳሹን ለማገናኘት ዲጂታል ፒን/// አንድ ኢንተርኔት ለ com comicicacao com o አነፍናፊ OneWire oneWire (ONE_WIRE_BUS); የዳላስ የሙቀት ዳሳሾች (& oneWire); የመሣሪያ አድራሻ አነፍናፊ 1; MyFile ፋይል ያድርጉ; #የጥራት አዝራር መለኪያ 2 #ገላጭ Buttonadjusthour 3 #ገላጭ Buttonok 4 bool ልኬት = 0 ፣ ማስተካከያ ሰዓት = 0 ፣ እሺ = 0; bool measure_state = 0 ፣ adjusthour_state = 0 ፣ ok_state = 0; bool measure_process = 0 ፣ ማስተካከያ_ሂደት = 0; ባይት ትክክለኛው ሚን = 0 ፣ ቀዳሚ ሚን = 0; ባይት ተጨባጭ ሰዓት = 0 ፣ ቀዳሚ ሰዓት = 0; ባይት minUpdate = 0; int pinoSS = 10; // ፒን 53 ለሜጋ / ፒን 10 ለ UNO int DataTime [7]; ባዶነት ዝማኔ ሰዓት () {DS1307.getDate (DataTime); ከሆነ (DataTime [5]! = minUpdate) {sprintf (ጊዜዎች ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]) ፤ lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (ጊዜያት); minUpdate = DataTime [5]; }} ባዶነት updateTemp () {DS1307.getDate (DataTime) ፤ ከሆነ (DataTime [5]! = minUpdate) {sprintf (ጊዜዎች ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]) ፤ lcd.clear (); lcd.setCursor (5, 0); lcd.print (ጊዜያት); lcd.setCursor (0, 1); lcd.print ("ሙቀት:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} ባዶነት ማዋቀር () {Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS ፣ OUTPUT); // ዲክራላ pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Temp System"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); መዘግየት (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("ዳሳሽ አካባቢያዊነት በተሳካ ሁኔታ!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("ዳሳሽ"); ከሆነ (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso"); // Imprime na tela} ሌላ {Serial.println ("Falha in inicialização do SD Card."); መመለስ; } DS1307.getDate (DataTime); lcd.clear (); sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 0); lcd.print (ጊዜያት); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } ባዶነት loop () {updateHour (); // የንባብ አዝራሮች ግዛቶች መለኪያ = ዲጂታል አንብብ (የአዝራር መለኪያ); adjusthour = digitalRead (Buttonadjusthour); እሺ = digitalRead (Buttonok); ከሆነ (ልኬት == 0 && measure_state == 1) {measure_state = 0; } ከሆነ (መለኪያ == 1 && measure_state == 0 && measure_process == 0) {measure_process = 1; መለኪያ_ክልል = 1; (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!"); SD.remove ("temp.txt"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } ሌላ {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } መዘግየት (500); myFile.print ("ሰዓት:"); myFile.println ("ሙቀት"); DS1307.getDate (DataTime); realMin = previousMin = DataTime [5]; sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (ጊዜያት); lcd.setCursor (0, 1); lcd.print ("ሙቀት:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } ከሆነ (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ከሆነ (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; } // ---------------------------------------------- --- የመለኪያ ሂደት ---------------------------------------------------- -------------- ከሆነ (የመለኪያ_ሂደት == 1) {updateTemp (); ባይት contMin = 0 ፣ contHour = 0; DS1307.getDate (DataTime); realMin = DataTime [5]; // ------------------------------------------------ --------- ደቂቃዎችን መቁጠር -------------------------------------- ------------------- ከሆነ (realMin! = previousMin) {contMin ++; previousMin = realMin; } ከሆነ (contMin == 5) {sprintf (ጊዜያት ፣ "%02d:%02d" ፣ DataTime [4] ፣ DataTime [5]) ፤ sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); myFile.print (ጊዜያት); myFile.println (TempSensor); contMin = 0; } // ---------------------------------------------- ------------ ሰዓት ቆጠራ ------------------------------------ ---------------------- ከሆነ (realHour! = previousHour) {contHour ++; previousHour = realHour; } ከሆነ (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("ተጠናቀቀ"); lcd.setCursor (5, 1); lcd.print ("ሂደት"); የመለኪያ_ሂደት = 0; contHour = 0; } // ---------------------------------------------- ሁኔታ መረጃ ሰሪውን ለማቆም ---------------------------------------------- ---- ከሆነ (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("ቆሟል"); lcd.setCursor (5, 1); lcd.print ("ሂደት"); የመለኪያ_ሂደት = 0; መዘግየት (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 0); lcd.print (ጊዜያት); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // ---------------------------------------------- ------- ሰዓቶችን አስተካክል ----------------------------------------- ---------------------- // ሰዓት ከሆነ (ማስተካከያ_ሂደት == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("ሰዓት አስተካክል"); sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 1); lcd.print (ጊዜያት); // ሰዓት ያስተካክሉ ያድርጉ {measure = digitalRead (የአዝራር መለኪያ); adjusthour = digitalRead (Buttonadjusthour); እሺ = digitalRead (Buttonok); ከሆነ (ልኬት == 0 && measure_state == 1) {measure_state = 0; } ከሆነ (መለኪያ == 1 && measure_state == 0) {DataTime [4] ++; ከሆነ (DataTime [4]> 23) {DataTime [4] = 0; } መለኪያ_ክልል = 1; sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 1); lcd.print (ጊዜያት); DS1307.setDate (DataTime [0] ፣ DataTime [1] ፣ DataTime [2] ፣ DataTime [3] ፣ DataTime [4] ፣ DataTime [5] ፣ 00]) ፤ } ከሆነ (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ከሆነ (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; ከሆነ (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 1); lcd.print (ጊዜያት); DS1307.setDate (DataTime [0] ፣ DataTime [1] ፣ DataTime [2] ፣ DataTime [3] ፣ DataTime [4] ፣ DataTime [5] ፣ 00]) ፤ adjusthour_state = 1; } ከሆነ (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (0, 0); lcd.print (ጊዜያት); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); ማስተካከያ_ሂደት = 0; }} እያለ (እሺ! = 1); } // ---------------------------------------------- ------- ያስተካክሉ ሰዓት ---------------------------------------- --------------------}

በመጀመሪያ ፣ JLCPCB Datalogger ን ለአርዱዲኖ የሙቀት መጠን ዳሳሽ ሲያዘጋጁ ሞጁሎችን ለመቆጣጠር እና ጥቅም ላይ የዋሉ ተለዋዋጮችን ለማወጅ ሁሉንም ቤተመፃህፍት እንገልፃለን። የኮድ ማገጃው ከዚህ በታች ይታያል።

ደረጃ 3

#ያካትቱ // ቤተ -መጽሐፍት በሁሉም የ DS18B20 ዳሳሽ ተግባር

#ያካትቱ #ያካትቱ // Biblioteca I2C do LCD 16x2 #ያካትቱ // Biblioteca de Comunicacao I2C #ያካትቱ // OneWire ቤተ -መጽሐፍት ለ DS18B20 ዳሳሽ #ያካተተ #ያካትታል LiquidCrystal_I2C lcd (0x27 ፣ 16 ፣ 2); // Configurando o endereco do LCD 16x2 para 0x27 #define ONE_WIRE_BUS 8 // DS18B20 ዳሳሹን ለማገናኘት ዲጂታል ፒን/// አንድ ኢንተርኔት ለ com comicicacao com o አነፍናፊ OneWire oneWire (ONE_WIRE_BUS); የዳላስ የሙቀት ዳሳሾች (& oneWire); የመሣሪያ አድራሻ አነፍናፊ 1; MyFile ፋይል ያድርጉ; #የጥራት አዝራር መለኪያ 2 #ገላጭ Buttonadjusthour 3 #ገላጭ Buttonok 4 bool ልኬት = 0 ፣ ማስተካከያ ሰዓት = 0 ፣ እሺ = 0; bool measure_state = 0 ፣ adjusthour_state = 0 ፣ ok_state = 0; bool measure_process = 0 ፣ ማስተካከያ_ሂደት = 0; ባይት ትክክለኛው ሚን = 0 ፣ ቀዳሚ ሚን = 0; ባይት ተጨባጭ ሰዓት = 0 ፣ ቀዳሚ ሰዓት = 0; ባይት minUpdate = 0; int pinoSS = 10; // ፒን 53 ለሜጋ / ፒን 10 ለ UNO int DataTime [7];

ከዚህ በኋላ እኛ ባዶ የማዋቀር ተግባር አለን። ከዚህ በታች እንደሚታየው ይህ ተግባር ፒኖችን እና የመሣሪያ አጀማመርን ለማዋቀር ያገለግላል።

ባዶነት ማዋቀር ()

{Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS ፣ OUTPUT); // ዲክራላ pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Temp System"); lcd.setCursor (3, 1); lcd.print ("Datalogger"); መዘግየት (2000); // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20…"); Serial.print ("ዳሳሽ አካባቢያዊነት በተሳካ ሁኔታ!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("ዳሳሽ"); ከሆነ (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso"); // Imprime na tela} ሌላ {Serial.println (“Falha in inicialização do SD Card.”) ፤ መመለስ; } DS1307.getDate (DataTime); lcd.clear (); sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 0); lcd.print (ጊዜያት); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

በመጀመሪያ ፣ ተከታታይ ግንኙነት ፣ የእውነተኛ ሰዓት ሰዓት እና የአርዱዲኖ DS18B20 የሙቀት ዳሳሽ ተጀምሯል። መሣሪያዎቹን ከጀመሩ እና ከሞከሩ በኋላ ከምናሌ አማራጮች ጋር ያለው መልእክት በ 16x2 ኤልሲዲ ማያ ገጽ ላይ ታትሟል። ይህ ማያ ገጽ በስእል 1 ይታያል።

ደረጃ 4

ከዚያ በኋላ ስርዓቱ ዝመናውን ተግባር በመደወል ሰዓቶቹን ያነባል እና ዋጋውን ያዘምናል። ስለዚህ ይህ ተግባር በየደቂቃው የሰዓት እሴቱን የማቅረብ ዓላማ አለው። የተግባር ኮድ እገዳ ከዚህ በታች ይታያል።

ባዶነት ዝመና ሰዓት ()

{DS1307.getDate (DataTime) ፤ ከሆነ (DataTime [5]! = minUpdate) {sprintf (ጊዜዎች ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]) ፤ lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (ጊዜያት); minUpdate = DataTime [5]; }}

ደረጃ 5

ምስል
ምስል

ሰዓቶቹን ከማዘመን በተጨማሪ ታካሚው ከአርዱዲኖ ጋር ካለው የሙቀት ዳሳሽ ጋር ለመቆጣጠር ከሶስቱ አዝራሮች ውስጥ አንዱን መምረጥ ይችላል። ወረዳው ከላይ በስዕሉ ላይ ይታያል።

ደረጃ 6: JLCPCB Datalogger መቆጣጠሪያ ምናሌ

JLCPCB Datalogger መቆጣጠሪያ ምናሌ
JLCPCB Datalogger መቆጣጠሪያ ምናሌ

በመጀመሪያ ተጠቃሚው የስርዓቱን ሰዓታት መፈተሽ እና ማስተካከል አለበት። ሁለተኛው ሂደት ሲጫን ይህ ሂደት ይከናወናል።

አዝራሩ ሲጫን የሚከተለው ማያ ገጽ መታየት አለበት ፣ ይህም ከላይ በስዕሉ ላይ ይታያል።

ደረጃ 7

ምስል
ምስል

ከዚህ ማያ ገጽ ተጠቃሚው ከ Arduino ዲጂታል ፒን 2 እና 3 ጋር ከተገናኙት አዝራሮች የሰዓት እና ደቂቃ እሴቶችን ማስገባት ይችላል። አዝራሮቹ ከላይ በስዕሉ ላይ ይታያሉ።

ሰዓቶችን ለመቆጣጠር የኮድ ክፍል ከዚህ በታች ይታያል።

ከሆነ (adjusthour == 0 && adjusthour_state == 1)

{adjusthour_state = 0; } ከሆነ (adjusthour == 1 && adjusthour_state == 0 && measure_process == 0) {adjust_process = 1; }

የሰዓቶች አዝራር ሲጫን እና የመለኪያ_ሂደቱ ተለዋዋጭ ወደ 0 ሲዋቀር ፣ ሁኔታው እውነት ይሆናል እና የማስተካከያ_ሂደቱ ተለዋዋጭ ወደ 1. ይስተካከላል። የመለኪያ_ሂደቱ ተለዋዋጭ ስርዓቱ የሙቀት መጠንን እየተቆጣጠረ መሆኑን ለማመልከት ያገለግላል። እሴቱ 0 በሚሆንበት ጊዜ ስርዓቱ ተጠቃሚው የጊዜ ቅንብር ምናሌውን እንዲገባ ያስችለዋል። ስለዚህ ፣ የማስተካከያ_ሂደቱ ተለዋዋጭ 1 እሴት ከተቀበለ በኋላ ስርዓቱ የጊዜ ማስተካከያ ሁኔታ ውስጥ ይገባል። ይህ የኮድ እገዳ ከዚህ በታች ይታያል።

// ------------------------------------------------ ----- ሰዓቶችን አስተካክል ------------------------------------------- --------------------

// ሰዓቱን ያስተካክሉ (ማስተካከያ_ሂደት == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("ሰዓት አስተካክል"); sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 1); lcd.print (ጊዜያት); // ሰዓት ያስተካክሉ ያድርጉ {measure = digitalRead (የአዝራር መለኪያ); adjusthour = digitalRead (Buttonadjusthour); እሺ = digitalRead (Buttonok); ከሆነ (ልኬት == 0 && measure_state == 1) {measure_state = 0; } ከሆነ (መለኪያ == 1 && measure_state == 0) {DataTime [4] ++; ከሆነ (DataTime [4]> 23) {DataTime [4] = 0; } መለኪያ_ክልል = 1; sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 1); lcd.print (ጊዜያት); DS1307.setDate (DataTime [0] ፣ DataTime [1] ፣ DataTime [2] ፣ DataTime [3] ፣ DataTime [4] ፣ DataTime [5] ፣ 00]) ፤ } ከሆነ (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ከሆነ (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; ከሆነ (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (ጊዜያት ፣ "%02d:%02d" ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 1); lcd.print (ጊዜያት); DS1307.setDate (DataTime [0] ፣ DataTime [1] ፣ DataTime [2] ፣ DataTime [3] ፣ DataTime [4] ፣ DataTime [5] ፣ 00]) ፤ adjusthour_state = 1; } ከሆነ (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (0, 0); lcd.print (ጊዜያት); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); ማስተካከያ_ሂደት = 0; }} እያለ (እሺ! = 1); }

በዚህ ሁኔታ ፣ ስርዓቱ በስእል 4 ላይ የሚታየውን መልእክት ያሳያል ከዚያም እሴቶቹ በውስጥ ዑደት ውስጥ እስኪስተካከሉ ድረስ ይጠብቁ። ሰዓቶችን ሲያስተካክሉ እነዚህ አዝራሮች ተግባሮቻቸው ተለውጠዋል ፣ ማለትም እነሱ ሁለገብ ናቸው።

ይህ ከአንድ በላይ ተግባር አንድ አዝራር እንዲጠቀሙ እና የስርዓቱን ውስብስብነት እንዲቀንሱ ያስችልዎታል።

በዚህ መንገድ ተጠቃሚው የሰዓቶችን እና የደቂቃዎች ዋጋን ያስተካክላል እና ከዚያ እሺ ቁልፍ ሲጫን በሲስተሙ ውስጥ ያለውን ውሂብ ያስቀምጣል።

እንደሚመለከቱት ፣ ስርዓቱ ከዚህ በታች እንደሚታየው 3 ቱ አዝራሮችን ያነባል።

መለኪያ = digitalRead (የአዝራር መለኪያ);

adjusthour = digitalRead (Buttonadjusthour); እሺ = digitalRead (Buttonok);

የመለኪያ ቁልፍ (የአዝራር መለኪያ) ተግባሩን እንደለወጠ ልብ ይበሉ። ከዚህ በታች እንደሚታየው አሁን የሰዓት እሴቶችን ለማስተካከል ጥቅም ላይ ይውላል። የሚከተሉት ሁለት ሁኔታዎች ተመሳሳይ ናቸው እና ከላይ እንደሚታየው ሰዓቶችን እና ደቂቃዎችን ለማስተካከል ያገለግላሉ።

ከሆነ (መለኪያ == 0 && measure_state == 1)

{measure_state = 0; } ከሆነ (መለኪያ == 1 && measure_state == 0) {DataTime [4] ++; ከሆነ (DataTime [4]> 23) {DataTime [4] = 0; } መለኪያ_ክልል = 1; sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 1); lcd.print (ጊዜያት); DS1307.setDate (DataTime [0] ፣ DataTime [1] ፣ DataTime [2] ፣ DataTime [3] ፣ DataTime [4] ፣ DataTime [5] ፣ 00]) ፤ } ከሆነ (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } ከሆነ (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; ከሆነ (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (ጊዜያት ፣ "%02d:%02d" ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 1); lcd.print (ጊዜያት); DS1307.setDate (DataTime [0] ፣ DataTime [1] ፣ DataTime [2] ፣ DataTime [3] ፣ DataTime [4] ፣ DataTime [5] ፣ 00]) ፤ adjusthour_state = 1; }

ስለዚህ ፣ ከሁለቱ አዝራሮች አንዱ በተጫነ ቁጥር የ DataTime ቬክተር 4 እና 5 የአቀማመጦች ዋጋ ይለወጣል እና በሁለተኛ ደረጃ እነዚህ እሴቶች በ DS1307 ማህደረ ትውስታ ውስጥ ይቀመጣሉ።

ከማስተካከያዎቹ በኋላ ተጠቃሚው ሂደቱን ለማጠናቀቅ እሺ የሚለውን ቁልፍ ጠቅ ማድረግ አለበት። ይህ ክስተት ሲከሰት ስርዓቱ የሚከተሉትን የኮድ መስመሮች ያስፈጽማል።

ከሆነ (እሺ == 1)

{lcd.clear (); DS1307.getDate (DataTime); sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (0, 0); lcd.print (ጊዜያት); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); ማስተካከያ_ሂደት = 0; }

ከላይ ወደተጠቀሰው ሁኔታ ገብቶ የሰዓት መልዕክቱን እና የአማራጮች ምናሌን ለተጠቃሚው ያቀርባል።

በመጨረሻም ፣ ተጠቃሚው በአሩዲኖ ጄሲሲሲቢ ዳታሎገር አማካኝነት በሙቀት ዳሳሽ በኩል የታካሚውን የክትትል ሂደት መጀመር አለበት።

ይህንን ለማድረግ ተጠቃሚው ከዲጂታል ፒን 2 ጋር የተገናኘውን የመለኪያ ቁልፍን መጫን አለበት።

ከዚያ ስርዓቱ ንባብን ለአርዱዲኖ የሙቀት ዳሳሽ ያካሂዳል እና በማስታወሻ ካርድ ላይ ያስቀምጠዋል። የወረዳው ክልል ከላይ በስዕሉ ላይ ይታያል።

ደረጃ 8

ምስል
ምስል

ስለዚህ ፣ አዝራሩ ሲጫን የሚከተለው የኮድ ክፍል ይፈጸማል።

ከሆነ (መለኪያ == 0 && measure_state == 1)

{measure_state = 0; } ከሆነ (መለኪያ == 1 && measure_state == 0 && measure_process == 0) {measure_process = 1; መለኪያ_ክልል = 1; (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!"); SD.remove ("temp.txt"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } ሌላ {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } መዘግየት (500); myFile.print ("ሰዓት:"); myFile.println ("ሙቀት"); DS1307.getDate (DataTime); realMin = previousMin = DataTime [5]; sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (ጊዜያት); lcd.setCursor (0, 1); lcd.print ("ሙቀት:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }

ከላይ ባለው የኮድ ክፍል ውስጥ ስርዓቱ የመለኪያ_ሂደት ተለዋዋጭውን የ 1 እሴት ይመድባል። መረጃው በ SD ካርድ ላይ እንዲቀመጥ የመፍቀድ ኃላፊነት አለበት።

በተጨማሪም ፣ ስርዓቱ የውሂብ ምዝግብ ማስታወሻ ያለው የጽሑፍ ፋይል መኖር አለመኖሩን ይፈትሻል። ፋይል ካለ ፣ ስርዓቱ ይሰርዘዋል እና ውሂቡን ለማከማቸት አዲስ ይፈጥራል።

ከዚያ በኋላ ሁለት ዓምዶችን ይፈጥራል -አንደኛው ለሰዓታት እና አንዱ በጽሑፉ ፋይል ውስጥ ባለው የሙቀት መጠን።

ከዚያ በኋላ ፣ በስዕሉ ላይ እንደሚታየው ሰዓቶቹን እና የሙቀት መጠኑን በኤልሲዲ ማያ ገጽ ላይ ያሳያል።

ከዚያ በኋላ የኮዱ ፍሰት የሚከተለውን የፕሮግራም እገዳ ያስፈጽማል።

ከሆነ (የመለኪያ_ሂደት == 1)

{updateTemp (); ባይት contMin = 0 ፣ contHour = 0; DS1307.getDate (DataTime); realMin = DataTime [5]; // ------------------------------------------------ --------- ደቂቃዎችን መቁጠር -------------------------------------- ------------------- ከሆነ (realMin! = previousMin) {contMin ++; previousMin = realMin; } ከሆነ (contMin == 5) {sprintf (ጊዜያት ፣ "%02d:%02d" ፣ DataTime [4] ፣ DataTime [5]) ፤ sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); myFile.print (ጊዜያት); myFile.println (TempSensor); contMin = 0; } // ---------------------------------------------- ------------ ሰዓት ቆጠራ ------------------------------------ ---------------------- ከሆነ (realHour! = previousHour) {contHour ++; previousHour = realHour; } ከሆነ (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("ተጠናቀቀ"); lcd.setCursor (5, 1); lcd.print ("ሂደት"); የመለኪያ_ሂደት = 0; contHour = 0; } // ---------------------------------------------- ሁኔታ መረጃ ሰሪውን ለማቆም -----

በመጀመሪያ ፣ የ updateTemp () ተግባር ይፈጸማል። እሱ ከዝማኔ ሰዓት () ተግባር ጋር ተመሳሳይ ነው ፣ ሆኖም ፣ በየ 1 ደቂቃው የሙቀት መጠኑን ያሳያል።

ከዚያ በኋላ ስርዓቱ የእውነተኛ-ሰዓት ሰዓቱን የጊዜ መረጃን ይሰበስባል እና የአሁኑን ደቂቃ እሴት አሁን ባለው ተለዋዋጭ ውስጥ ያከማቻል።

ከዚያ ፣ ከዚህ በታች በተገለጸው ሁኔታ መሠረት የሚን ተለዋዋጭው ተለውጦ እንደሆነ ይፈትሻል

ከሆነ (realMin! = previousMin)

{contMin ++; previousMin = realMin; }

ስለዚህ ፣ የአሁኑ ደቂቃ ተለዋዋጭ ከቀዳሚው እሴት የተለየ ከሆነ ፣ የዋጋው ለውጥ ተከሰተ ማለት ነው። በዚህ መንገድ ፣ ሁኔታው እውነት ይሆናል እና የደቂቃው ቆጠራ ዋጋ ይጨምራል (contMin) እና የአሁኑ እሴት የቀደመውን እሴት ለማከማቸት ለተለዋዋጭ ቀዳሚው ሚን ይመደባል።

ስለዚህ ፣ የዚህ ቆጠራ ዋጋ ከ 5 ጋር እኩል ሲሆን ፣ ይህ ማለት 5 ደቂቃዎች አልፈዋል እና ስርዓቱ አዲስ የሙቀት ንባብ ማከናወን እና የሰዓት እና የሙቀት እሴቱን በ SD ካርድ መዝገብ ፋይል ውስጥ ማስቀመጥ አለበት ማለት ነው።

ከሆነ (contMin == 5)

{sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]) ፤ sensors.requestTemperatures (); ተንሳፋፊ TempSensor = sensors.getTempCByIndex (0); myFile.print (ጊዜያት); myFile.println (TempSensor); contMin = 0; }

በዚህ መንገድ ፣ የሕመምተኛውን የሙቀት መጠን ከአርዱዲኖ ጋር የሙቀት መቆጣጠሪያውን የ 5 ሰዓታት ዋጋ እስከሚደርስ ድረስ ይህ ሂደት ይደገማል።

የኮዱ ክፍል ከዚህ በታች ይታያል እና ከላይ ከቀረበው የደቂቃ ቆጠራ ጋር ተመሳሳይ ነው።

// ------------------------------------------------ ----------- ሰዓት ቆጠራ -------------------------------------------- ---------------------

ከሆነ (realHour! = previousHour) {contHour ++; previousHour = realHour; } ከሆነ (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("ተጠናቀቀ"); lcd.setCursor (5, 1); lcd.print ("ሂደት"); የመለኪያ_ሂደት = 0; contHour = 0; }

ክትትል ለ 5 ሰዓታት ከደረሰ በኋላ ስርዓቱ የምዝግብ ማስታወሻውን ፋይል ይዘጋል እና “የተጠናቀቀ ሂደት” የሚለውን መልእክት ለተጠቃሚው ያቀርባል።

በተጨማሪም ፣ መረጃን መቅዳት ለማቆም ተጠቃሚው እሺ/ለአፍታ አቁም ቁልፍን መጫን ይችላል። ይህ በሚሆንበት ጊዜ የሚከተለው የኮድ ማገጃ ይፈጸማል።

// ---------------------------------------------- ቅድመ ሁኔታ ወደ መረጃ ሰሪውን ያቁሙ ------------------------------------------------------ ---

ከሆነ (እሺ == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("ቆሟል"); lcd.setCursor (5, 1); lcd.print ("ሂደት"); የመለኪያ_ሂደት = 0; መዘግየት (2000); lcd.clear (); DS1307.getDate (DataTime); sprintf (ጊዜያት ፣ “%02d:%02d” ፣ DataTime [4] ፣ DataTime [5]); lcd.setCursor (5, 0); lcd.print (ጊዜያት); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }

ደረጃ 9

ምስል
ምስል

ከዚያ ስርዓቱ በስዕሉ 8 ላይ እንደሚታየው ፋይሉን ይዘጋል እና “የቆመ ሂደት” የሚለውን መልእክት ያቀርባል።

ደረጃ 10

ምስል
ምስል

ከዚያ በኋላ በስእል 9 እንደሚታየው ስርዓቱ የጊዜ ማያ ገጹን እና የምናሌ አማራጮችን ያትማል።

ደረጃ 11: ከአርዱዲኖ ጋር የ SD ካርድ ሞዱል ውሂብን መድረስ

ከአርዱዲኖ ጋር የ SD ካርድ ሞዱል ውሂብን መድረስ
ከአርዱዲኖ ጋር የ SD ካርድ ሞዱል ውሂብን መድረስ

የ JLCPCB Datalogger ን ከአርዱዲኖ ጋር ካለው የሙቀት ዳሳሽ ጋር ከተከታተለ በኋላ የማስታወሻ ካርዱን ማስወገድ እና በኮምፒተር ላይ ያለውን ውሂብ መድረስ አስፈላጊ ነው።

ውሂቡን በተሻለ ጥራት ለማየት እና ለመተንተን የጽሑፍ ፋይሉን ሁሉንም መረጃ ወደ ውጭ ይላኩ / ይቅዱ ከዚያ በኋላ ግራፎችን ማሴር እና የተገኙትን ውጤቶች መተንተን ይችላሉ።

ደረጃ 12 መደምደሚያ

የ JLCPCB ዳታሎገር ከአሩዲኖ ጋር የሙቀት ዳሳሽ ያለው ፣ የሙቀት መጠኑን ከመለካት በተጨማሪ በበሽተኛው የሙቀት ባህሪ ላይ መረጃን በተወሰነ ጊዜ ውስጥ እንድንመዘግብ ያስችለናል።

በእነዚህ የተከማቹ መረጃዎች አማካኝነት በኮቪድ 19 የተያዘው የሕመምተኛ ሙቀት እንዴት እንደሚሠራ መተንተንና መረዳት ይቻላል።

በተጨማሪም ፣ የሙቀት መጠኑን ደረጃ መገምገም እና ዋጋውን ከአንዳንድ የመድኃኒት ዓይነቶች አተገባበር ጋር ማያያዝ ይቻላል።

ስለዚህ ፣ በእነዚህ መረጃዎች አማካይነት ፣ የ JLCPCB Datalogger ለ Arduino የሙቀት ዳሳሽ ያለው የታካሚዎችን ባህሪ በማጥናት ሐኪሞችን እና ነርሶችን ለመርዳት ያለመ ነው።

በመጨረሻም የኩባንያውን JLCPCB የፕሮጀክቱን ልማት በመደገፉ እናመሰግናለን እና እርስዎ ሊጠቀሙበት እንደሚችሉ ተስፋ እናደርጋለን።

ሁሉም ፋይሎች በማንኛውም ተጠቃሚ በነፃ ሊወርዱ እና ሊጠቀሙባቸው ይችላሉ።

የሚመከር: