Sisukord:

Temperatuuri ja valguse taseme monitor koos LCD -ekraaniga NOKIA 5110: 4 sammu
Temperatuuri ja valguse taseme monitor koos LCD -ekraaniga NOKIA 5110: 4 sammu

Video: Temperatuuri ja valguse taseme monitor koos LCD -ekraaniga NOKIA 5110: 4 sammu

Video: Temperatuuri ja valguse taseme monitor koos LCD -ekraaniga NOKIA 5110: 4 sammu
Video: VideoPROJEKTOR MÄNGUDEKS!!! VIVICINE K3, mis põhineb ANDROID 9.0 #vivicine'il 2024, Juuli
Anonim
Image
Image

Tere kõigile!

Selles jaotises valmistame lihtsa elektroonilise seadme temperatuuri ja valguse taseme jälgimiseks. Nende parameetrite mõõtmised kuvatakse LCD -ekraanil NOKIA 5110. Seade põhineb mikrokontrolleril AVR ATMEGA328P. Seireseade on varustatud DS18B20 digitaalse termomeetri ja fototakistiga valguse taseme mõõtmiseks.

Samm: kirjeldage komponente

Kirjeldus Komponendid
Kirjeldus Komponendid
Kirjeldus Komponendid
Kirjeldus Komponendid

Jälgimisseadme põhikomponendid:

  • Mikrokontroller AVR «ATMEGA328P»
  • Mustvalge graafiline LCD "NOKIA 5110"
  • Programmeeritav eraldusvõimega 1-juhtmeline digitaalne termomeeter "DS18B20"
  • Valgusõltuv takisti
  • Juhtmed

Mikrokontroller AVR «ATMEGA328P»

Seireseade kasutab järgmisi mikrokontrolleri perifeerseid funktsioone:

  1. 16-bitine taimer/loenduri katkestus
  2. 8-kanaliline 10-bitine ADC
  3. Master/slave SPI jadaliides

Mustvalge graafiline LCD "NOKIA 5110"

Spetsifikatsioonid:

  1. 48 x 84 punkti LCD -ekraan
  2. Jadasiini liides maksimaalse suure kiirusega 4 Mbit/s
  3. Sisemine kontroller/draiver «PCD8544»
  4. LED-taustvalgus
  5. Töötage pingega 2,7–5 volti
  6. Madal energiatarve; see sobib akurakenduste jaoks
  7. Temperatuurivahemik -25 ° C kuni +70 ° C
  8. Toetage signaali CMOS -sisendit

LCD -aadressi käsitlemine (aadressimine):

LCD-ekraanil (DDRAM) näidatud mälu aadresside paigutus on maatriks, mis koosneb 6 reast (Y-aadress) Y-aadressist 0 kuni Y-aadressini 5 ja 84 veerust (X-aadress) X-aadressist 0 kuni X- Aadress 83. Kui kasutaja soovib juurdepääsu tulemuse kuvamise positsioonile LCD-ekraanil, peab ta viitama X-aadressi ja Y-aadressi vahelisele suhtele.

Kuvamiseks saadetavad andmed on 8 -bitised (1 bait) ja need paigutatakse vertikaalseks jooneks; sel juhul on bitt MSB madalam ja bitt LSB ülemine, nagu pildil näidatud.

Programmeeritav eraldusvõimega 1-juhtmeline digitaalne termomeeter DALLAS «DS18B20»

Funktsioonid:

  1. Ainulaadne 1-Wire® liides nõuab suhtlemiseks ainult ühte pordi tihvti
  2. Vähendage komponentide arvu integreeritud temperatuurianduri ja EEPROM -i abil
  3. Mõõdab temperatuuri vahemikus -55 ° C kuni +125 ° C (-67 ° F kuni +257 ° F)
  4. ± 0,5 ° C Täpsus vahemikus -10 ° C kuni +85 ° C
  5. Programmeeritav eraldusvõime 9 bitist 12 bitini
  6. Väliseid komponente pole vaja
  7. Parasiittoite režiim nõuab töötamiseks ainult 2 tihvti (DQ ja GND)
  8. Lihtsustab hajutatud temperatuuritundlikke rakendusi mitme tilgaga
  9. Igal seadmel on unikaalne 64-bitine jadakood, mis on salvestatud pardal olevasse ROM-i
  10. Paindlikud kasutaja määratletavad püsimatud (NV) häireseaded koos häireotsingu käsuga tuvastab seadmed, mille temperatuur on väljaspool programmeeritud piire

Rakendused:

  1. Termostaatilised juhtnupud
  2. Tööstussüsteemid
  3. Tarbekaubad
  4. Termomeetrid
  5. Termiliselt tundlikud süsteemid

Valgusõltuv takisti

Valgusõltuv takisti (LDR) on andur, mis muudab oma takistust, kui selle pinnale langeb valgus.

Tavaliselt on LDR -l täielik pimedus ühest megaohmist kuni kahe megaohmini, kümne kuni kahekümne kilo -oomi kümne LUX -i juures, kahe kuni viie kilo -oomi 100 LUX -i juures. Anduri kahe kontakti vaheline takistus väheneb valguse intensiivsusega või juhtivus kahe anduri kontakti vahel suureneb.

Kasutage pingejaotusahelat takistuse muutuse muutmiseks pinge muutuseks.

Samm: mikrokontrolleri püsivara kood

#ifndef F_CPU #define F_CPU 16000000UL // teatades kontrolleri kristallisagedusele (16 MHz AVR ATMega328P) #endif

// SPI INTERFACE DEFINES #define MOSI 3 // MOSI it PORT B, PIN 3 #define MISO 4 // MISO it PORT B, PIN 4 #define SCK 5 // SCK it PORT B, PIN 5 #define SS 2 // SS see on PORT B, PIN 2

// NULLI NÄITUS #define RST 0 // LÄHTESTA SEE PORT B, PIN 0

// DISPLAY MODE SELECT - sisend käsu/aadressi või andmete sisestamise valimiseks. #define DC 1 // DC see on PORT B, PIN 1

// negatiivsete tähistega koodide massiivi kood märkimata char neg [4] = {0x30, 0x30, 0x30, 0x30};

// kodeerib numbrite massiivi [0..9] staatiline const unsigned char font6x8 [10] [16] = {{0xFC, 0xFE, 0xFE, 0x06, 0x06, 0xFE, 0xFE, 0xFC, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01}, // 0 {0x00, 0x00, 0x18, 0x1C, 0xFE, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00}, // {1 0x0C, 0x8E, 0xCE, 0xE6, 0xE6, 0xBE, 0x9E, 0x0C, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01}, // 2 {0x00, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x8C, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01}, // 3 {0x3C, 0x3E, 0x7C, 0x60, 0x60, 0xFC, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x01, 0x03, 0x01}, // 4 {0x1C, 0x3E, 0x3E, 0x36, 0x36, 0xF6, 0xF6, 0xE4, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01x, // 5 0xFE, 0xFE, 0x36, 0x36, 0xF6, 0xF6, 0xE4, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01}, // 6 {0x04, 0x06, 0x06, 0x86, 0xE6, 0x86, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00}, // 7 {0xCC, 0xFE, 0xFE, 0x36, 0x36, 0xFE, 0xFE, 0xCC, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 0x0 3, 0x01}, // 8 {0x3C, 0x7E, 0x7E, 0x66, 0x66, 0xFE, 0xFE, 0xFC, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01} // 9};

// kodeerib sõna massiivi "TEMP:" staatiline const unsigned märk TEMP_1 [165] = {0x02, 0x06, 0x06, 0xFE, 0xFE, 0xFE, 0x06, 0x06, 0x02, 0x00, 0xFC, 0xFE, 0xFE, 0x26, 0x26, 0x24, 0x00, 0xFC, 0xFE, 0xFE, 0x1C, 0x38, 0x70, 0x38, 0x1C, 0xFE, 0xFE, 0xFC, 0x00, 0xFC, 0xFE, 0xFE, 0x66, 0x66, 0x7E, 0x7E, 0xC, 0x66 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 0x01, 0x03, 0x01, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0C, 0x1E, 0x33, 0x33, 0x1E, 0x0C, 0x0, 0x8 0x9C, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x01,};

// kodeerib sõna massiivi "LUX": const unsigned char TEMP_2 [60] = {0xFC, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFC, 0x00, 0x00, 0xFC, 0xFE, 0xFC, 0x00, 0x04, 0x8E, 0xDE, 0xFC, 0xF8, 0xFC, 0xDE, 0x8E, 0x04, 0x00, 0x8C, 0x8C, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x01, 0x03, 0x03, 0x01, 0x00, 0x01, 0x01};

#kaasake

#kaasama #kaasama

// Pordi initsialiseerimine tühistab Port_Init () {DDRB = (1 << MOSI) | (1 << SCK) | (1 << SS) | (1 << RST) | (1 << DC); // Määra MOSI, SCK, SS, RST, DC väljundina, kõik teised sisend PORTB | = (1 << RST); // Seadke RST pin kõrgeks PORTB | = (1 << SS); // Määrake SS pin kõrgeks - Ekraan on Keela DDRC = 0xFFu; // Määra kõik PORTC tihvtid väljundiks. DDRC & = ~ (1 << 0); // Teeb PORTC esimese tihvti sisendiks PORTC = 0x00u; // Seadke kõik PORTC tihvtid madalaks, mis selle välja lülitab. }

// ADC initsialiseerimine tühine ADC_init () {// Luba ADC, diskreetimissagedus = osc_freq/128 seadista eelpinge maksimumväärtuseks, 128 ADCSRA | = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); ADMUX = (1 << REFS0); // Valige pinge viide ADC -le // Valige vaikimisi kanal 0, kasutades ADC Multiplexer Select registrit (ADC0). }

// Analoog -digitaalmuundamise tulemuse lugemise funktsioon uint16_t get_LightLevel () {_delay_ms (10); // Oota mõnda aega, kuni kanal saab valitud ADCSRA | = (1 << ADSC); // Alustage ADC teisendamist, määrates ADSC bit. kirjutage ADSC -le 1, samal ajal kui (ADCSRA & (1 << ADSC)); // oodake konversiooni lõpuleviimist // ADSC muutub seni 0 -ks, käivitage tsükkel pidevalt _delay_ms (10); tagasipöördumine (ADC); // Tagastab 10-bitise tulemuse}

?? Registreeri }

// initsialiseerida 16 -bitine Timer1, katkestus ja muutuja void TIMER1_init () {// seadistada taimer eelhääletajaga = 256 ja CTC -režiim TCCR1B | = (1 << WGM12) | (1 << CS12); // lähtestada loendur TCNT1 = 0; // initsialiseeri võrdlusväärtus - 1 sek OCR1A = 62500; // lubage võrdlus katkestus TIMSK1 | = (1 << OCIE1A); // lubada globaalsed katkestused sei (); }

// Kuva Kuva lubamine tühine SPI_SS_Enable () {PORTB & = ~ (1 << SS); // SS -pin loogika lubamine 0}

// Display Disable void SPI_SS_Disable () {PORTB | = (1 << SS); // SS -tihvti loogika keelamine 1}

// Funktsioon andmete kuvamispuhvrisse saatmiseks tühi SPI_Tranceiver (allkirjastamata char andmed) {SPDR = data; // Laadige andmed puhvrisse while (! (SPSR & (1 << SPIF))); // Oodake, kuni edastamine on lõpule viidud}

// Lähtesta kuvar lähtestamise alguses void Display_Reset () {PORTB & = ~ (1 << RST); _viivitus_ms (100); PORTB | = (1 << RST); }

// Käsu kirjutamise funktsioon void Display_Cmnd (allkirjastamata sümboli andmed) {PORTB & = ~ (1 << DC); // teha DC pin loogikaks 0 käsutoiminguks SPI_Tranceiver (andmed); // andmete saatmine andmeregistrisse PORTB | = (1 << DC); // muutke DC -nööpnõel loogikaks kõrgeks andmete töötamiseks}

// Ekraani initsialiseerimine tühine Display_init () {Display_Reset (); // ekraani lähtestamine Display_Cmnd (0x21); // käsk seatud lisarežiimis Display_Cmnd (0xC0); // seadistage pinge, saates C0 tähendab VOP = 5V Display_Cmnd (0x07); // seadistage temp. koefitsient kuni 3 Display_Cmnd (0x13); // Voltage Bias System määratud väärtus Display_Cmnd (0x20); // käsu komplekt põhirežiimis Display_Cmnd (0x0C); // kuva tulemus tavarežiimis}

// Kustuta kuva tühjus Display_Clear () {PORTB | = (1 << DC); // muuta DC -pin loogikale kõrgeks (int k = 0; k <= 503; k ++) {SPI_Tranceiver (0x00);} PORTB & = ~ (1 << DC); // muuta DC -pin loogikaks käskude tegemiseks null}

// seadke veerg ja rida tulemuse kuvamise asendisse LCD -ekraanil tühi Display_SetXY (unsigned char x, unsigned char y) {Display_Cmnd (0x80 | x); // veerg (0-83) Display_Cmnd (0x40 | y); // rida (0–5)}

// Funktsioon negatiivse märgi kuvamiseks tühi Display_Neg (allkirjastamata märk) {Display_SetXY (41, 0); // Määra kuvatava asukoha aadress (int index = 0; index0) {SPDR = 0x30;} // Laadi andmed kuvari puhvrisse (kuva negatiivne märk) else {SPDR = 0x00;} // Laadi andmed kuva puhver (selge negatiivne märk) samas (! (SPSR & (1 << SPIF))); // Oodake, kuni edastamine on lõppenud _delay_ms (100); }}

// Funktsioon digitaalse märgi tühjendamiseks tühi Off_Dig (allkirjastamata sümbol x, märkimata märk y) {Display_SetXY (x, y); // Määrake kuvatava positsiooni aadress (ülemine rida) (int indeks = 0; indeks <8; indeks ++) {SPI_Tranceiver (0);} // Laadige andmed kuva puhverisse (selge digitaalse märgi ülemine osa) y ++; Display_SetXY (x, y); // Määrake kuvatava positsiooni aadress (alumine rida) (int indeks = 0; indeks <8; indeks ++) {SPI_Tranceiver (0);} // Laadige andmed ekraani puhverisse (selge digitaalse märgi alumine osa)}

// Funktsioon digitaalse märgi tühja kuvamiseks <16; indeks ++) {if (indeks == 8) {y ++; Display_SetXY (x, y);} // Määra kuvatava asukoha aadress (alumine rida) SPI_Tranceiver (font6x8 [dig] [register]); // Laadige koodide massiivi numbriandmeid kuvari puhverisse _delay_ms (10); }}

// DS18B20 allkirjastamata märk SS18B20_init () {DDRD | = (1 << 2); // Määra PORTD PD2 pin väljundiks PORTD & = ~ (1 << 2); // Määra PD2 pin madalaks _delay_us (490); // Initsialiseerimise ajastus DDRD & = ~ (1 << 2); // Määra PORTD PD2 pin sisendiks _delay_us (68); // Ajastus OK_Flag = (PIND & (1 << 2)); // saada anduri impulss _delay_us (422); tagasta OK_Flag; // tagastab 0-ok andur on pistik, 1-vea andur on lahti ühendatud}

// Funktsioon DS18B20 baidi lugemiseks unsigned char read_18b20 () {unsigned char i, data = 0; jaoks (i = 0; i <8; i ++) {DDRD | = (1 << 2); // Määra PORTD PD2 pin väljundiks _delay_us (2); // Ajastus DDRD & = ~ (1 1; // Järgmine bit, kui (PIND & (1 << 2)) andmed | = 0x80; // pane bit baiti _delay_us (62);} tagastab andmed;}

// Funktsioon baidi kirjutamiseks DS18B20 void write_18b20 (allkirjastamata char andmed) {unsigned char i; jaoks (i = 0; i <8; i ++) {DDRD | = (1 << 2); // Määra PORTD PD2 pin väljundiks _delay_us (2); // Ajastus if (andmed & 0x01) DDRD & = ~ (1 << 2); // kui tahame kirjutada 1, vabastage rida else DDRD | = (1 1; // Järgmine bit _delay_us (62); // Ajastus DDRD & = ~ (1 << 2); // Määrake PORTD sisendina _delay_us (2);}}

// Funktsioon valguse taseme kuvamiseks tühine Read_Lux () {uint16_t puhver; allkirjastamata int temp_int_1, temp_int_2, temp_int_3, temp_int_0; // ühekohalised, kahekohalised, kolmekohalised, veerandkohalised puhver = get_LightLevel (); // loe analoog -digitaal tulemuse teisendamise valguse tase temp_int_0 = puhver % 10000/1000; // veerandkohaline temp_int_1 = puhver % 1000 /100; // kolmekohaline temp_int_2 = puhver % 100/10; // kahekohaline temp_int_3 = puhver % 10; // ühekohaline if (temp_int_0> 0) // kui tulemus on veerandkohaline number {Display_Dig (temp_int_0, 32, 2); // kuvab 1 taseme valgustaset Display_Dig (temp_int_1, 41, 2); // kuva 2 -kohaline valgusaste Display_Dig (temp_int_2, 50, 2); // kuva 3 -kohaline valgusaste Display_Dig (temp_int_3, 59, 2); // kuva 4 valguse taseme numbrit} else {if (temp_int_1> 0) // kui tulemus on kolmekohaline number {Off_Dig (32, 2); // kustuta number 1 märk Display_Dig (temp_int_1, 41, 2); // kuvab 1 numbrit valgustaset Display_Dig (temp_int_2, 50, 2); // kuva 2 -kohaline valgusaste Display_Dig (temp_int_3, 59, 2); // kuva 3-kohaline valgusaste} else {if (temp_int_2> 0) // kui tulemus on kahekohaline number {Off_Dig (32, 2); // kustuta number 1 märk Off_Dig (41, 2); // kustuta numbri 2 märk Display_Dig (temp_int_2, 50, 2); // kuvab 1 numbrit valgustaset Display_Dig (temp_int_3, 59, 2); // kuva 2 valguse taseme numbrit} else // kui tulemus on ühekohaline number {Off_Dig (32, 2); // kustuta number 1 märk Off_Dig (41, 2); // kustuta numbri 2 märk Off_Dig (50, 2); // kustuta numbri 3 märk Display_Dig (temp_int_3, 59, 2); // kuva 1 valgustugevus}}}}

// Funktsioon temperatuuri kuvamiseks tühi Read_Temp () {unsigned int buffer; allkirjastamata int temp_int_1, temp_int_2, temp_int_3; // ühekohalised, kahekohalised, kolmekohalised, veerandkohalised numbrid märk Temp_H, Temp_L, OK_Flag, temp_flag; DS18B20_init (); // DS18B20 initsialiseerimine write_18b20 (0xCC); // Anduri koodi kontrollimine write_18b20 (0x44); // Alusta temperatuuri teisendamist _delay_ms (1000); // Anduri küsitluse viivitus DS18B20_init (); // DS18B20 initsialiseerimine write_18b20 (0xCC); // Anduri koodi kontrollimine write_18b20 (0xBE); // Käsk anduri sisu lugemiseks Temp_L = read_18b20 (); // Loe kaks esimest baiti Temp_H = read_18b20 (); temp_lipp = 1; // 1-positiivne temperatuur, 0-negatiivne temperatuur // Saada negatiivne temperatuur, kui (Temp_H & (1 << 3)) // Sign Bit Check (kui bitt on seatud-negatiivne temperatuur) {sign int temp; temp_lipp = 0; // lipp on seatud 0 - negatiivne temperatuur temp = (Temp_H << 8) | Temp_L; temp = -temperatuur; // Teisenda lisakood otse Temp_L = temp; Temp_H = temp >> 8; } puhver = ((Temp_H 4); temp_int_1 = puhver % 1000/100; // kolmekohaline temp_int_2 = puhver % 100/10; // kahekohaline temp_int_3 = puhver % 10; // ühekohaline

// Kui temperatuur on negatiivne, näitab see temperatuuri

if (temp_flag == 0) {Display_Neg (1);} else {Display_Neg (0);} if (temp_int_1> 0) // kui tulemus on kolmekohaline number {Display_Dig (temp_int_1, 45, 0); // kuvab temperatuuri 1 numbri Display_Dig (temp_int_2, 54, 0); // kuvab temperatuuri 2 numbrit Display_Dig (temp_int_3, 63, 0); // kuva temperatuur 3 numbrit} else {if (temp_int_2> 0) // kui tulemus on kahekohaline number {Off_Dig (45, 0); // kustuta number 1 märk Display_Dig (temp_int_2, 54, 0); // kuvab temperatuuri 1 numbri Display_Dig (temp_int_3, 63, 0); // kuva 2 temperatuuri numbrit} else // kui tulemus on ühekohaline number {Off_Dig (45, 0); // kustuta number 1 märk Off_Dig (54, 0); // kustuta numbri 2 märk Display_Dig (temp_int_3, 63, 0); // kuva 1 temperatuuri number}}}

// See ISR käivitatakse alati, kui taimerite arv võrdleb võrdlusväärtusega (iga 1 sekundi järel) ISR (TIMER1_COMPA_vect) {// Lugemine, temperatuuri ja valgustuse kuvamine Read_Temp (); Read_Lux (); }

// Funktsioon sõnade "TEMP" ja "LUX" kuvamiseks void Display_label () {// Word "TEMP" Display_SetXY (0, 0); // Määra kuvatava positsiooni aadress (üles rida) (int indeks = 0; indeks <105; indeks ++) {if (indeks == 40) {Display_SetXY (0, 1);} // Määra positsiooni aadress ekraanil (alumine rida), kui (indeks == 80) {Display_SetXY (72, 0);} // Määrake kuvatava positsiooni aadress (ülemine rida), kui (indeks == 92) {Display_SetXY (72, 1); } // Määra kuvatava asukoha aadress (alumine rida) SPDR = TEMP_1 [indeks]; // Laadige koodimassiivi andmed kuvari puhverisse, kui (! (SPSR & (1 << SPIF))); // Oodake, kuni edastamine on lõppenud _delay_ms (10); } // Sõna "LUX" Display_SetXY (0, 2); // Määra kuvatava positsiooni aadress (üles rida) (int indeks = 0; indeks <60; indeks ++) {if (indeks == 30) {Display_SetXY (0, 3);} // Määra positsiooni aadress ekraanil (alumine rida) SPDR = TEMP_2 [indeks]; // Laadige koodide massiivi andmed kuvari puhverisse, kui (! (SPSR & (1 << SPIF))); // Oodake, kuni edastamine on lõppenud _delay_ms (10); }}

int main (tühine)

{Port_Init (); // Pordi initsialiseerimine ADC_init (); // ADC initsialiseerimine SPI_Init (); // SPI initsialiseerimine SPI_SS_Enable (); // Kuva lubamine DS18B20_init (); // DS18B20 initsialiseerimine Display_init (); // Ekraani initsialiseerimine Display_Clear (); // Kuva selge Display_label (); // Näita sõnu "TEMP" ja "LUX" TIMER1_init (); // Taimer1 Initsialiseerimine. Alustage jälgimist. Parameetrite hankimine iga sekundi tagant. // Lõpmatuse silmus samas (1) {}}

Samm: püsivara vilkumine mikrokontrollerile

HEX -faili üleslaadimine mikrokontrolleri välkmällu. Vaadake videot mikrokontrolleri välkmälu põletamise üksikasjaliku kirjeldusega: Mikrokontrolleri välkmälu põletamine…

4. samm: jälgimisseadme vooluahela koost

Jälgimisseadme vooluahela komplekt
Jälgimisseadme vooluahela komplekt
Jälgimisseadme vooluahela komplekt
Jälgimisseadme vooluahela komplekt

Ühendage komponendid vastavalt skemaatilisele skeemile.

Ühendage toide vooluvõrku ja see töötab!

Soovitan: