Καλωσήρθατε στο Eleclub.gr

Το Club Ηλεκτρονικής ΗΜΜΥ τερματίζει τις συναντήσεις του. Ευχαριστούμε για τις όμορφες στιγμές που μοιραστήκατε μαζί μας.

Το παρόν φόρουμ θα συνεχίσει να λειτουργεί αυτόνομα. Οι διαχειριστές πλέον δε θα παρακολουθούν τακτικά τα θέματα και δεν εγγυώνται απαντήσεις.

Παρουσίαση αρχής λειτουργίας του project

#1 Παρουσίαση αρχής λειτουργίας του project

Postby aris » Fri May 11, 2012 11:21 am

Tο project αυτο περιλαμβανει ενα ψηφιακο ρολοι φτιαγμενο εξ ολοκληρου απο κωδικα,χωρις επιπροσθετα chip,το οποιο θα περιλαμβανει ενα αναλογικο αισθητηρα θερμοκρασιας (http://www.citistore.gr/lm335z.html) και ενα ψηφιακο αισθητηρα υπερηχων (http://www.citistore.gr/hc-sr04-ranging-detector.html) και θα λειτουργει παραλληλα και ως ξυπνητηρι.Με την βοηθεια του αισθητηρα θερμοκρασιας θα τυπωνεται στην lcd οθονη (http://www.citistore.gr/lcd-16x2-hd44780-5v.html) η θερμοκρασια περιβαλλοντος σε βαθμους Κελσιου η τιμη της οποιας θα ανανεωνεται μια φορα ανα λεπτο.Ο αισθητηρας υπερηχων καλειται να ενεργοποιει το backlight της lcd οποτε καποιος πλησιαζει το ρολοι σε αποσταση μικροτερη των 50cm,η χρηση του αισθητηρα αυτου ειναι καθαρα για οπτικους λογους αλλα και για να απενεργοποιει το ξυπνητηρι στην ιδια αποσταση οταν αυτο χτυπαει.Η ρυθμιση της ωρας και του ξυπνητηριου επιτυγχανεται με την βοηθεια 2 hardware interrupts τα οποια θα γινονται απο 2 διακοπτες (http://www.citistore.gr/tact-switch-6x6 ... -2pin.html).Το ξυπνητηρι θα ακουγεται απο ενα buzzer ηχειο.O κωδικας μου ειναι ο παρακατω και αυριο περιμενω και τα υλικα μηπως και προλαβω μεχρι πεμπτη να το χω ετοιμο.
Spoiler :
Code: Select all
    #include <LiquidCrystal.h>
    volatile int m=0,h=0;
    LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
    int pingtrig=8,pingecho=9,i=0,j=0,k=0,ia=0,ja=0;
    long duration,cm;

    void setup() {
      lcd.begin(16, 2);
      pinMode(2,INPUT);
      pinMode(pingtrig,OUTPUT);
      pinMode(pingecho,INPUT);
      pinMode(3,INPUT);
      attachInterrupt(0,hours,RISING);
      attachInterrupt(1,minutes,RISING);
      pinMode(10,OUTPUT);
      pinMode(13,OUTPUT);
      digitalWrite(13,LOW);
      digitalWrite(10,LOW);}

    void loop(){
      while(i<24){
        while(j<60){
          while(k<60){
           while((h==0 || h==2) && (m==0 || m==2) && k<60){
            lcd.setCursor(0,0);
            lcd.print(i);
            lcd.print(":");
            lcd.print(j);
            lcd.print(":");
            lcd.print(k);
            k=k+1;       
            digitalWrite(pingtrig,HIGH);
            delay(768);
            digitalWrite(pingtrig,LOW);
            duration = pulseIn(pingecho,HIGH);
            cm=(duration/2) / 29.1;
            if(cm<21){
              digitalWrite(13,HIGH);
              digitalWrite(10,LOW);}
            else if(cm>20)digitalWrite(13,LOW);}
          while(h==1 && (m==0 || m==2)){
           delay(800);
           lcd.clear();
           lcd.setCursor(0,1);
           lcd.print("1) ");
           lcd.print("Dialekse Wra ");
           if(i<24){
             lcd.setCursor(0,0);
             lcd.print(i);}
           else{
             i=0;
             lcd.setCursor(0,0);
             lcd.print(i);}
           i=i+1;}
          while(h==3 && (m==0 || m==2)){
           delay(800);
           lcd.clear();
           lcd.setCursor(0,1);
           lcd.print("2) ");
           lcd.print("Dialekse Alarm ");
           if(ia<24){             
             lcd.setCursor(0,0);
             lcd.print(ia);}
           else{
             ia=0;
             lcd.setCursor(0,0);
             lcd.print(ia);}
           ia=ia+1;}
          while(m==1 && (h==0 || h==2)){
           delay(800);
           lcd.clear();
           lcd.setCursor(0,1);
           lcd.print("1) ");
           lcd.print("Dialekse lepta ");           
           if(j<60){             
             lcd.setCursor(0,0);
             lcd.print(j);}
           else{
             j=0;
             lcd.setCursor(0,0);
             lcd.print(j);}
           j=j+1;}
         while(m==3 && (h==0 || h==2)){
           delay(800);
           lcd.clear();
           lcd.setCursor(0,1);
           lcd.print("2) ");
           lcd.print("Dialekse alarm ");
           if(ja<60){
             lcd.setCursor(0,0);
             lcd.print(ja);}
           else{
             ja=0;
             lcd.setCursor(0,0);
             lcd.print(ja);}
           ja=ja+1;}}
        lcd.clear();
        k=0;   
        int degC=analogRead(0)*0.004882812*100;
        float tmpVal=degC-273.15-8.35;   
        lcd.setCursor(0,1);
        lcd.print(tmpVal);
        lcd.print("C  Al ");
        lcd.print(ia);
        lcd.print(":");
        lcd.print(ja);                       
        if((ia==i && ja==j) || (ia==i && j==ja+5))digitalWrite(10,HIGH);
        else digitalWrite(10,LOW);
        j=j+1;}
      lcd.clear();
      j=0;
      i=i+1;}
     i=0;}
     
     void hours(){
        int i=0;
        h=h+1;
        if(h==4)h=0;
        while(digitalRead(2)==HIGH)
         i=i+1;}
       
     void minutes(){
        int i=0;
        m=m+1;
        if(m==4)m=0;
        while(digitalRead(3)==HIGH)
         i=i+1;}
Last edited by aris on Thu May 17, 2012 11:18 am, edited 5 times in total.
aris
NTUA EleClub Member
 
Posts: 45
Joined: Sun Feb 05, 2012 4:24 pm
Has thanked: 2 times
Been thanked: 2 times

#2 Re: Παρουσίαση αρχής λειτουργίας του project

Postby aris » Sat May 19, 2012 9:33 pm

Eβγαλα και ενα βιντεο με το ρολοι στο youtube καναλι μου.. :bigbeer:
Spoiler :
[youtube]-_TlWdrHvmo[/youtube]
Παραθετω και τον κωδικα απο κατω.Αν δειτε στο βιντεο καποια λειτουργια που να μην σας αρεσει ή αν λειπει κατι, πειτε μου για να το αλλαξω..
Spoiler :
Code: Select all
    #include <LiquidCrystal.h>
    volatile int q=1,a=0,s=0,w=0,t=0,z=0,e=1,u=0,r=0,i=0,j=0,k=0,ia=0,ja=0,o=0;
    LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
    int pingtrig=8,pingecho=9;
    long duration,cm;
   
    void setup() {
      Serial.begin(9600);
      lcd.begin(16, 2);
      pinMode(2,INPUT);
      pinMode(pingtrig,OUTPUT);
      pinMode(pingecho,INPUT);
      pinMode(3,INPUT);
      attachInterrupt(0,choices,RISING);
      attachInterrupt(1,change,RISING);
      pinMode(10,OUTPUT);
      pinMode(13,OUTPUT);
      digitalWrite(13,LOW);
      digitalWrite(10,LOW);}

    void loop(){
      while(i<24){
        while(j<60){
          while(k<60 && q==1){           
            Serial.println(millis());
            lcd.setCursor(0,0);
            lcd.print(i);
            lcd.print(":");
            lcd.print(j);
            lcd.print(":");
            lcd.print(k);
            if(s!=0 || t!=0 || a!=0 || w!=0 || z!=0 || e!=1 || u!=0 || r!=0){
                   r=0;
                   u=0;
                   s=0;
                   t=0;
                   a=0;
                   w=0;
                   z=0;
                   e=1;}
            digitalWrite(pingtrig,LOW);
            delayMicroseconds(2);
            digitalWrite(pingtrig,HIGH);
            delayMicroseconds(10);
            digitalWrite(pingtrig,LOW);
            duration = pulseIn(pingecho,HIGH);
            cm=duration/29/2;
            if(cm<26 && cm!=0){
              digitalWrite(13,HIGH);
              digitalWrite(10,LOW);}
            else if(cm>25 || cm==0)digitalWrite(13,LOW);
            k=k+1;
            if(duration!=0)
            delay(1000-duration/100-o+0.012);
            if(duration==0)
            delay(740-o+0.02); 
            o=0;}
          if(k==60)k=0;   
          while(q==0 && e<=270){     
           Serial.println(millis());
           Serial.println(e);
           while(e==1){                 
            digitalWrite(13,HIGH);                                                   
            if(a%2==1){
              if(a==1 && s==0){
                lcd.clear();
                lcd.setCursor(0,0);
                lcd.print("1)Roloi");
                lcd.setCursor(0,1);
                lcd.print("2)Alarm");
                delay(800);}         
              if(s==0){           
                 lcd.clear();
                 lcd.setCursor(0,0);
                 lcd.print("1)Roloi");
                 t=1;}       
              if(s==1 && t==1){                                                         
                if(z%2==0){       
                  lcd.clear();
                  lcd.setCursor(0,0);
                  lcd.print("1)Wra Roloi");
                  u=1;}}
              if(s==1 && t==1){
                if(z%2==1){
                  lcd.clear();
                  lcd.setCursor(0,1);
                  lcd.print("2)Lepta Roloi");
                  u=2;}}     
             if(s>=2 && z%2==0 && u==1){
                  lcd.clear();
                  lcd.setCursor(0,0);
                  if(i<24) i=i+1;
                  if(i==24) i=0;
                  lcd.print(i);
                  lcd.print(":");
                  lcd.print(j);
                  lcd.print(":");
                  lcd.print(k);}   
             if(s>=2 && z%2==1 && u==2){
                  lcd.clear();
                  lcd.setCursor(0,0);
                  lcd.print(i);
                  lcd.print(":");
                  if(j<60)j=j+1;
                  if(j==60) j=0;
                  lcd.print(j);
                  lcd.print(":");
                  lcd.print(k);}}
            if(a%2==0){
              if(s==0){
                lcd.clear();
                lcd.setCursor(0,1);
                lcd.print("2)Alarm");
                t=2;}
              if(s==1 && t==2){
                if(w%2==0){
                  lcd.clear();
                  lcd.setCursor(0,0);
                  lcd.print("1)Wra Alarm");
                  r=1;}}
              if(s==1 && t==2){
                if(w%2==1){
                  lcd.clear();
                  lcd.setCursor(0,1);
                  lcd.print("2)Lepta Alarm");
                  r=2;}}   
              if(s>=2 && w%2==0 && r==1){
                  lcd.clear();
                  lcd.setCursor(0,0);
                  if(ia<24)ia=ia+1;
                  if(ia==24)ia=0;
                  lcd.print(ia);
                  lcd.print(":");
                  lcd.print(ja);}   
              if(s>=2 && w%2==1 && r==2){
                  lcd.clear();
                  lcd.setCursor(0,0);
                  lcd.print(ia);
                  lcd.print(":");
                  if(ja<60)ja=ja+1;
                  if(ja==60)ja=0;
                  lcd.print(ja);}}
                e=e+1;}
              e=e+1;}
        if(e==271 && s==0)j=j-1;         
        if(e==271 && s==1 && t==1)j=j-1;
        if(e==271 && s==1 && t==2)j=j-1;
        if(a%2==1 && s>=2 && z%2==1 && e==271 && u==2)j=j-1;
        if(a%2==1 && s>=2 && z%2==0 && e==271 && u==1)j=j-1;
        if(a%2==0 && s>=2 && w%2==1 && e==271 && r==2)j=j-1;
        if(a%2==0 && s>=2 && w%2==0 && e==271 && r==1)j=j-1;
        o=19;
        q=1;   
        lcd.clear(); 
        int degC=analogRead(0)*0.004882812*100;
        float tmpVal=degC-273.15-8.35;   
        lcd.setCursor(0,1);
        lcd.print(tmpVal);
        lcd.print("C  Al ");
        lcd.print(ia);
        lcd.print(":");
        lcd.print(ja);                       
        if((ia==i && ja-1==j) || (ia==i && j==ja+4))digitalWrite(10,HIGH);
        else digitalWrite(10,LOW);
        j=j+1;}
      lcd.clear();
      j=0;
      i=i+1;}
     i=0;}     
             
     void choices(){
        e=1;
        if(q==1)q=0;
        if(s==0)a=a+1;   
        if(s==1){
          if(a%2==1 && t==1)z=z+1;   
          if(a%2==0 && t==2)w=w+1;}
        if(s>=2){
         e=2; 
         lcd.clear();
         lcd.setCursor(0,0); 
         if(a%2==1 && z%2==0 && u==1){
           if(i>0)i=i-1;
           if(i==0)i=23;
           lcd.print(i);
           lcd.print(":");
           lcd.print(j);
           lcd.print(":");
           lcd.print(k);} 
         if(a%2==1 && z%2==1 && u==2){ 
           if(j>0)j=j-1;
           if(j==0)j=59;
           lcd.print(i);
           lcd.print(":");
           lcd.print(j);
           lcd.print(":");
           lcd.print(k);}
         if(a%2==0 && w%2==0 && r==1){ 
           if(ia>0)ia=ia-1;
           if(ia==0)ia=23;
           lcd.print(ia);
           lcd.print(":");
           lcd.print(ja);}
         if(a%2==0  && w%2==1 && r==2){ 
           if(ja>0)ja=ja-1;
           if(ja==0)ja=59;
           lcd.print(ia);
           lcd.print(":");
           lcd.print(ja);}}}

     void change(){
        e=1;
        s=s+1;}         
aris
NTUA EleClub Member
 
Posts: 45
Joined: Sun Feb 05, 2012 4:24 pm
Has thanked: 2 times
Been thanked: 2 times

#3 Re: Παρουσίαση αρχής λειτουργίας του project

Postby George ZP » Sat May 19, 2012 10:07 pm

Χώρισα τα ποστ ώστε ο τίτλος να έχει νόημα. Καλό θα ήταν να βάλεις και σχόλια στον κώδικα: στον κόσμο των προγραμματιστών ο ασχολίαστος κώδικας θεωρείται έγκλημα.

Κατά τ' άλλα, αξιόλογο project για εισαγωγή στον arduino και τους αισθητήρες. Ελπίζω να συνεχίσεις ανοδικά.
I am a prisoner of high standards and low social skills
____________________________________

I wish I was the best at what I would do, and what I would do wouldn't be pretty.
George ZP
Επίτιμος Admin
 
Posts: 252
Joined: Sat Jan 21, 2012 6:36 pm
Location: Αθήνα, Κέντρο
Has thanked: 7 times
Been thanked: 2 times

#4 Re: Παρουσίαση αρχής λειτουργίας του project

Postby aris » Thu Jul 19, 2012 7:43 pm

Ειπα να δοκιμασω το fritzing και εφτιαξα το σχηματικο του ρολογιου.Το HC-SR04 δεν υπηρχε στα components του προγραμματος, οποτε εβαλα τις συνδεσεις σαν να υπηρχε κανονικα εκει που εχω βαλει το label του.Και η LCD επισης δεν ειναι αυτη που εχω, αλλα τα pins που καταληγουν σε αυτη απο το arduino ειναι αυτα που χρησιμοποιησα στο πραγματικο σχεδιο. Ολα τα υπολοιπα pins ειναι οκ.
Attachments
Ψηφιακό ξυπνητήρι.pdf
(1.96 MiB) Downloaded 220 times
aris
NTUA EleClub Member
 
Posts: 45
Joined: Sun Feb 05, 2012 4:24 pm
Has thanked: 2 times
Been thanked: 2 times

#5 Re: Παρουσίαση αρχής λειτουργίας του project

Postby George ZP » Fri Jul 20, 2012 2:17 am

Καλύτερα να το ανεβάσεις σαν εικόνα, αφού είναι μόνο μία σελίδα.
I am a prisoner of high standards and low social skills
____________________________________

I wish I was the best at what I would do, and what I would do wouldn't be pretty.
George ZP
Επίτιμος Admin
 
Posts: 252
Joined: Sat Jan 21, 2012 6:36 pm
Location: Αθήνα, Κέντρο
Has thanked: 7 times
Been thanked: 2 times

#6 Re: Παρουσίαση αρχής λειτουργίας του project

Postby aris » Fri Jul 20, 2012 9:20 am

Αυτο θα εκανα απλα ειδα οτι το pdf σου δινει την δυνατοτητα να κανεις μεγαλυτερο zoom απο το jpeg ή το png χωρις να χαλασει η αναλυση της φωτογραφιας σου..
aris
NTUA EleClub Member
 
Posts: 45
Joined: Sun Feb 05, 2012 4:24 pm
Has thanked: 2 times
Been thanked: 2 times

#7 Re: Παρουσίαση αρχής λειτουργίας του project

Postby George ZP » Fri Jul 20, 2012 12:47 pm

Αυτό συμβαίνει γιατί το Fritzing δεν τυπώνει την φωτογραφία στο .pdf, αλλά σχεδιάζει κομμάτι κομμάτι το κύκλωμα σε αυτό, όπως ένα στοιχείο flash, οπότε η ανάλυση είναι ουσιαστικά άπειρη.
Το πληρώνεις όμως αυτό σε δυσχρηστία και μεγάλο μέγεθος αρχείου.

Εντέλει, δεν έχει και τόσο μεγάλη σημασία, αναφορικά γράφω τα παραπάνω.
I am a prisoner of high standards and low social skills
____________________________________

I wish I was the best at what I would do, and what I would do wouldn't be pretty.
George ZP
Επίτιμος Admin
 
Posts: 252
Joined: Sat Jan 21, 2012 6:36 pm
Location: Αθήνα, Κέντρο
Has thanked: 7 times
Been thanked: 2 times

#8 Re: Παρουσίαση αρχής λειτουργίας του project

Postby Βύρωνας » Sat Jul 21, 2012 1:47 pm

George ZP wrote:Αυτό συμβαίνει γιατί το Fritzing δεν τυπώνει την φωτογραφία στο .pdf, αλλά σχεδιάζει κομμάτι κομμάτι το κύκλωμα σε αυτό, όπως ένα στοιχείο flash, οπότε η ανάλυση είναι ουσιαστικά άπειρη.

[offtopic]
Indeed! Impressive :rolleyes:
Βύρωνας
Moderator
 
Posts: 140
Joined: Sat Jan 21, 2012 3:46 pm
Has thanked: 1 time
Been thanked: 7 times


  • Similar topics
    Replies
    Views
    Last post

Return to Ψηφιακό ξυπνητήρι

Who is online

Users browsing this forum: No registered users and 1 guest

cron