Fórum témák

» Több friss téma
Cikkek » Készítsünk Deprez órát!
Készítsünk Deprez órát!
Szerző: Gafly, idő: Feb 1, 2014, Olvasva: 15035, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   8 / 13

Négy részből áll:

  1. Definíciók
  2. Inicializálás
  3. Fő program
  4. Szubrutinok

Definíciók

  1. const int ledPin = 13;      // The number of the LED pin, just for blinking

Itt mondjuk meg hogy a LED hová van kötve. (13-as kivezetés.) Mondjuk ez egyébként nem kell, csak arra jó, hogy lássuk működik-e egyáltalán az ARDUINO, a program letöltés, stb..

  1. const int deprezPin = 9;      // The number of the deprez pin, PWM out

Ide van kötve (9-es kivezetés) a Deprez műszer a korábban tárgyalt előtét ellenállással (és trimmerel). A műszer másik oldalra a testre (GND) van kötve.

  1. const long int interval = 300000; // It is 5 minutes in miliseconds (5 x 60 x 1000)

Ez az 5 perc meghatározása, ezred másodpercekben. Mellesleg ezzel a konstanssal lehetőségünk van kalibrálni az óránkat. Ha siet, akkor megnöveljük, ha késik akkor csökkentjük az értékét. Ezzel kerülhetjük ki az a hátrányt, hogy az ARDUINO 16 MHz-es kvarc időalapját nem tudjuk (egyszerűen) trimmer kondenzátorral pontosan beállítani.

  1. unsigned long previousMillis; // Stores the last time, when codedTime was updated, ie. the clock was stepped
  2. unsigned long currentMillis; // This is the current time, from start up in ms.

Öszesen ez a két változónk van. Az előző idő és a mostani idő ezred másodpercekben. ARDUINO fejlesztői környezet megadja az indítás (értsd RESET) óta eltelt időt ezred másodpercekben a millis() függvénnyel.

  1. int codedTime = 143; // It is 11:55. After reset is is started from 11:55 to be able to set the deprez to 11:55.

Ez pedig a kijelzett idő, 12 órás formátumban, 5 perces felbontásban. Egyben a végkitéséssel is indul és ott is marad 5 percig, amíg be lehet állítani a trimmerrel a 11:55-öt.

Inicializálás

  1. void setup() {
  2.     //Az eljárás egyszer fut le, a RESET (vagy ami ugyanaz, a bekapcsolás) után.
  3.     pinMode(ledPin, OUTPUT);         // Set the ledPin as output
  4.     pinMode(deprezPin, OUTPUT);   // Set the deprezPin as output
  5.     //Itt beállítjuk hogy melyik kivezetés milyen üzemmódban legyen. A LED is és a Deprez is kimenetként működő port-ot kíván.
  6.     currentMillis = millis(); // This is just because of the delay due to the "blinking".
  7.     //Szépségtapasz, hogy az "villogás alatt eltelt idő" ne okozzon pontatlanságot. Egyébként úgysem látszana ekkora időfelbontásnál...
  8.     previousMillis = currentMillis;
  9.     //Most vagyunk a "most"-ban, avagy a megelőző időt egyenlővé tesszük a aktuális idővel.
  10.     blink (); // Just to see, it is really working
  11.     //Aztán villogunk, de ez ugye csak dekoráció.
  12. }

 

Fő program

Ez hajtódik vége mindig és mindig (tulajdonképpen egy végtelen ciklus)...

  1. void loop() {  
  2.     currentMillis = millis();
  3.     //Most ennyi az idő, indulás óta.
  4.     analogWrite(deprezPin, codedTime);
  5.     //Kis is írjuk a Deprez műszerre (analog Write az PWM-et jelent).
  6.     if(currentMillis - previousMillis > interval) {
  7.         //Eldöntjük, hogy eltelt-e már 5 perc?
  8.         previousMillis = millis(); // Save the time when the clock stepped
  9.         //Igen eltelt.
  10.         if (codedTime == 143) {
  11.             //Akkor nézzük meg, hogy 12 óra is eltelt-e?
  12.             codedTime = 0;
  13.         }
  14.         //Igen, eltelt 12 óra, akkor most jön a 0. óra.
  15.         else {      
  16.             previousMillis = currentMillis;      
  17.             codedTime = codedTime + 1;
  18.             //Egyébként nem csinálunk semmit, csak növeljük a kijelzett időt a következő alkalomhoz.
  19.          }  
  20.     }
  21. }

 

Szubrutinok

Ide tesszük a kiemelt ismétlődő programrészeket (függvényeket). Én ide tenném például a több Deprez esetében az egyes óra, perc és másodperc kezeléseket. Itt és most csak villogunk.

  1. void blink () {
  2.     digitalWrite(ledPin, HIGH);   // turn the LED on  
  3.     delay(100);               // wait  
  4.     digitalWrite(ledPin, LOW);    // turn the LED off  
  5.     delay(100);               // wait
  6.     digitalWrite(ledPin, HIGH);  
  7.     delay(300);  
  8.     digitalWrite(ledPin, LOW);  
  9.     delay(300);
  10.     digitalWrite(ledPin, HIGH);  
  11.     delay(700);  
  12.     digitalWrite(ledPin, LOW);  
  13.     delay(700);
  14. }

 


A cikk még nem ért véget, lapozz!
Következő: »»   8 / 13
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem