This is an old revision of the document!
Modifitseerida näiteprogrammi nii, et nupule vajutades vilgub LED kolm korda
Modifitseerida näiteprogrammi nii, et nupule vajutades hakkab led konstantselt vilkuma 1 sek intervalliga ja teine nupule vajutus katkestab vilkumise
Modifitseerida programmi nii, et potentsiomeetriga määratakse LED-i heledus, kasutades selleks delay funktsioone.
Modifitseerida programmi nii, et potentsiomeetriga määratakse temperatuuri nivoo, mis salvestatakse nupuga programmi mällu ja selle nivoo hilisemal ületamisel käivitatakse täiturmehhanism (milleks on LED).
Kombineerida LED-i heleduse programm ja eelnev temperatuuri juhtimise programm, kus LED-i heledus sõltub sellest, kui palju nivootemperatuuri ületati (1 kraad: heledus 25 %, 2 kraadi: heledus 50 %, 3 kraadi: heledus 75 % ja 5 kraadi: heledus 100 %)
Luua programm, mis võimaldab servomootori positsiooni muuta vastavalt nuppudega seadistatud suurusele.
Luua programm, mis servomootori baasil ehitatud radariga ja fotoanduriga leiaks ruumist kõige eredama punkti.
Luua programm, mis jadaliidesest saadetud teksti kirjutaks LCD ekraanile. Märk „+“ vahetab rida ning märk „-“ kustutab kogu ekraani.
Luua programm, mis temperatuurinivoo ületamisel muudab õhuklapi asendit (servo mootor). Temperatuurinivoo määratakse potentsiomeetriga. Õhuklapi asend sõltub temperatuuri erinevusest. Iga temperatuuri kraad, mis ületab nivood lisab klapi nurga 25%. Lüliti katkestab igal ajahetkel süsteemi töö (hädastop) ja viib klapi algasendisse tagasi, jättes punase LED-i vilkuma. Edasijõudnud võivad kasutada katkestust.
/* Nimetus: Projekt #1 Luua programm, mis temperatuurinivoo ületamisel muudab õhuklapi asendit (servo mootor). Temperatuurinivoo määratakse potentsiomeetriga. Õhuklapi asend sõltub temperatuuri erinevusest. Iga temperatuuri kraad, mis ületab nivood lisab klapi nurga 25%. Lüliti katkestab igal ajahetkel süsteemi töö (hädastop) ja viib klapi algasendisse tagasi, jättes punase LED-i vilkuma. Edasijõudnud võivad kasutada katkestust. Kirjeldus: Kasutab Steinhart-Hart termistori valemit: temperatuur kelvinites = 1 / {A + B[ln(R)] + C[ln(R)]^3} kus A = 0.001129148, B = 0.000234125 ja C = 8.76741E-08 Autor: Milan Malesevic and Zoran Stupic Modifikatsioon: Raivo Sell Kuupäev: 15.01.2013/4.06.2014 Versioon: 1.1 */ // Kaasame vajalikud teegid #include <math.h> #include <LiquidCrystal.h> #include <SoftPWM.h> #include <Servo.h> Servo Aknaservo; // Initsialiseerime LCD koos vastavate viikude ühendamisega LiquidCrystal lcd(8, 9, 4, 5, 6, 7); int andur = A4; // määrame potentsiomeetri sisendviigu int pote_sisend=A1; int LED=A5; int nupud=A0; int pote_temp=0; int seade_temp=0; int nullistSajani; unsigned long laks=0; boolean korras=true; void setup() { Aknaservo.attach(A2); // Initialize //SoftPWMBegin(); // Create and set pin 13 to 0 (off) //SoftPWMSet(13, 0); pinMode(pote_sisend,INPUT); pinMode(LED,OUTPUT); pinMode(nupud,INPUT); lcd.begin(16, 2); //Määrame LCD read ja veerud lcd.print("Temperatuur"); // Trükime tervitusteksti seade_temp=25; delay (500); lcd.clear(); Aknaservo.write(0); Serial.begin(9600); } void loop() { while(korras) { if(millis()-1000>laks){ lcd.clear(); // Puhastame ekraani vanadest andmetest Termistor(analogRead(andur)); // Käivitame funktsooni laks=millis(); } if(analogRead(nupud)>490 && analogRead(nupud)<900) { korras^=1; Aknaservo.write(0); } Serial.println(analogRead(nupud)); } if(!korras) { digitalWrite(LED,1); delay(1000); digitalWrite(LED,0); delay(1000); Termistor(analogRead(andur)); } } void Termistor(int RawADC) { double Temp; long Takistus; // Valem: Takistus = (1024 * JaguriTakisti/ADC) - JaguriTakisti Takistus=((10240000/RawADC) - 10000); pote_temp=analogRead(pote_sisend); pote_temp=map(pote_temp,0,1023,-10,35); //Esimene rida lcd.setCursor(0, 0); lcd.print("Pot:"); lcd.print(pote_temp); //Trükime pinge väärtuse //Teine rida if(analogRead(nupud)<100) seade_temp=pote_temp; lcd.setCursor(0, 1); lcd.print("Seade:"); lcd.print(seade_temp); //Trükime takistuse väärtuse Temp = log(((10240000/RawADC) - 10000)); Temp = 1/(0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp))* Temp); Temp = Temp - 273.15; // Konverteeri Kelvinid Celciustesse lcd.setCursor(8, 0); lcd.print("Tmp:"); lcd.print(Temp); //Trükime temperatuuri väärtuse int vahe=Temp-seade_temp; //lcd.setCursor(8,1); //lcd.print(vahe); if(korras){ switch (vahe) { case 1: Aknaservo.write(Teisenda(25)); break; case 2: Aknaservo.write(Teisenda(50)); break; case 3: case 4: Aknaservo.write(Teisenda(75)); break; case 5: Aknaservo.write(Teisenda(100)); break; } } if(seade_temp<Temp) { } else { Aknaservo.write(Teisenda(0)); korras=true; } } int Teisenda(int protsent) { return map(protsent,0,100,0,180); }
Ventilaatori juhtimine XRF kaudu. Luua programm, mis suudab XRF raadiomooduliga lugeda kaugmoodulilt temperatuuri ning kui temperatur ületab kohalikul kontrolleril seatud nivoo käivitatakse kaugmoodulil asetsev ventilaator. Suhtkuseks kaugmooduliga tuleb kasutada allolevat protokolli: xTEMP – tagastab kümnekordse temperatuuri Celsiuse kraadides (24,5C puhul saadetakse 245) vastus: xNNN xFANn – FAN1 käivitab ventilaatori, FAN0 peatab ventilaatori vastus xFANn
Protokollis tähistab „x“ kohaliku seadme numbrit, mille annab juhendaja igale tiimile erineva.