Nidaamka Helitaanka Xogta Madaxbanaan ee Maxaliga ah (waa socotaa)

Ka bilow goobtan link.
Xulashada ugu habboon ee dib u soo celinta macluumaadka ku saabsan shidista bilowga waxay noqotay ikhtiyaarka PC817 optocoupler. Jaantuska goobadaNidaamka Helitaanka Xogta Madaxbanaan ee Maxaliga ah (waa socotaa)Looxyadu waxay ka kooban yihiin saddex wareeg oo isku mid ah, wax walba waxaa lagu dhejiyaa sanduuqyada caaga ah ee ABS, cabbirka 100x100 mm. Sawirka muraayadaha indhahaNidaamka Helitaanka Xogta Madaxbanaan ee Maxaliga ah (waa socotaa) Marka lagu xidho qalabka bilawga ah ee leh valves semiconductor, qulqulkooda hadda waa ku filan si loo furo PC817 oo miiska ayaa kicin doona si been ah. Si looga saaro xaaladdan oo kale Mid kale ayaa si taxane ah loogu daraa wareegga LED-ka indhaha iyo calaamadda hawlgalka ee LED. Si tan loo sameeyo, jumper J1 waa la furay oo LED1 dheeraad ah ayaa lagu iibiyaa.
Qaybta qaabilaadda ayaa lagu sameeyay dhinac 1Nidaamka Helitaanka Xogta Madaxbanaan ee Maxaliga ah (waa socotaa)dhinac 2Nidaamka Helitaanka Xogta Madaxbanaan ee Maxaliga ah (waa socotaa)guddiga horumarinta ee ku xiran ARDUINO MEGA 2560. Taas awgeed, isku xirka labajibbaaran ayaa loo isticmaalaa dhammaadka. Shaashada xallinta 240x400, oo leh shaashad taabasho iska caabin ah iyo dareeraha heerkulka, ayaa loo isticmaalaa sida aaladda soo bandhigta macluumaadka. HX8352B.Nidaamka Helitaanka Xogta Madaxbanaan ee Maxaliga ah (waa socotaa) Waxaa intaa dheer, xiriiriyaha ICSP ee guddiga shaashadda waa la saarayaa oo booska micro SD lama isticmaalo. Xaqiiqdu waxay tahay in godka SD ee "dhaladka ah" aan la isticmaali karin sababtoo ah isku dhaca baska SPI. Kaarka tooska ah, akhristaha kaadhka gaarka ah ayaa loo isticmaalay, oo ay ku jiraan 3,3V stabilizer iyo chip buffer oo leh saddex wax soo saar oo ah 74LVS125A. Waa meeshii uu ragii igu sugayey. Badbaadiye saddex-goboleed ah, laakiin E01-ML01DP5 ama kaarka akhriyaha ayaa shaqeeyay. Faallooyinka maktabadda, SdFat waxay ku aragtay digniin ku saabsan la-qabsi la'aanta aaladaha kale. Beddelka heerka TXS0108E waa laga saaray waxaana lagu bedelay jumpers, sababtoo ah E01-ML01DP5 waxay u dulqaadanaysaa calaamadaha 5V - waxba ma tarin. Isticmaalka oscilloscope, calaamad luminta ayaa laga helay khadka MISO markii akhristaha kaarka lagu xiray. Markii si taxadar leh loo baaray, waxaa la ogaaday in soo-gelinta calaamadaha awood-siinta ee kanaalada OE 4 ee 74LVS125A si fudud loogu iibiyay siligga caadiga ah oo aysan jirin wax hadal ah oo ku saabsan gobol kasta oo saddexaad. Chip-buffer-ka waxa loo adeegsaday beddele heer hore ah oo ka yimid 5V ilaa 3.3V iyadoo la adeegsanayo 3,3 KΩ iska caabiyeyaasha oo si taxane ah ugu xidhan xadhkaha signalada. Marka laga reebo khadka MISO. Dareemadeeda hoose waxay u badan tahay inay soo jiidatay calaamadaha heerka dhulka. Ka dib markii la go'aamiyay in calaamada awood u leh ee khadka MISO uu yahay pin 13, waa laga gooyay jidka ooiibiyeyNidaamka Helitaanka Xogta Madaxbanaan ee Maxaliga ah (waa socotaa)inta u dhaxaysa aaladda 9LVS74A CS dooro pin-gelinta (125) iyo iska caabiyaha joojinta. Hadda, haddii aysan jirin gelitaanka kaadhka xusuusta, MISO buffer waa naafo oo ma farageliyo hawlgalka qalab kale.jaantuska guddiga horumarintaNidaamka Helitaanka Xogta Madaxbanaan ee Maxaliga ah (waa socotaa)Qaataha oo shaqaynayaNidaamka Helitaanka Xogta Madaxbanaan ee Maxaliga ah (waa socotaa)DS3231 waxay isticmaashaa software I2C baska (TWI) si uu saacada ugu xidho.
Arduino IDE Program// MUHIIM: Adafruit_TFTLCD LIBRARY waa inay si gaar ah u ahaataa
// LAGU QAWEEYAY AMA GAASHAHA TFT AMA GUDDIGA JABAN.
// KA ARAG FAALLOOYINKA KU SOCDA gudaha Adafruit_TFTLCD.h ee SETUP.
// Kooxda Fur-Smart iyo Kooxda Catalex
//[emailka waa la ilaaliyay]
//Bakhaar: dx.com
// open-smart.aliexpress.com/store/1199788
//Shaqada Demo: Sawirro muujinaya, jilayaal
//Arduino IDE: 1.6.5
// Board: Arduino UNO R3, Arduino Mega2560, Arduino Leonardo

// Board: FURAN-SMART UNO R3 5V / 3.3V, Arduino UNO R3, Arduino Mega2560
//3.2INCH TFT:
// www.aliexpress.com/store/product/3-2-TFT-LCD-Display-module-Touch-Screen-Shield-board-onboard-temperature-sensor-w-Touch-Pen/1199788_32755473754.html?spm=2114.12010615.0.0.bXDdc3
// FURAN-SMART UNO R3 5V / 3.3V:
// www.aliexpress.com/store/product/OPEN-SMART-5V-3-3V-Compatible-UNO-R3-CH340G-ATMEGA328P-Development-Board-with-USB-Cable-for/1199788_32758607490.html?spm=2114.12010615.0.0.ckMTaN

#ku dar // Maktabadda sawirada Core
//#ku dar // Maktabadda u gaarka ah hardware
#ku dar
MCUFRIEND_kbv tft;
#ku dar "SdFat.h" // Isticmaal maktabadda SdFat
SDFat SD;
Faylka SDFile;
Faylka myFile;
# qeex SD_CS_PIN SS

#ku dar // Ku xidh maktabadda si aad ula shaqeyso baska SPI
#ku dar // Ku xidh faylka dejinta ee maktabadda RF24
#ku dar // Ku xidh maktabadda si aad ula shaqeyso nRF24L24+
raadiyaha RF24 (47, 49);

#ku dar

DS3231 rtc (27, 25);
Waqtiga t;

uint16_t r = 6000;
uint32_t k = 0;

xog dheer oo aan la saxeexin oo kacsan;
sabeyn leb_1;
sabeyn leb_2;
sabeyn leb_3;
sabeyn leb_4;

tuubo uint8_t;
int rc = 0;

uint8_t time_sec_prev;
uint8_t wakhtiga_maalintii hore;

//**************************************** **************** / /
// Haddii aad isticmaasho OPEN-SMART TFT breakout board //
// Waxaan kugula talineynaa inaad ku darto wareegga beddelka heerka 5V-3.3V.
// Dabcan waxaad isticmaali kartaa nooca OPEN-SMART UNO Black oo leh 5V/3.3V
// kaliya waxaad u baahan tahay inaad u bedesho 3.3V.
// Biinanka kantaroolka ee LCD-ga waxaa lagu meelayn karaa dhijitaal kasta ama
// biinanka analooga ah...laakin waxaan u isticmaali doonaa biinanka analooga sida ay taasi noo ogolaato
//—————————————-|
// TFT Breakout - Arduino UNO / Mega2560 / FURAN-SMART UNO Madow
// GND - GND
// 3V3 - 3.3V
//CS - A3
// RS - A2
// WR - A1
// RD - A0
// RST - Dib u habeyn
// LED - GND
// DB0 - 8
// DB1 - 9
// DB2 - 10
// DB3 - 11
// DB4 - 4
// DB5 - 13
// DB6 - 6
// DB7 - 7

// U qoondee magacyada aadanaha-akhrisan karo qaar ka mid ah qiimaha midabka 16-bit ee caadiga ah:
#Qeex MADOW 0x0000
#Qeex BLUE 0x001F
#Qeex RED 0xF800
# qeex CAGAAR 0x07E0
# qeex CYAN 0x07FF
# qeex MAGENTA 0xF81F
#Qeex JAASKA 0xFFE0
# qeex CADDAAN 0xFFFF
# qeex GRAY 0x8C51
# qeex GRAYD 0x39E7

// Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// Haddii la isticmaalo gaashaanka, dhammaan xariiqyada xakamaynta iyo xogta ayaa go'an, iyo
// cadeyn ka fudud ayaa ikhtiyaari ahaan loo isticmaali karaa:
// Adafruit_TFTLCD tft;
uint16_t g_identifier;

Xadhkaha xogtaString;
// Xadhiga numfileMonth = "1.txt";
char perv [] = {"2.txt"};
// Xadhiga * numfileMonth = "1.txt" (cabirka (numfileMonth));
////////////////////////////////// ///////////////

Mudnaan la'aan (madhan) {

rtc.bilow ();

// Si aad u dejiso wakhtiga, ha ka bixin khadadka lagama maarmaanka ah
// rtc.setDOW(6); // Maalinta toddobaadka
// rtc.setTime (22, 04, 0); // Waqtiga, qaab 24 saac ah.
// rtc.setTaariikhda (4, 5, 2019); // Taariikhda, Oktoobar 29, 2018

Serial.begin (2000000);
//////// Bilaabidda Shaashada
tft.bilow (0x65);
tft.reset();
tft.setRotation (0);
tft.cp437 (run);
//////////////////Wasaarada magacyada, agabka agabka, magaca ururka
tft.fillScreen(MADOW);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.setCursor (8, 0);
tft.println ("HORUUMAYAASHA & DHISMAHA");
tft.setCursor (30, 20);
tft.print (utf8rus ("Constructor V.V."));
tft.setCursor (40, 40);
tft.print (utf8rus ("Turner I.I." ));
dib u dhac (2000);

radio.bilow(); // Bilow shaqada nRF24L01+
radio.setChannel(120); // Sheeg kanaalka soo dhaweynta xogta (laga bilaabo 0 ilaa 127)
radio.setDataRate(RF24_250KBPS); // Sheeg heerka wareejinta xogta (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Mbit/s
radio.setPALevel(RF24_PA_MAX); // Sheeg awooda gudbiyaha (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openReadingPipe (1, 0xAABBCCDD11LL); // Fur 1 tuubo oo leh tilmaanta 1 gudbiyaha 0xAABBCCDD11, si aad u hesho xogta
// Fur tuubbada 2 oo wata aqoonsiga gudbiyaha 2xAABBCCDD0 si aad u hesho xogta
radio.bilow Dhagaysi(); // Daar aqbalaha, bilow dhageysiga tubooyinka furan
// radio.stop Dhagaysi();
////////Oo soosaarka macluumaadka adeegga
tft.fillScreen(MADOW);
tft.setCursor (8, 0);
tft.setTextSize(1);
////////Bilow bilowga kaadhka SD
Serial.println ("kaadhka SD ee hore");
tft.println ("kaadhka SD ee hore");
tft.setCursor (8, 10);
////////Bilaabida kaadhka
haddii (!SD.bilow(SD_CS_PIN)) {
Serial.println ("bilawgii wuu fashilmay!");
tft.fillRect (8, 10, 85, 7, CASAAN);
tft.setTextColor(BLACK);
tft.println ("Markii hore wuu fashilmay!");
soo noqosho;
}
tft.setTextColor(WHITE);
Serial.println ("bilawga la sameeyey");
tft.println ("Bilawga la sameeyay");
dib u dhac (2000);
////////Wakhtiga iyo taariikhda akhrinta iyo ku meelaynta doorsoomayaasha
t = rtc.getTime ();
time_sec_prev = t.sec;
time_day_prev = t.taariikhda;
////////Si qasab ah u soo saar taariikhda si aan loo sugin taariikhda ay isbeddelayso si loo muujiyo
tft.setCursor (180, 0); // dejinta booska cursorka
tft.fillRect (178, 0, 65, 7, GRAY); // nadiifinta aagga wakhtiga wax-soo-saarka
tft.setTextSize(1);
tft.print (rtc.getDateStr());
//////// soo saar magaca walxaha xakamaynta
tft.setTextSize(2);
tft.setCursor (60, 25);
tft.println (utf8rus("Winches I"));
////////Abuuritaanka faylka log iyo soo saarida natiijada isku dayga abuurista
tft.setTextSize(1);
tft.setCursor (130, 10); // haddii faylka log 2.txt la abuuro, ka dibna u qorista faylka way sii socon doontaa
haddii (SD.jiro (perv)) {
//tft.setCursor (0, 90);
tft.println (perv);
Serial.println (perv);
} kale {
myFile = SD.furan (perv, FILE_WRITE); // haddii faylka 2.txt uusan jirin, waa la abuuri doonaa
myFile.close ();
tft.println (perv);
Serial.println (perv);
}
}

loox madhan (madhan) {
//////// Hubinta jiritaanka codsiga soo saarida log ee kormeeraha dekedda COM
haddii (Serial.available()> 0) {
haddii (1 == Taxane.akhri());
//////// Iyo haddii "1" la aqbalo, ka dibna wax soo saarka
Faylka myFile = SD.furan(perv);
// haddii faylka la heli karo, u qor:
haddii (myFile) {
halka (myFile.available()) {
Serial.write (myFile.read());
}
myFile.close ();
}
kale {
Serial.println ("furitaanka qaladka .txt");
}
}
////////Waqtiga wax-akhriska
t = rtc.getTime ();
tft.setTextColor(WHITE);
//////// Haddii wakhtigu is beddelay, ka dibna soo bandhig akhrinta saacadaha cusub
haddii (time_sec_prev! = t.sec) {
tft.setCursor (120, 0); // dejinta booska cursorka
tft.fillRect (118, 0, 50, 7, GRAY); // nadiifinta aagga wakhtiga wax-soo-saarka
tft.setTextSize(1);
tft.print (rtc.getTimeStr()); // akhrinta saacada wax soo saarka
time_sec_prev = t.sec;
}
////////Haddii taarikhdu is bedeshay, ka dib soo bandhig taariikhda cusub
haddi (time_day_prev!= t.taariikhda) {
tft.setCursor (180, 0); // dejinta booska cursorka
tft.fillRect (178, 0, 65, 7, GRAY); // cad oo taariikhda lagu soo bandhigo
tft.setTextSize(1);
tft.print (rtc.getDateStr()); // soo bandhig akhrinta taariikhda
time_day_prev = t.taariikhda;
}
////////Haddii soo dhaweynta raadiyaha la heli karo, markaas
haddii (radio.la heli karo(& tuubo)) {
//////// hubinta in kaydka heeliyuhu uu buuxo,
radio.akhri(&data, sizeof(xogta));
//////// haddii ciwaanka gudbiyaha ee loo baahan yahay la heli karo, markaa
haddii (tuubo = 1) {
//////// sugaya isku xigxiga eber si loo go'aamiyo
// bilawga xannibaadda xogta
haddii (xog == 0000) {
rc = 0;
} kale {
rc++;
}
////////Qiimaha xisaabaadka duubista iyo xisaabinta 10-ka iyo 100-aad ee saac
haddii (rc == 1) {
leb_1 = xogta / 3600.0;
}

haddii (rc == 2) {
leb_2 = xogta / 3600.0;
}

haddii (rc == 3) {
leb_3 = xogta / 3600.0;
}

haddii (rc == 4) {
leb_4 = xogta / 3600.0;
}
}
}
r++;
k++; // kaliya miiska
//////// Cusboonaysiinta xogta oo leh waqti go'an
haddii ( r >= 6500) {
tft.setTextSize(2);
tft.fillRect (0, 41, 180, 64, GRAYD);
Serial.println ("Lebedki I");
tft.setCursor (0, 41);
tft.println (leb_1);
Serial.println (leb_1);
tft.println (leb_2);
Serial.println (leb_2);
tft.println (leb_3);
Serial.println (leb_3);
tft.println (leb_4);
Serial.println (leb_4);
Serial.println (k);
r = 0;
}
////////ku qor xogta galka SD 10kii daqiiqoba mar.
haddii ((t.min % 10 == 0) && (t.sec == 0)) {
tft.setTextSize(1);
tft.setCursor (200, 10);
tft.setTextColor(BLACK);
////////Abuuritaanka xadhig qaab .csv ah
String dataString = Xarig (rtc.getDateStr()) + ", "+(rtc.getTimeStr()) + "," + (leb_1) + "," + (leb_2)
+ "," + (leb_3) + ", " + (leb_4) + ", ";
////////Qor fayl oo soo saar natiijada habka qorista
myFile = SD.furan (perv, FILE_WRITE); // haddii uusan jirin fayl la yiraahdo "2.txt", waa la abuuri doonaa.
haddii (myFile) {
myFile.println (dataString);
myFile.close ();
tft.fillRect (198, 8, 42, 10, GREEN);
tft.println ("SD OK");
Serial.println ("SD OK");
dib u dhac (900); // dib u dhac, haddii kale waxa uu diiwaangeliyaa 13 akhrin isku mid ah ilaa ilbidhiqsigu dhaafo
} kale {
tft.fillRect (198, 8, 42, 10, CASAAN);
tft.println ("SD ERR");
Serial.println ("SD ERR");
}
}
}Barnaamijka beddelka dabeecadda/* Dib u habeynta xarfaha Ruushka ee UTF-8 ilaa Windows-1251 */

String utf8rus(Isha Xargaha)
{
int i,k;
Bartilmaameedka xargaha;
char aan saxiixin;
char m[2] = {'0', ''};

k = isha.dhererka (); i = 0;

halka (i <k) {
n = isha[i]; i++;

haddii (n>= 0xC0) {
beddelo (n) {
kiiska 0xD0: {
n = isha[i]; i++;
haddii (n == 0x81) {n = 0xA8; jebin; }
haddii (n >= 0x90 && n <= 0xBF) n = n + 0x30;//0x2F
jebin,
}
kiiska 0xD1: {
n = isha[i]; i++;
haddii (n == 0x91) {n = 0xB8; jebin; }
haddii (n >= 0x80 && n <= 0x8F) n = n + 0x70;//0x6F
jebin,
}
}
}
m[0] = n; bartilmaameed = bartilmaameed + Xarig (m);
}
soo celinta bartilmaameedka;
}Barnaamijka codaynta jilayaasha ee wax-soo-saarka Cyrillic iyadoo la adeegsanayo maktabadda Adafruit_GFX waxa lagu meeleeyaa isla faylka barnaamijka ugu weyn. Waxaad sidoo kale u baahan tahay inaad ku bedesho glcdfont.c faylka Adafruit_GFX adigoo wata far kale. waa maktabad leh beddelka loo baahan yahay. Macluumaad dheeraad ah oo ku saabsan Russification si fudud ayaa looga heli karaa internetka.
Si loo soo koobo, waxaan dhihi doonaa nidaamku wuxuu ku noolaa wixii laga filayey, way fududahay in la kormeero waqtiga hawlgalka qalabka. Inkasta oo wax walba ay ku urursan yihiin sabuuradaha, ma jiraan cabashooyin degdeg ah oo ku saabsan shaqada. Cunsurradii ugu horreeyay waxay shaqeynayeen in ka badan lix bilood waxayna ka badbaadeen jiilaalka. Naqshadihii ugu dambeeyay Waxa ay ku shaqaynaysay 9 unug oo kantarool ah tan iyo 5-tii March wakhtiga shaqadana si rasmi ah ayaa loo diiwaangelinayaa iyada oo la isticmaalayo.

Source: www.habr.com

Add a comment