# Συζήτηση Κυκλωμάτων > Ψηφιακά Κυκλώματα > Μικροελεγκτές >  >  digital clock - arduino

## irenedur

καλημερα σας 


ειμαι σπουδαστρια σε ενα τει κ εχω παρει ,βασικα μου εδωσαν,
μια πτυχιακη ευκολη για τα δεδομενα των συνολο αυτων..

εγω ομως δεν ειμαι ηλεκτρονικος,ειμαι πληροφορικαριος,
θαλω να πω απο μικροκυκλωματα κ κυκλωματα γενικως δεν εχω ιδεα κ ουτε εχω ασχοληθει

ξερω πως εσεις τα ξερετε,γι αυτι στραφηκα σε εσας μηπως μπορειτε να με βοηθησετε?

μου λειπει μονο αυτη για να παρω πτυχιο ,μολις περασα κ τα 2 τελευταια μαθηματα..!!!

οποτε μου δοθηκε να φτιαξω ενα ψηφιακο ρολοι με ενα real time clock -4 ψηφια  7segments displays ξεχωριστα κ οχι
ενα ενιαιο- arduino - breadboard...

το θεμα ειναι οτι ιδεα δεν εχω απο αυτα κ οσο κ αν διαβαζω κατι προφανως δεν κανω σωστα...
στην μπρεντμπορντ δεν εχω ιδεα πως να βαλω τα καλωδια ωστε να ειναι σχεδιασμενο το κυκλωμα
φανταζομαι τον προγραμματισμο θα καταφερω να τον κανω
αλλα την σχεδιαση δεν ξερω τπτ....

μηπως μπορειτε να με βοηθησετε ωστε να παρω μια ιδεα.....?

ψαχνω στον γκουγκλη,αλλα ολα ειναι διαφορετικα
μια βρισκω ρολογια αλλα χρησιμοποιουν αλλα τσιπακια,μια το αλλο...
κ δεν ξερω
βασικα δεν ξερω την σχεδιαση να κανω.....

οποιος μπορει να με βοηθησει
τον ευχαριστω

κ συγνωμη για το θεμα,ελπιζω να μην θεωρηθει καπως...

----------


## dade

Ρίξε μια ματιά εδώ http://www.electronicecircuits.com/tag/pic

----------


## irenedur

ευχαριστω 

δεν βλεπω ομως arduino 

 θα ψαξω πιο πολυ

----------


## dade

http://www.electroschematics.com/892...no-and-ds1307/

----------


## kotsos___

Λοιπόν για αρχή θα πάρεις τα 4 display, και 4 cd40110 και θα φτιάξεις την πλακέτα της οθόνης..
To cd40110 συνδέεται στο display, και του δινεις τον αριθμό που πρέπει να βγάλει με 4 bit κατα BCD(στο δυαδικό)
Δες στο datasheet πως πρέπει να συνδεθεί.. http://pdf.datasheetcatalog.com/data.../108628_DS.pdf
Μετά θα συνδέσεις τα 4 bit απο κάθε cd40110 με τα 4 bit των υπόλοιπων, και θα τα συνδέσεις στον αρντουίνο..
Θα τραβήξεις και αλλά 4 καλώδια απο το enable του κάθε ολοκληρωμένου, και θα τα συνδέσεις στον αρντουίνο..

Μετά απο το πρόγραμμα θα ενεργοποιείς ψηφίο ψηφίο, και θα του δίνεις το νούμερο..

----------


## leosedf

Εγώ πάντως θα έπιανα το σχέδιο με την LCD και το DS1307 μιας και φαίνεται πιο εύκολο για έναν που έχει ήδη επαφή με arduino (τι θα γίνει με αυτό το ελεεινό όνομα ρει?) και θα του έβαζα τα 7 segment.

----------


## acmilangr

Να σου στείλω ένα έτοιμο ρολό που έχω 7 seg που δεν ειναι σε πλακέτα arduino αλλά έχει το ίδιο μΕ και τον κώδικα του arduino;

----------


## irenedur

> http://www.electroschematics.com/892...no-and-ds1307/



ευχαριστω σεραφειμ
θα το κοιταξω σε λιγο
λογω δουλειας μπορω μονο πρωι να ασχοληθω κ αργα βραδυ,αλλα ειχα προβλημα με το νετ κ το το αποκατεστησα..

----------


## irenedur

> Λοιπόν για αρχή θα πάρεις τα 4 display, και 4 cd40110 και θα φτιάξεις την πλακέτα της οθόνης..
> To cd40110 συνδέεται στο display, και του δινεις τον αριθμό που πρέπει να βγάλει με 4 bit κατα BCD(στο δυαδικό)
> Δες στο datasheet πως πρέπει να συνδεθεί.. http://pdf.datasheetcatalog.com/data.../108628_DS.pdf
> Μετά θα συνδέσεις τα 4 bit απο κάθε cd40110 με τα 4 bit των υπόλοιπων, και θα τα συνδέσεις στον αρντουίνο..
> Θα τραβήξεις και αλλά 4 καλώδια απο το enable του κάθε ολοκληρωμένου, και θα τα συνδέσεις στον αρντουίνο..
> 
> Μετά απο το πρόγραμμα θα ενεργοποιείς ψηφίο ψηφίο, και θα του δίνεις το νούμερο..




κοτσο ευχαριστω μονο που ο καθηγητης δεν μου ειπε να αγορασω cd40110
ειναι υποχρεωτικο?θελω να πω
το 7 segment  δεν συνδεεται χωρις αυτο μεταξυ του κ του αρντουινο?
αμα ητανε θα μου ελεγε να παρω κ τεσσερα τετοια....

----------


## irenedur

βασικα τα πραγματα που εχω ειναι 

αρντουινο duemilanove
breadboard
4 ξεχωριστα ψηφια 7segment dispalys
ds1307
καλωδια
αντιστασεις..

τπτ αλλο



και οσον αφορα εσενα Θωμα,τι να σου πω
θα βοηθησει?...
η θα μπερδευτω πιο πολυ..?αχχα..
παλευω να βγαλω μια ακρη..

----------


## irenedur

> Εγώ πάντως θα έπιανα το σχέδιο με την LCD και το DS1307 μιας και φαίνεται πιο εύκολο για έναν που έχει ήδη επαφή με arduino (τι θα γίνει με αυτό το ελεεινό όνομα ρει?) και θα του έβαζα τα 7 segment.




το θεμα ειναι οτι εχω οθονη απλα δεν μου επιτρεπεται να χρησιμοποιηθει στην πτυχιακη
την εχω για αρχικα προτζεκτ τα οποια θα με βοηθαγαν μα θες να κανω μετα το επομενο βημα στα ψηφια....
αλλα δυστυχως γιοκ...

στην πραξη μου φαινονται κινεζικα αυτα
δεν εχω ασχοληθει με τετοια κ δεν ξερω γιατι μου δοθηκε τετοια πτυχιακη...τεσπα
το παλευω

----------


## giapap

Καλημέρα,

Ενα ενδιαφέρον αρθρο για 7-segments multiplexing χωρίς άλλα ICs.
Όσον αφορά το RTC DS1307 θα βρεις πολλές πληροφορίες στο net και στο official site του arduino με παραδείγματα και libraries.

----------


## irenedur

ευχαριστω γιαννη 
ενδιαφερον μα το θεμα ειναι οτι εχω 4 ξεχωριστα digits κ οχι ενα με 4 μαζι
κ εκει το χανω καπως...

σχετικα με το rtc ναι εχει πολλες εκει

----------


## jimmy956

Θα πρότεινα τα εξής:
α. Δες εδώ http://playground.arduino.cc/Main/SevenSegmentLibrary για το πως θα οδηγήσεις τα displays από το arduino. Το sevseg.cpp της προτεινόμενης στο άρθρο βιβλιοθήκης εκτιμώ οτι είναι αρκετά κατατοπιστικό. Επίσης, θα έχεις έτοιμο για χρήση ή για μελέτη το software κομμάτι των display. Για current limiting resistors νομίζω(?) 470Ω είναι μια καλή αρχή. Γενικότερα, εδώ http://playground.arduino.cc//Main/I...ardware#Output (ψάξε για *Seven segment displays),* έχει περισσότερες πληροφορίες. Επιπλέον, από τον τύπο των display που έχεις, πρέπει να βρείς τα χαρακτηριστικά τους (common anode/cathode κλπ) για να προσαρμόσεις ανάλογα τη σύνδεσή τους με το arduino.

β. Εδώ http://combustory.com/wiki/index.php...eal_Time_Clock έχει αρκετές πληροφορίες τόσο για τη hardware σύνδεση του 1307 στο arduino όσο και για το software οδήγησης.

Ελπίζω με αυτά να έχεις μια βάση εκκίνησης για το project σου.

----------


## tasosmos

> στην πραξη μου φαινονται κινεζικα αυτα
> δεν εχω ασχοληθει με τετοια κ δεν ξερω γιατι μου δοθηκε τετοια πτυχιακη...τεσπα
> το παλευω



Συγγνωμη κιολας αλλα αφου οπως λες δεν εχεις σχεση με το αντικειμενο και προφανως δεν σε ενδιαφερε να ασχοληθεις αμεσα τοτε γιατι πηρες αυτο το θεμα;

*Η πτυχιακη ΔΕΝ ειναι του καθηγητη, ειναι δικη σου.* 
Αυτος απλα σου παρεχει μια βαση και αναλαμβανει την καθοδηγηση. Γι' αυτο πληρωνεται και κρινεται (θεωρητικα εστω) αναλογως των πτυχιακων που εχει δωσει και το πως υλοποιηθηκαν αυτες.

Δεν υπαρχουν αλλοι καθηγητες που να δινουν πτυχιακες; 

Εσυ πρεπει να ψαξεις, να το συζητησεις με ολους τους καθηγητες (ακομα κι αυτους που ισως δεν χωνευες στο μαθημα, καμια φορα σε εκπλησσουν θετικα) και να *επιλεξεις* αυτο που θες, οχι να αναλαβεις το πρωτο θεμα που θα βρεις μπροστα σου.
Ακομα κι αν για καποιο λογο θελεις πτυχιακη με τον συγκεκριμενο συζητησε το μαζι του και συνεννοηθειτε ωστε να παρεις κατι που να το  "εχεις", να ειναι κοντα στα ενδιαφεροντα σου και ιδανικα σχετικο με τον τομεα που σε ενδιαφερει να εργαστεις. 


Η αποψη μου ειναι απλα παρατα το θεμα αυτο αφου ουσιαστικα δεν εχεις προχωρησει ιδιαιτερα ουτως η αλλως και βρες κατι αλλο. Εχεις το δικαιωμα να αλλαξεις πτυχιακη και επιβλεποντα καθηγητη ακομα κι αν την εχεις δηλωσει στην γραμματεια.

----------


## irenedur

ευχαριστω για την βοηθεια σας

τασο,εχεις δικιο σε οτι αναφερεις
αλλα
στο τει  μου υπαρχει προβλημα δυστυχως 
μονο 3 καθηγητες κανουν πτυχιακες κ οι 2 ειναι κλεισμενοι2 χρονια που εψαχνα ακομα..
μονο ο ενας ητανε ελευθερος κ αυτος εχει αποκλειστικα προτζεκτ με αρντουινο
τι να επαιρνα ρομποτακι,μετεορολογικο σταθμο?
δυστυχως μονο αυτο ητανε πιο βατο κ επειδη ειμαι μονη μ πηρα-μου εδωσε αυτο αναγκαστικα..

το θεμα ειναι οτι χρονο δεν εχω γιατι ειμαι παλαια,αυγουστο διαγραφομαι
κ δυστυχως λογω ελειψης χρονου επειδη εργαζομαι πολλες ωρες δεν μπορω να βγαλω ακρη..
κ για να μην παρεξηγηθω,ποτε δεν εμεινα στην πολη που περασα,μονο το πρωτο 6μηνο
παντα πηγαινοερχομουν λογω δουλειας
μετα εχασα τους γονεις μου,
μετα γεννησα ενα κοριτσακι κ μεγαλωνοντας παιδι κ δουλευοντας
καταφερα να περασω 15 μαθηματα που αφησα μετα τον θανατο του πατερα μου..
οποτε περασα τα τελαυταια 2 τωρα κ μου εμεινε η πτυχιακη αυτη
την οποια πρεπει να παραδωσω σεπτεμβρη γιατι μετα θα αλλαξω θεμα
κ σιγουρα θα ειναι πιο δυσκολο..

----------


## kotsos___

Μπορείς να κολήσεις μια πλακέτα?

----------


## irenedur

καταλαβα που το πας  :Smile:  ε ναι αυτο μπορω να το κανω.!

εχω το 5165Α ssg οποτε βασει αυτου θα δω αν ειναι κοινης ανοδο η καθοδου,σωστα?

----------


## kotsos___

7-seg1.gifΤα Α0-Α7 θα συνδεθούν σε μια ολόκληρη πορτ του αρντουίνο, και τα Α,Β,C,D σε μια άλλη..
Αν τα ντισπλέι σου είναι κοινής καθόδου τότε θα έχεις τα ABCD high, και θα πας low αυτό που θέλεις να γράψεις..
Πχ αν πας το Β low και στα Α0-Α7 στείλεις 01100000, θα γράψεις το νούμερο 1 στο δεύτερο ντισπλέι..

Αν είναι κοινής ανόδου τότε θα έχεις τα ABCD low, και θα πας high αυτό που θέλεις να γράψεις..
Πχ αν πας το C high και στα Α0-Α7 στείλεις 10011111, θα γράψεις το νούμερο 1 στο τρίτο ντισπλέι..

----------

irenedur (29-07-13)

----------


## jimmy956

Ναι !! (ίσως ο καθηγητής έχει ήδη το data sheet. Πάντως, ένα πρόχειρο ψάξιμο για part number 5165a δεν με διαφώτισε).
Επίσης, Από το data sheet μπορείς να δείς το ρεύμα και την τάση που χρειάζονται τα display, έτσι ώστε να υπολογιστεί και η current limiting αντίσταση, για να μην κάψεις τις εξόδους του arduino ή τα display...

Edit : Με πρόλαβε ο αναλυτικότατος Κώστας !!!

----------

irenedur (29-07-13)

----------


## chip

oasistek    TOS5165
http://www.oasistek.com.tw/en/pro-led.php
  SSG    site                datasheet (  ). 
 5165       (common cathode  common anode).
  datasheet          A   common cathode.
         display     5V      470  1.     +      3   common anode      -   3   common cathode.
(      1-3          ....             5V)

----------

irenedur (29-07-13)

----------


## irenedur

....

    display.... TOS,        
             ..
      ...


   ,         (   )

  rtc       breadboard?
                ..?
     "" ?
   ""    lcd ???

      '

----------


## irenedur

......


 , :Smile:        .!

----------


## kotsos___

,    ,     ,           DS1307..

----------

irenedur (31-07-13)

----------


## chip

breadboard      ?  arduino     bootloader arduino        (  breadboard)?           arduino             breadboard...            (       )

      arduino?      ledaki?

....
breadboard  
https://www.google.gr/search?q=ds130...w=1024&bih=629



https://www.google.gr/search?q=ds130...w=1024&bih=629

----------

irenedur (31-07-13)

----------


## irenedur

arduino  breadboard 



       7219      display

----------


## irenedur



----------


## kotsos___

> 7219      display



      ..           ..

----------


## irenedur

> ..           ..




    ...  ! 
         .. :Huh: 
          ???

----------


## dalai

> cd40110
>  ?  
>  7 segment          ?
>          ....



 7 segment  7         ":"    ,   12    arduino .      real clock ,         .           cd40110

----------


## irenedur

> 7 segment  7         ":"    ,   12    arduino .      real clock ,         .           cd40110



 
7219     ssg

----------


## dalai

segmants      .

----------


## irenedur

display sto max7219?

----------


## kotsos___

https://www.google.gr/
https://www.google.gr/search?q=max72...Foa74ASRoYCgDA
http://www.maximintegrated.com/image...DI217Fig01.gif
http://www.futurlec.com/Maxim/MAX7219.gif

----------

irenedur (01-08-13)

----------


## kotsos___

..
   DS  2 
  ? 2? 3? 4?
      2  ,  5   ??

 2  (16)    12  4 ..
    DS..

          max...
        ,     ..
     (1  )       ,   max   ,       ..

----------


## irenedur

ssg + max7219

       ds 1307            

4

----------


## irenedur



----------


## irenedur



----------


## irenedur



----------


## irenedur

rtc

    ?

----------


## kotsos___

Γενικά θέλει αντίσταση, αλλά ίσως να έχει κάποια εσωτερική το μαχ.. Δες το datasheet.. Αν και στα σχηματικά που είδα στο google δεν είχαν..

Για αρχή σύνδεσέ το στο arduino, και βάλτο να μετράει 1, 2, 3, 9999 χωρίς ρολόι, να σιγουρευτούμε οτι είναι οκ η οθόνη σου..

----------


## irenedur

οταν παω να τρεξω προγραμμα μου βρισκει προβλημα στην σειριακη θυρα...
παω απο το προγραμμα του αρντουινο για να την βρω κ την εχει ετσι ωστε να μην μπορω
να την επιλεξω...

----------


## kotsos___

Απο αρντουίνο δεν έχω ιδέα, θα πρέπει να βοηθησει κάποιος άλλος..

----------


## chip

Δεν ξέρω από arduino αλλά υποθέτω οτι η επικοινωνία γίνεται μέσα από usb οπότε πρέπει να εγκαταστήσεις τον απαραίτητο usb driver και μετά να δεις στον πινακα ελεγχου στις συσκευές ποια virtual com port προστίθεται όταν συνδέεται το arduino στο usb

----------


## rch

Σε παρομοιο προβλημα που αντιμετωπισα, τουτεστιν γινοταν βραχυκυκλωμα οποτε καποια προστατευτικη διαταξη (polyfuse?) πεταγε τον αρντουινο εκτος και καθε επικοινωνια με το πισι πεθαινε. Το ιδιο γινεται προφανως και αμα τραβηξεις πιο πολυ ρευμα απο αυτο που σου δινει ο αρντ, αν θυμαμαι καλα 40mA. Τσεκαρε επομενως στο device manager αν οντως βλεπει το πισι τον αρντ. 
Αν επιτρεπεται σε ποια σχολη εισαι?

----------


## jimmy956

Κατ' αρχήν, εκτιμώ οτι έχεις εκτελέσει με επιτυχία τα όσα αναφέρονται ΕΔΩ στην διαδικασία αρχικής σύνδεσης του arduino με το PC. Αν ναι, ρίξε και μια ματιά στο σχετικό troubleshooting ΕΔΩ.

Σε εμένα, (έχω UNO), μερικές φορές μουλαρώνουν τα Win7 και χρειάζεται να βγάλω το USB, να περιμένω ~ 10 sec και να το ξανασυνδέσω, έτσι ώστε το PC να "δει" το UNO.

----------


## irenedur

παιδευτηκα αρκετα κ μου βγηκανε τα ματια αλλα το καταφερα

κατεβασα κατι fdi drivers απο την σελιδα κ τους περασα απο διαχειρηση συσκευων κ το ειδε αμεσως.!

βλεπει την com3 για την ακριβεια/..!

ευχαριστω


στο τει λαμιας ειμαι

----------


## irenedur

μεχρι στιγμης ολα καλα..

ερωτηση (τι πρωτοτυπο)

στον ανρτουινο εχω βαλει grd και 5 v που φευγει απο το max7219


δεν πρεπει να συνδεσω και τα 7segments στον αρντουινο,ενοοω απο το max?
που συνδεω? βασικα παιρνω απο την σειρα οπου εχω συνδεσει τα 7 ssg πανω στο max το καθε digit 7ssg 
και το συνδεω που στον αρτουινο?

----------


## jimmy956

Μιλάς για την τροφοδοσία (5V και GND);
Αν ναι, το PC μέσω του USB τροφοδοτεί το arduino, και οι "έξοδοι" του arduino (5V και GND) παρέχουν τροφοδοσία στα συνδεδεμένα κυκλώματα (στην περίπτωσή μας το max). Το max εν συνεχεία, τροφοδοτεί τα ssg για να ανάβουν όπως πρέπει.

----------

irenedur (05-08-13)

----------


## irenedur

ναι jimmy αυτο που λες εννοω,ομως δεν πρεπει να φευγουν κ απο το αρντουινο
αλλα 4 καλωδια εκτος της τροφοδοσιας του 5V κ του grd  οπου θα πηγαινουν στο max ακριβως στα ποδαρακια που συνδεονται
τα 7ssg? ωστε να προγραμματιστει το αρδτουινο κ να δωσει εντολη στα 7 ssg να αναβουν καταλληλα.?

----------


## kotsos___

5 καλώδια έχεις απο τον αρντουίνο στο μαξ..
V+ (19)
Data in (1)
Load (12)
CLK (13)
Ground (4,9)

----------

irenedur (05-08-13)

----------


## irenedur

ευτυχως μολις το εφτιαξα κ αυτο,τελικα ειναι 5 καλωδια κ ελπιζω να τα εκανα σωστα

εχω βαλει το 
D9-->1
D8-->13
D7-->12


επισης συνδεσα την v+ με την iset του max κ αυτα μαζι στο 5V του αρντουινο
οπως και την 4 με την 9 του max στην γειωση στο αρντουινο

και τελικα ηθελε αντισταση στο iset που παει ατο v του αρντουινο...



βεβαια δεν εχω βαλει καθολου το RTC ...μικρο το κακο νομιζω
αν καταφερω κ προγραμματισω τωρα...
θελω να πιστευω οτι δεν θα ειναι μανικι να το προσθεσω μετα

----------


## irenedur

> 5 καλώδια έχεις απο τον αρντουίνο στο μαξ..
> V+ (19)
> Data in (1)
> Load (12)
> CLK (13)
> Ground (4,9)




μολις το ειδα κοτσο,ευτυχως σε προλαβα...
κ λεω ευτυχως γιατι κατι κανω τελικα δεν ειμαι τελειως χα
κ εγω βρηκα τις ιδιες ακριβως εξοδους
ελπιζω να καταφερω να το προγραμματισω τωρα....

ευχαριστω

----------


## kotsos___

Κάνε τώρα ένα απλό προγραμματάκι.. να γράφει 5 νούμερα πχ, και μετά συνδέεις και το ds και μένει μόνο ο κώδικας..

----------


## chip

πιστευω οτι θα βοηθουσε πριν φτάσεις να στειλεις δεδομενα στο max να δοκιμασεις να αναψεις ενα led συνδεμένο σε πόρτα.

----------


## irenedur

> http://www.maximintegrated.com/image...DI217Fig01.gif
> http://www.futurlec.com/Maxim/MAX7219.gif





kotso σε αυτα που μου εστειλες που πανω τους εκανα την σχεδιαση
γραφωντας προγραμμα βλεποντας οτι αναβοσβηνουν τα φωτακια του αρντουινο tx κ rx τα display ειναι μονιμα αναμμενα
κ μολις συνηδητοποιησα οτι απο τα 5 πανω ποδαρακια  και τα 5 κατω ποδαρακια ειναι τα 9 συνδεδεμενα
το ενα ποδαρακι κ μαλιστα το μεσαιο πανω το 3 δεν συνδεεται πουθενα...σωστα η οχι?
μπορεις κανεις να μου πει..?
απο οτι ειδα στο σχηματικο δειχνει τα 9 ποδια συνεδεμενα 
το σχημα δειχνει το CC απο το display οτι παει στο cathode 1,2,3..κλπ
εχω παρει το μεσαιο κατω ποδαρακι κ το εχω συνδεσει στο max για καθε ενα display...μηπως πρεπει να παρω το μεσαιο
πανω?αλλα απο ενα τεστ που εκανα το ιδιο συμβαινει κ πανω να τα συνδεσω

----------


## jimmy956

Διαβάζοντας το datasheet του 7219, βλέπω οτι στη σελίδα 7 δίνεται η περιγραφή της αρχικής κατάστασης του 7219 (όταν πρωτοδώσουμε τάση τροφοδοσίας). Συγκεκριμένα, φαίνεται οτι το 7219 σβήνει όλα τα συνδεδεμένα displays και μπαίνει σε κατάσταση shutdown (περιγραφή κατάστασης shutdown στη σελίδα 6). Άρα, νομίζω οτι δεν είναι σωστό το οτι ανάβουν όλα τα segments όλων των display όταν τροφοδοτείς το 7219. Μήπως υπάρχει λάθος στη συνδεσμολογία ή μήπως τα display είναι common anode και οχι common cathode;

Θα πρότεινα να κάνεις με προσοχή τα αναφερόμενα το post 21 (από τη φράση "λογικο αφου δεν εχουν προγραμματιστει" του post 36 πιστεύω οτι δεν έχει γίνει η δοκιμή) και να μας πεις τι αποτέλεσμα έχεις. Επίσης, από το datasheet του display φαίνεται οτι τα pin 3 και 8 είναι εσωτερικά διασυνδεδεμένα, οπότε οποιοδήποτε από τα δύο κάνει τη δουλειά. ΠΡΟΣΟΧΗ στην αντίσταση για να μην καούν τα display!!

Τέλος, για το πρόγραμμα του arduino που επικοινωνεί με το 7219, θα έλεγα να μελετήσεις πρώτα τη βιβλιοθήκη SPI ΕΔΩ, διότι νομίζω οτι οι ρουτίνες αποστολής δεδομένων προς το 7219 (και άλλα τέτοια chip που δέχονται σειριακά δεδομένα) είναι ήδη έτοιμες!!!

----------

irenedur (08-08-13)

----------


## irenedur

> φαίνεται οτι τα pin 3 και 8 είναι εσωτερικά διασυνδεδεμένα, οπότε οποιοδήποτε από τα δύο κάνει τη δουλειά. ΠΡΟΣΟΧΗ στην αντίσταση για να μην καούν τα display!!




αυτο ναι το συνηδητοποιησα κ εγω χθες μετα απο πολυ ψαξιμο,ειτε το ενα συνδεσω ειτε το αλλο το ιδιο οποτε
πηρα το κατω οπως μου δειχνει το σχημα κ το πανω δεν ειναι πουθενα.....


το θεμα μου ειναι οτι οτι κ να προγραμματιζω τα ντισπλει ειναι μονιμα αναμεννα δεν αναβοσβηνουν η κατι..
σε περιπτωση που ειναι anode   τι πρεπει να αντιστρεψω?
 θα το κοιταξω αυτο που μου αναφερεις κ σε ευχαριστω

το θεμα ειναι οτι οποιο προγραμματακι κ να κανω,μπορει το λαμπακι του arduino να αναβοσβηνει
αλλα τα λεντ οχι.....

γμτ

----------


## jimmy956

Νομίζω οτι πριν από οτιδήποτε άλλο, πρέπει να εξετάσεις τα displays έτσι ώστε να διαπιστώσεις αν είναι συμβατά με το 7219. Αν δεν είναι, τότε αγοράζεις άλλα (από ΦΑΝΟ ή από ΚΑΤΟΥΜΑ ή από όπου αλλού σε βολεύει, δες και ΕΔΩ). Το κόστος για τέσσερα display (αν δεν στα δώσει ο καθηγητής σου), δεν θα ξεπεράσει τα 5 € (πχ ΕΔΩ), οπότε δεν αξίζει τον κόπο να κάνεις πατέντες. Με την ευκαιρία, πάρε και δύο πυκνωτές (ένα ηλεκτρολυτικό 10μF 16V και άνω και έναν κεραμικό ή πολυέστερ 100nF), για τους λόγους που αναφέρονται ΕΔΩ.

Αφού διαπιστώσεις οτι διαθέτεις τα κατάλληλα displays κατέβασε τα datasheet του 7219 και των display, διάβασέ τα και εν συνεχεία συνέδεσε τα display στο 7219. Μόνο τότε θα είσαι έτοιμη να προχωρήσεις και στον προγραμματισμό του arduino για να μιλήσει με το 7219.

Υ.Γ. Αν δεν έχεις πολύμετρο και κατέβεις για να πάρεις displays, θα πρότεινα να πάρεις ένα (ή να δανειστείς αππο τον καθηγητή σου), έστω και τελείως απλό ~ 5-8 € (πχ κάτι τέτοιο , έχουν όλα τα καταστήματα ηλεκτρονικών). Θα σε βοηθήσει όσο φτιάχνεις το κύκλωμα (πχ θα μπορούσες να βρείς αμέσως τι είναι τα display), αλλά μην το χρησιμοποιήσεις σε επικίνδυνες τάσεις (πχ πρίζες κλπ) έστω και αν λέει οτι είναι εντός των προδιαγραφών του!!

----------


## irenedur

> Νομίζω οτι πριν από οτιδήποτε άλλο, πρέπει να εξετάσεις τα displays έτσι ώστε να διαπιστώσεις αν είναι συμβατά με το 7219. Αν δεν είναι, τότε αγοράζεις άλλα (από ΦΑΝΟ ή από ΚΑΤΟΥΜΑ ή από όπου αλλού σε βολεύει, δες και ΕΔΩ). Το κόστος για τέσσερα display (αν δεν στα δώσει ο καθηγητής σου), δεν θα ξεπεράσει τα 5 € (πχ ΕΔΩ), οπότε δεν αξίζει τον κόπο να κάνεις πατέντες. Με την ευκαιρία, πάρε και δύο πυκνωτές (ένα ηλεκτρολυτικό 10μF 16V και άνω και έναν κεραμικό ή πολυέστερ 100nF), για τους λόγους που αναφέρονται ΕΔΩ.
> 
> Αφού διαπιστώσεις οτι διαθέτεις τα κατάλληλα displays κατέβασε τα datasheet του 7219 και των display, διάβασέ τα και εν συνεχεία συνέδεσε τα display στο 7219. Μόνο τότε θα είσαι έτοιμη να προχωρήσεις και στον προγραμματισμό του arduino για να μιλήσει με το 7219.
> 
> Υ.Γ. Αν δεν έχεις πολύμετρο και κατέβεις για να πάρεις displays, θα πρότεινα να πάρεις ένα (ή να δανειστείς αππο τον καθηγητή σου), έστω και τελείως απλό ~ 5-8 € (πχ κάτι τέτοιο , έχουν όλα τα καταστήματα ηλεκτρονικών). Θα σε βοηθήσει όσο φτιάχνεις το κύκλωμα (πχ θα μπορούσες να βρείς αμέσως τι είναι τα display), αλλά μην το χρησιμοποιήσεις σε επικίνδυνες τάσεις (πχ πρίζες κλπ) έστω και αν λέει οτι είναι εντός των προδιαγραφών του!!



με το πολυμετρο πως το τσεκαρω?

----------


## chip

ο ποιο ευκολος τροπος να τσεκάρεις τα display ειναι να συνδέσεις το ποδαράκι 3 στη γείωση (-) και το ποδαράκι 1 μεσα από μια αντισταση 470Ω (εως 1Κ) στα 5V. Αν ανάξει μια γραμμουλα στο led ειναι Common cathode και ειναι σωστο το display.

προσωπικά πάντος δεν θα εμπλεκα με το max7219 (που δεν το εχω δουλέψει ποτε) και θα συνέδεα τα Display στο arduino και θα έκανα την πολυπλεξη με πρόγραμμα... (φυσικά θα χρειαστούν επιπλέον 4 τρανζιστορακια npn και 11-12 αντιστασουλες επιπλεον) και θα γλιτώσεις να παίζεις με τις στριμάρες του max7219....

http://extremeelectronics.co.in/micr...ller-tutorial/

----------


## irenedur

και αν δεν αναψει τπτ ειναι ανοδου?

----------


## chip

ναι και για να το επιβεβαιωσεις θα βάλεις το 3 στο + και το 1 στο - *παντα σε σειρά με τα 5V η αντιστασούλα*. και αν ανάψει έτσι θα ειναι κοινής ανόδου.... (δηλαδή το 3 που ειναι κοινό ποδαράκι θα είναι άνοδος αφού θα δουλεύει οταν έχει το +)

ξανατονιζω σε σειρά με τα 5V η αντιστασούλα αλλοιώς θα καει το display

----------


## irenedur

εχεις δικιο αλλα μου ειπε να το βαλω

----------


## irenedur

λοιπον επειδη εχω ξεχασει κλειδια κ το κυκλωμα ειναι σπιτι
οπου δεν μπορω να μπω μεχρι νεοτερας...

ειμαι δουλεια 
....εχω εδω ενα κατι ντισπλει που τσεκαριζα χθες και πολυμετρο και βαζω 
το μαυρο καλωδιο στο 3 και το κοκκινο καλωδιο παντου κ αναβουν γραμμες

αν βαλω το κοκκινοι στο 3 κ το μαυρο παντου δεν αναβει τπτ


αρα ειναι καθοδου..!!!!


ναι???? :Blink:

----------


## chip

λογικά ναι.... λέω λογικά γιατί έτσι είναι όσα σύγχρονα πολύμετρα (ψηφιακά) έχω δει. Όμως υπάρχουν και πολύμετρα (πχ τα αναλογικά με το δείκτη) που έχουν την πολυκότητα ανάποδα....

Αν έχεις και ένα δεύτερο max7219 για έλεγχο μην έχει χαλάσει δεν θα ταν κακό....
Επίσης θα πρότεινα να αποσύνδεες το max7219 από το arduino και να συνέδεες τις εισόδους του max7219 με το (-) μέσα από αντιστάσεις 4K7 έως 10K για να μαστε σιγουροι οτι το arduino δεν του στέλνει τίποτα σκουπίδια (μπιτακια) που αναβουν τα led.... έτσι θα πρεπε λογικά να μην αναψουν τα display

----------


## irenedur

λοιπον σχετικα με τα πολυμετρα ,αναλογικο ητανε αυτο που μου δανεισαν...

τωρα αμα πως οτι δεν κοιταξα πολικοτητα τι θα μου πεις?


στην περιπτωση που ειναι ανοδου τελικα,δεν εχουν επικοινωνια με το μαξ?
πρεπει να παραγγειλω αλλα...

----------


## chip

να πάρεις δύο πολύμετρα... θα βάλεις το ένα στα ωμ... αυτό που θα μετρήσεις το display και θα το συνδέσεις στο δεύτερο πολύμετρο που θα είναι στην κλίμακα των βολτ και θα ελέγξεις αν έχει ορθή ή ανάστροφη πολικότητα στην κλίμακα των Ω το πολύμετρο.... (δηλαδή σε ποιο καλώδιο βάζει το + στην κλίμακα των Ω).
Διαφορετικά έλεγξε τα display με τον τρόπο που σου είπα μια αντιστασούλα (470 έως 1000ω) και πηγή τάσης 5V.
Αν τελικά δεν είναι common cathode τα display που σου έδωσαν ίσως σε συμφέρει να τα αγοράσεις με δικά σου έξοδα (2-4 ευρω για 4 display) από το να χάνεις μέρες ώσπου να τα παραγγείλει και να στα φέρει η σχολή σου.

Στην περίπτωση που είναι κοινής ανόδου σίγουρα δεν μπορεί να συνεργαστεί με το max... όμως δεν ξέρω αν σε αυτή την περίπτωση το max θα τα έκανε να είναι αναμμένα στην off λειτουργία του.... εξαρτάται από το εσωτερικό κύκλωμα του max... προσωπικά θα περίμενα να ειναι σβηστά τα display... γι αυτό θα πρότεινα αν γινόταν να δοκίμαζες και ένα δεύτερο max... μήπως είναι καμένο.... (πχ από κάποια λάθος συνδεσμολογία)

----------


## irenedur

πω πω εχω παθει κοκομπλοκο τωρα,δεν περιμενα να κολλησω σε τετοιο θεμα....


εγω θα τα παραγγειλω,δεν το συζητω...!!
δεν εχω 2 πολυμετρα δυστυχως κ ουτε το ενα πια...

θα το ελενξω στην βρεαδβοαρδ αλλα εχω κ ολο το κυκλωμα πανω..

----------


## chip

βγάλε ένα display χωρις να ξηλώσεις τίποτα... βάλτο σε ένα άδειο σημειο του breadboard και δοκίμασε όπως σου είπα με αντιστασουλα..... (ελπίζω να έχεις αντιστασούλα... αν δεν έχεις κατεβα να παρεις... 1 λεπτό έχει....)

μην απελπίζεσαι έτσι είναι τα ηλεκτρονικά... δεν υπάρχει κανεις που να μην τα έχει περάσει αυτά.... και μην μου πεις οτι ο προγραμματισμός εχει λιγότερο σπάσιμο νεύρων....

----------


## irenedur

οχι αλλα στον προγραμματισμο υπαρχει μια γραμμη που ακολουθεις,σταθερη

εδω οτι να ναι....κ οχι τπτ αλλο απλα δεν εχω ιδεα


εχω αντισταση γιατι δυστυχως εδω που ειμαι δεν υπαρχει τετοιο καταστημα
διαμενω στην ευβοια πια...απο αθηνα αλλα ευβοια πια κ εδω δεν εχει τπτ τετοιο...!!!

θα το τσεκαρω τωρα

----------


## irenedur

chip σε ευχαριστω για ολα..!

----------


## irenedur

δυστυχως δεν παιζει..δεν ξερω αν κανω λαθος κατι αλλα δεν αναβει ουτε ετσι ουτε αλλιως..... :Head:

----------


## irenedur

δυστυχως ειναι ανοδου...!!!

αντε να βρω τωρα αλλα κ να τα παραλαβω συντομα

----------


## chip

δηλαδή άναψε με το θετικό στο 3?  :frown: 

χμ... μην χάνεις χρόνο... ώσπου να έρθουν τα νέα display πειραματίσου με το arduino... αρχισε να φτιάχνεις κώδικα... δομή προγράμματος.... δοκίμασε να κάνεις να ανάψει ledaki μεσα από πόρτα στο arduino (και μην ξεχασεις ποτε οτι θελει αντισταση σε σειρα) δοκίμασε να προσθεσεις κουμπάκι (εισοδος).... αν οταν λαβεις τα display εχεις καποια άνεση με το arduino θα προχωρήσεις πολύ ποιο γρήγορα....

----------


## chip

μια καλή άσκηση για το σαβατοκύριακο θα ήταν να συνδεσεις ένα display στο arduino (χωρις max7219) και επειδη υποθέτω δεν θα έχεις 7 αντιστάσεις 470Ω σύνδεσε τις καθόδους απευθείας στον arduino και την άνοδο του (ποδαρακι 3) με μία αντίσταση 470Ω στο + (το ποδαράκι 8 είναι το ίδιο με το 3 οποτε δεν το συνδέεις πουθενα.

Αφού λοιπόν τα συνδέσεις... γράφεις ενα πρόγραμμα που ανάβει ένα segment
αφού πετύχει κάνε ένα προγραμμα να μετράει απο το 0 έως το 9
και στη συνέχεια είτε μπορείς με ένα μπουτονακι κάθε φορά που το πατάς να αυξάνει κατά ένα
είτε να συνδέσεις το ds1307 και η απαρίθμηση 0 εως 9 να αντιστοιχεί σε δευτερόλεπτα....

----------


## irenedur

πριν το βαλω στην breadboard πηρα τηλ αυτον που τα ειχα παρει
τον ρωτησα με το αναλογικο τι παιζει κ τι μου εβγαλε κ μου ειπε οτι ειναι ανοδου,μετα το επιβεβαιωσα κ η ιδια.. :Wink: 

θα δοκιμασω αυτο που μου ειπες.

----------


## irenedur

χαιρετω παλι,καλα ειστε?

ερωτηση σας εχω ..

πηρα τα 7ssd cathode  τα τοποθετησα πανω κ ολα καλα..
αναβοσβηνουν σαν τρελα

ομως παω να προγραμματισω και οταν βαζω το 
 #include "LedControl.h"

μου λεει οτι δεν το βλεπει,λαθος δλδ


πηρα την βιβλιοθηκη του 
LedControl
την εβαλα στις βιβλιοθηκες αλλα παλι το ιδιο

γνωριζει κανεις?


ευχαριστω

----------


## acmilangr

> χαιρετω παλι,καλα ειστε?
> 
> ερωτηση σας εχω ..
> 
> πηρα τα 7ssd cathode  τα τοποθετησα πανω κ ολα καλα..
> αναβοσβηνουν σαν τρελα
> 
> ομως παω να προγραμματισω και οταν βαζω το 
>  #include "LedControl.h"
> ...



ξαναέτρεξες το arduino;

----------


## jimmy956

Βλέπω στην περιγραφή της βιβλιοθήκης LedControl, ότι θέλει τοποθέτηση σε συγκεκριμένο folder και compilation πριν την πρώτη χρήση. Μήπως πρέπει να κάνεις όσα αναφέρονται στο http://playground.arduino.cc/Main/LedControl#Source (δηλ. στο κεφάλαιο "Sourcecode and download") ;

----------


## irenedur

με το λεντκοντρολ ολα οκ


τωρα μου βγαζει ενα σφαλμα συνεχεια 
error: 'byte' does not name a type
error: 'byte' has not been declared

----------


## irenedur

το ελυσα το προβλημα

ξανακατεβασα την βιβλιοθηκη αλλαξα κ κατι μεσα κ ολα ειναι σωστα,ομως δεν μου εμφανιζει τπτ
αναβοσβηνουν τα segments την ωρα της φορτωσης  κ μολις κανουν  την φορτωση μετα σβηνουν κ τελος δεν δειχνει τπτ

ενα προγραμμα ειναι αυτο

//Programm : Controling 4 displays 7 segment using CI Max7219
//Comments  : Arduino Duemilanova
//Based on the example of the library program LedControl.

#include "LedControl.h" 

// Pin 12  from Arduino to pin 1 (DIN) MAX
// Pin 11 from Arduino to pin 13 (CLK) MAX
// Pin 10  from Arduino to pin 12 (LOAD) MAX
// Last parameter refers to the number used in the circuit of MAX7219
LedControl lc=LedControl(10,11,12,1);


boolean pontodecimal; 

void setup() 
{ 
  // Initializes the MAX7219
  lc.shutdown(0,false); //  
  lc.setIntensity(0,10); //It defines the level of sensivity  (0 minimum , 15 maximum)
  lc.clearDisplay(0); // It extinguishes or display 
  Serial.begin(9600); // Initializes the serial
  pontodecimal = false;  //Defines the decimal point to OFF
} 

void loop() 
{ 
for(int i=0; i < 100 ; i++)  //Loop varying value of i from 0 to 99
  { 
  lc.setDigit(0,0,i/10,pontodecimal);  //Shows the value i/10 of the display 1
  pontodecimal = !pontodecimal;   //Reverses the status of the decimal point
  lc.setDigit(0,1,i%10,pontodecimal);  //Shows the value i%10 of the display 2
  Serial.println(i);
  delay(1000);  //Waits 1 second and displays the next value
} 
delay(1000);  //Waits 1 second and then restarts counting
}

----------


## jimmy956

Πριν ξεκινήσουμε να ψάχνουμε το πρόβλημα και με στόχο να ξεκινήσουμε όλοι από ένα γνωστό σημείο, θα πρότεινα τα εξής:
α. Να μας κάνεις μια ακριβή περιγραφή του κυκλώματος (δηλ. ηλεκτρονικό σχέδιο), αλλιώς μια περιγραφή συνδέσεων. Εκτιμώ οτι αν θεωρήσεις ως block το arduino, το 7219 και κάθε ένα από τα displays, μπορείς να μας πεις πιο pin συνδέεται που για όλες τις συνδέσεις που έχεις κάνει και και υλικά που έχεις βάλει. Πυκνωτές έβαλες τελικά;
β. Να μας πεις ποιές ακριβώς αλλαγές έκανες στη βιβλιοθήκη (δεν ξέρω πολύ καλά C αλλά πολλοί συνφορουμίτες ξέρουν).

Κατ' αρχήν, βλέπω οτι η παράμετρος που περιέχει τα δεδομένα προς απεικόνιση πρέπει να είναι byte ή αλλιώς να γίνει type casting "(byte)". Δηλ. αντί
lc.setDigit(0,1,i%10,pontodecimal);  //Shows the value i%10 of the display 2 
να μπεί
lc.setDigit(0,1,(byte) i%10,pontodecimal);  //Shows the value i%10 of the display 2.

Επίσης, όπως αναφέρεται εδώ, θα έλεγα να βάλεις delays μεταξύ διαδοχικών εγγραφών στο 7219.

----------


## irenedur

μετα απο πολλες επαληθευσεις η συνδεσμολογια ειναι σωστη...θωρω δλδ


το σχημα επειδη δεν εχω ποργραμμα να φτιαξω εγω ειναι αυτο

Συνημμένο Αρχείο 45605


με την διαφορα οτι εχω 4 ψηφια απο το τελος οποτε εχω συνδεσει απο Dig0 εως  Dig3


και στο max και arduino ειναι ακριβως αυτο
ειναι οτι καλυτερο μπορουσα με την ζωγραφικη
το b =breadboard
a= arduino

----------


## irenedur

34fi7wy.jpg

ayto

----------


## irenedur

μπορει να ειναι κ χαζομαρα αυτο που θα πω αλλα μηπως πρεπει να συνδεσω απο το dig7-di4
και οχι απο το dig3-dig0? ισως να μην παιζει ρολο,αλλα λεω τωρα επειδη εχω μολις 4ψηφια

----------


## jimmy956

Δεν βλέπω κάτι λάθος στο σχέδιο, αλλά θα επιμείνω για τους πυκνωτές (το έχω πάθει και έχω μάθει) διότι (χονδρικά) στις απότομες αλλαγές του ρεύματος που καταναλώνει το 7219 (πχ όταν αναβοσβήνει τα display) υπάρχει περίπτωση να γίνουν πτώσεις τάσεως ελάχιστης διάρκειας που θα "μπλοκάρουν" το 7219. Η Rset (αντίσταση στο pin 18 του 7219) πόσο είναι; Μέχρι να τους βάλεις θα πρότεινα τα εξής:
α. Στο περιβάλλον του arduino, επέλεξε σωστά ποιό board έχεις (έχει δύο Duemilanove, ένα με το chip ATMega 168 και ένα με το ATMega 328, με χρήση του menu Tools->Board. Διάβασε τις ενδείξεις του chip για να δεις ποιό έχεις.
β. Μετέφερε την αλλαγμένη βιβλιοθήκη ledcontrol εκτός περιβάλλοντος arduino και εγκατέστησε μια φρέσκια απείραχτη. Εγώ έκανα όσα αναφέρονται στην περιγραφή εγκατάστασης της ledcontrol και δεν είχα κανένα λάθος κατά την δοκιμή (έχω το περιβάλλον arduino 1.0.1). Αν βγάλει λάθη, ας το συζητήσουμε.
γ. Βάλε αν μπορείς ένα παχύτερο καλώδιο μεταξύ του pin 19 του 7219 και του +5v arduino. Στην πλευρά του breadboard, συνέδεσε το καλώδιο αυτό όσο μπορείς πιο κοντά στο pin 19 του 7219. Βεβαιώσου οτι δεν είναι χαλαρές οι συνδέσεις και οτι κάνει καλή επαφή.
δ. Ετοίμασε, κάνοντας χρήση της βιβλιοθήκης, ένα μικρό πρόγραμμα που απλά θα αναβοσβήνει με delay 1 sec το decimal point σε ένα display. Μην αυξήσης τη φωτεινότητα των display. Για βάση, πάρε κάποιο παράδειγμα από τη βιβλιοθήκη (πχ LCDemo7Segment) με χρήση του menu File->Examples->Ledcontrol.
ε. Αποσύνδεσε τα pin 10,11,12 από το arduino (μην αποσυνδέσεις την τροφοδοσία του 7219) και σύνδεσε το arduino στο USB. Τα display θα πρέπει να μην ανάψουν.
στ. Στείλε το πρόγραμμα στο arduino για να τρέξει. Τα display θα πρέπει να μην αναβοσβήσουν.
ζ. Αποσυνέδεσε το USB, ξανασυνέδεσε τα 10,11,12 και σύνδεσε το arduino στο USB. Τα display θα πρέπει να μην ανάψουν.
η. Στείλε το πρόγραμμα στο arduino για να τρέξει. Τα display θα πρέπει να μην αναβοσβήνουν όταν το πρόγραμμα κατεβαίνει και να κάνουν εν συνεχεία οτι καθόρισες απο το πρόγραμμα που έγραψες.
θ. Ποστάρισε το πρόγραμμα που έγραψες και τα αποτελέσματα.
ι. Αν το 7219 κάνει παλαβά, δοκίμασε να το τροφοδοτείς μετά την τροφοδοσία του arduino (δηλ. βγάζεις το καλώδιο +5V από το arduino που πάει στο 7219, συνδέεις το arduino στο USB και μετά απο 3-5 sec βάζεις το καλώδιο του 7219 στο +5V.

----------


## irenedur

[QUOTE=jimmy956;613907] 
*α. Στο περιβάλλον του arduino, επέλεξε σωστά ποιό board έχεις (έχει δύο Duemilanove, ένα με το chip ATMega 168 και ένα με το ATMega 328, με χρήση του menu Tools->Board. Διάβασε τις ενδείξεις του chip για να δεις ποιό έχεις.*

εχω το 328,το εχω επιλεξει απο την αρχη

*β. Μετέφερε την αλλαγμένη βιβλιοθήκη ledcontrol εκτός περιβάλλοντος arduino και εγκατέστησε μια φρέσκια απείραχτη. Εγώ έκανα όσα αναφέρονται στην περιγραφή εγκατάστασης της ledcontrol και δεν είχα κανένα λάθος κατά την δοκιμή (έχω το περιβάλλον arduino 1.0.1). Αν βγάλει λάθη, ας το συζητήσουμε.*
σε παρελθοντικη προσπαθεια μου
δεν αναγνωριζε μια ατοφια ledcontrol βιβλιοθηκη
εχω το 1,0,5
*
γ. Βάλε αν μπορείς ένα παχύτερο καλώδιο μεταξύ του pin 19 του 7219 και του +5v arduino. Στην πλευρά του breadboard, συνέδεσε το καλώδιο αυτό όσο μπορείς πιο κοντά στο pin 19 του 7219. Βεβαιώσου οτι δεν είναι χαλαρές οι συνδέσεις και οτι κάνει καλή επαφή.*
εχω τα κλασσικα καλωδια της αγορας



εχω κανει αυτο το προγραμμα

#include "LedControl.h" // need the library
LedControl lc=LedControl(12,11,10,1); // lc is our object
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLK pin 13
// pin 10 is connected to LOAD pin 12
// 1 as we are only using 1 MAX7219
void setup()
{
// the zero refers to the MAX7219 number, it is zero for 1 chip
lc.shutdown(0,false);// turn off power saving, enables display
lc.setIntensity(0, :Cool: ;// sets brightness (0~15 possible values)
lc.clearDisplay(0);// clear screen
}
void loop()
{
for (int row=0; row<8; row++)
{
for (int col=0; col<8; col++)
{
lc.setLed(0,col,4,true); // turns on LED at col, row
delay(10);
lc.setLed(0,col,0,true); // turns on LED at col, row
delay(10);

}
}
}


και μου αναβει μονιμα
τo decimal point και την κατω παυλα απο το digit..

τα αλλα που εγραψες θα τα κανω τωρα

----------


## jimmy956

Η setLed είναι για matrix display και όχι για seven segments. Ξαναδοκίμασε με setDigit πριν αρχίσεις το ξήλωμα (χίλια συγγνώμη, τώρα το είδα για το setLed  :Sad:  )

Η περιγραφή της LedControl ΕΔΩ , έχει δύο τμήματα. Ένα για matrix (Controlling a Led matrix) που δεν το θες και ένα για seven segment (Controlling 7-Segment displays) που πρέπει να διαβάσεις και να αξιοποιήσεις.

----------


## irenedur

me ayto to προγραμμα

#include "LedControl.h" // need the library
LedControl lc=LedControl(12,11,10,1); // lc is our object
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLK pin 13
// pin 10 is connected to LOAD pin 12
// 1 as we are only using 1 MAX7219
void setup()
{
// the zero refers to the MAX7219 number, it is zero for 1 chip
lc.shutdown(0,false);// turn off power saving, enables display
lc.setIntensity(0, :Cool: ;// sets brightness (0~15 possible values)
lc.clearDisplay(0);// clear screen
}
void loop()
{
for (int row=0; row<8; row++)
{
for (int col=0; col<8; col++)
{
lc.setDigit(0,col,4,true); // turns on LED at col, row
delay(10);
lc.setLed(0,col,0,true); // turns on LED at col, row
delay(10);

}
}
}



εμφανιζει το νουμερο 4. σε ολα τα ψηφια
αρα κ η αντισταση ειναι σωστη?

----------


## irenedur

και μη ζητας συγνωμη...εγω   ευχαριστω για την βοηθεια

----------


## chip

αν η αντίσταση είναι 10Κ σωστή θα είναι...

----------


## irenedur

ειναι αυτη που ειναι κοκκινο-κοκκινο-καφε-χρυσο

συγνωμη αλλα δεν το κατεχω

----------


## chip

κοκκινο κοκκινο καφε χρυσό είναι 220Ω στο ποδαράκι 18? πως επιλέχθηκε αυτή η αντίσταση?
στα datasheet λέει 9,53Κ και επειδή δεν θα βρεις εύκολα θα πρέπει να βάλεις 10K

Αφού άναψε το 4 (και απ οτι καταλαβαίνω 4 έπρεπε να ανάψει) φαίνεται οτι το max7219 και τα display δεν θα έχουν πάθει ζημιά...
Αν έχεις 10K θα πρότεινα να την αλλάξεις σε 10Κ (καφέ μαυρο πορτοκαλί χρυσό).

----------


## jimmy956

Κατ' αρχήν, απο οτι φαίνεται, είσαι πολύ κοντά!!!
Συμφωνώ με τον chip και μάλιστα προτείνω, μέχρι την αλλαγή της αντίστασης, να μην χρησιμοποιείς το 7219 και τα display διότι 220Ω με 10.000Ω είναι μεγάλη διαφορά (αν και δεν μελέτησα για να εκτιμήσω τη σοβαρότητα του προβλήματος)
Όσον αφορά το πρόγραμμα, θα πρότεινα το εξής:

#include "LedControl.h" // need the library
LedControl lc=LedControl(12,11,10,1); // lc is our object
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLK pin 13
// pin 10 is connected to LOAD pin 12
// 1 as we are only using 1 MAX7219
void setup()
{
// the zero refers to the MAX7219 number, it is zero for 1 chip
lc.shutdown(0,false);// turn off power saving, enables display
lc.setIntensity(0,0);// sets brightness (0~15 possible values) ΕΒΑΛΑ MINIMUM ΤΙΜΗ αν δεν φαίνεται καλά μεγάλωσέ το αλλά όχι πολύ!!!
lc.clearDisplay(0);// clear screen
}
void loop()
{
for (int seven_seg_position=0; seven_seg_position<4; seven_seg_position++)
{
for (byte num_to_display=0; num_to_display<10; num_to_display++)
{
lc.setDigit(0,seven_seg_position,num_to_display,tr  ue); // displays on 7 seg at position 
                                              //"seven_seg_position" the number  "num_to_display" and the decimal point
 delay(200);
}
lc.clearDisplay(0);// clear screen
}
}

Αν δεν έχω κάνει λάθος, θα μετρήσει από 0 έως 9 σε κάθε display (για να δεις οτι όλες οι συνδέσεις σου είναι ΟΚ)

ΥΓ Μια και μπήκες στα βαθειά, έχε υπόψη σου και αυτό http://www.electronics2000.co.uk/cal...calculator.php !!!

----------


## irenedur

δυστυχως οταν ειχα παρει τιας αντιστασεις δεν γνωριζα κ απλα του ζητησα αντισταση
δεν ειχα ξεκινησει ακομα το προτζεκτ κ δεν ηξερα
μου λεει θα σου δωσω τις κλασσικες 1ομ..οκ του ειπα

που να ξερω

τζιμι...το προγραμμα ειναι σωστο αλλα εμενα δεν μου εμφανιζει τπτ

κ τωρα που θα βρω αντισταση,εδω που ειμαι δεν εχουν κ για να παραγγειλω ..για 0,30 λεπτα τρεχα γυρευε...
νομιζω εχω κ καφε μαυρο χρυσο χρυσο καποιες..

----------


## irenedur

δλδ για να καταλαβω με αυτην την αντισταση καιω το τσιπ?
η απλα ειναι σαν να μην υπαρχει?

----------


## irenedur

σε περιπτωση που δεν ξερατε αυτην την σελιδα..οριστε
κ βρισκετε κ τις αντιστασεις...αν κ ξερετε καλα...


http://kioan.users.uth.gr/electronic...resistors.html

----------


## irenedur

πιθανον για ολα να φταιει η αντισταση...

εβαλα την αλλη γιατι με φοβησατε,αλλα κ παλι μικρη η διαφορα 
με ψαξιμο πολυ μαλλον ειδα οτι φταιει η αντισταση...
ενας που χρησιμοποιησε 27κ η 33Κ ητανε μια χαρα κ του αναβαν ολα...

με την αντισταση που εχω αναβει μονο το 7 η το 1 σε οποιο ψηφιο κ αν επιλεξω...
γιατι τα νουμερα αυτα χρειαζονται 2-3 segments κ γι αυτο....

οποτε αν βαλω αλλη αντισταση  λογικα θα παιξει
λογικα παντα...

ισως γι αυτο δεν παιζει κ το προγραμμα σου τζιμι

ερωτηση να παρω 10αρες τωρα?....
κ κατι αλλο μεχρι να ερθει η αντισταση δεν μπορω να βαλω καπως τις 10που εχω 
ωστε να εχω 10Κ αφου καθε μια ειναι 1Κ?
εχω τις καφε μαυρο χρυσο χρυσο

----------


## chip

καφέ μαυρο χρυσο χρυσό είναι 1Ω... οπότε να μην τις βάλεις σε καμία περίπτωση!
εσύ χρειάζεσαι 10000Ω
1Κ ειναι καφέ μαύρο κόκκινο.
Με μικρή αντίσταση αυξάνεται το ρεύμα που στέλνει στα display με κίνδυνο να καεί το max7219 και τα display.

----------


## irenedur

kai ομως εμφανιζει 7 παντου
απλα λογω αντιστασης δεν μπορουν να αναψουν τα υπολοιπα segments και γι αυτο
δεν παιζουν τα προγραμματα...

η πορεια θα δειξει,μεθαυριο θα ξερω

#include "LedControl.h" //  need the library
LedControl lc=LedControl(12,11,10,1); // lc is our object
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLK pin 13
// pin 10 is connected to LOAD pin 12
// 1 as we are only using 1 MAX7219
void setup()
{
  // the zero refers to the MAX7219 number, it is zero for 1 chip
  lc.shutdown(0,false);// turn off power saving, enables display
  lc.setIntensity(0, :Cool: ;// sets brightness (0~15 possible values)
  lc.clearDisplay(0);// clear screen

}
void loop()
{

    lc.setDigit(0,0,7,false);
    lc.setDigit(0,1,7,false);
    lc.setDigit(0,2,7,false); 
    lc.setDigit(0,3,7,false);
}

----------


## jimmy956

Αν σε προλαβαίνω, πάρε μια συλλογή αντιστάσεων (1/2 watt και άνω έως τα 1ΚΩ, 1/4 watt και άνω οι υπόλοιπες) έτσι ώστε να κάνεις και δοκιμές. Προτείνω:
4 τεμ. 470Ω
4 τεμ. 1ΚΩ
2 τεμ. 4,7ΚΩ
2 τεμ. 10ΚΩ
2 τεμ. 10ΚΩ
2 τεμ. 15ΚΩ
2 τεμ. 22ΚΩ
2 τεμ. 27ΚΩ

Με τον κίνδυνο να γίνω γραφικός  :Unsure: , να σου θυμίσω και τους δύο πυκνωτές (http://www.hlektronika.gr/forum/show...l=1#post611631)

Εκτιμώ οτι όλα αυτά δεν θα κοστίσουν άνω τω 2€.

Επίσης, από ότι καταλαβαίνω, στο post 90 (http://www.hlektronika.gr/forum/show...l=1#post613912) εμφανιζόταν τα 4 σε όλα τα ψηφία, όπως έλεγε το πρόγραμμα.

 Άλλαξε κάτι και πλέον δεν μπορούμε να δούμε τίποτε παρά μόνο το 7 όπως λές στο post 99 (http://www.hlektronika.gr/forum/show...1#post614021);

----------


## irenedur

καλημερα σας...!!!!!!


δεν περιμενα με τπτ οτι μια αντισταση θα εκανε την ολη διαφορα


τζιμι κ ολους σας ευχαρισω για ολα!
τελικα δεν παρηγγειλα αλλα ολος τυχαιως ενας ηλεκτρονικος εδω ειχε κατι αντιστασεις απο το σερβισ
που κανει και ετυχε να ειχε 1 10κ και 1 27κ..
ετσι λοιπον χθες βραδυ που τις πηρα κοτσαρισα πανω την 27αρα κ επαιζαν ολα ρολοι...
επισης το προγραμμα σου τζιμι ητανε σουπερ..!!!!

βεβαια ακομα εχω δρομο γιατι το προγραμμα για την ωρα δεν το βρηκα
αλλα εστω βρηκαμε τι εφταιγε τελικα κ ειλικρινα δεν το περιμενα.!

το κερασακι στην τουρτα τωρα ειναι να συνδεσω το RTC..
αληθεια μπορειτε να μου πειτε πως το συνδεω?επειδη εχει διατρητες τρυπιτσες
απλα περναω καλωδιο στην τρυπουλα του κ μετα στο αρντουινο?
πρεπει μετα να το κολλησω στην πλακετα???
την συνδεσμολογια του δεν την ξερω,αν τυχον καποιος ξερει
ας μου δωσει τα φωτα του...

ειλικρινα ευχαριστω για ολα αν δεν ειχα την βοηθεια σας δεν θα εκανα τπτ.!

----------


## irenedur

και επειδη τωρα το προσεξα
τζιμι χρειαζομαι πυκνωτες..?γιατι?

----------


## jimmy956

Κατ΄αρχήν συγχαρητήρια για την επιμονή και υπομονή σου που είχαν σαν  αποτέλεσμα την ολοκλήρωση ενός σημαντικού μέρους της εργασίας. Αν  διαβάσεις τώρα τα πρώτα σου post στο θέμα, θα διαπιστώσεις πόσο πολύ  έχεις προχωρήσει. Ελπίζω να το χάρηκες δεόντως!!!

Η αναγκαιότητα των πυκνωτών περιγράφεται ΕΔΩ  (δες την τρίτη παράγραφο κάτω από το σχήμα). Δεδομένου όμως οτι το  κύκλωμα παίζει, μπορούν να μπουν σε δεύτερη προτεραιότητα αλλά κάποια  στιγμή βρες τους και βάλε τους. Είδες άλλωστε από πρώτο χέρι τι σημαίνει  να τραβάει το κύκλωμα πολύ ρεύμα (το αποτέλεσμα της μικρής αντίστασης  που είχες βάλει) - περίεργες και σποραδικές δυσλειτουργίες.

Για τη συνέχεια, προτείνω την ακόλουθη πορεία:
α.  Την λεπτομερή αποτύπωση σε σχέδιο της κατασκευής μέχρι τώρα και την  ολοκλήρωση του τμήματος απεικόνισης της εργασίας με γράψιμο μιας  ρουτίνας (ως πληροφορικάριος ξέρεις ότι θα πρέπει να έχει και μπόλικα  σχόλια!!) που θα δείχνει στο display την ώρα η οποία θα περνιέται ως  παράμετρος. Ίσως να βάλεις εκεί και ελέγχους για το άν η ώρα που  πρόκειται να απεικονιστεί είναι σωστή (πχ. λεπτά <60, ώρα <24 κλπ)  ή το αναβόσβημα κάποιου decimal point που θα δείχνει τα δευτερόλεπτα.  Αυτό θα σου επιτρέψει να κεφαλαιοποιήσεις τις γνώσεις που απέκτησες με  το 7219, τα display και το σχετικό πρόγραμμα οδήγησής τους. Έτσι, όταν  αργότερα, με την απασχόληση με το 1307, θα έχει ξεθωριάσει λίγο στη  μνήμη σου η λειτουργία και η κατασκευή των 7219 και display, δεν θα  έχεις πρόβλημα χρόνου αφού θα έχεις έτοιμη τη ρουτίνα απεικόνισης και θα  μπορείς να ξαναθυμηθείς ότι έκανες χωρίς πίεση.

β. Ανέβασε  φωτογραφίες (close up με καλή ανάλυση) του RTC module που έχεις για να  δούμε τί παίζει. Αν έχεις και κάποιο εγχειρίδιο που το συνοδεύει,  ανέβασέ το και αυτό. Εναλλακτικά, ψάξε στο internet και στο ebay για  DS1307 module. Θα βρεις πολλά και ενδεχομένως κάποιο να είναι αυτό που  έχεις, οπότε postάρεις το σχετικό link. Πληροφορίες για τη σύνδεση και  χρήση arduino και DS1307 ΕΔΩ (ένα  απο τα πολλά sites που θα βρείς αν googlάρεις "arduino DS1307"). Εκτιμώ  οτι στις τρυπίτσες του 1307 module πρέπει να κολλήσεις θηλυκά pin (όπως  αυτά που έχει γύρω-γύρω το arduino) στα οποία θα μπαίνουν τα καλώδια  που έχεις. Με τις φωτογραφίες όμως θα σχηματίσουμε καλύτερη άποψη.

Αν θες να προχωρήσουμε κάπως αλλιώς, πες μας.

----------


## irenedur

το RTC που εχω ειναι αυτο

https://www.sparkfun.com/products/99

απλα δεν ξερω πως να το συνδεσω στην πλακετα κ μετα θα πρεπει να συνδεθει στον αρτνουινο η στο μαχ7219?

----------


## irenedur

οτι εχω ψαξει βλεπω ειναι καθαρα η συνδεση στο αρντουινο
δυστυχως βλεπω οτι θελει παλι 2 αντιστασεις κ ολο λεω να τελειωσω κ ολο
κατι μου λειπει..δυστυχως

αν βρω αντιστασεις μπορω να κανω το κυκλωμα..πιστευω
αλλα εχω απορια 
επειδη εχει τις τρυπιτσες
κ εχω εχω κατι πινσ απο μια οθονη
αυτα
http://grobotronics.com/pin-header-1...l#.Uh8fP39MiP0

το καρφιτωνω στην breadboard κ μετα βαζω πανω το rtc?
γιατι το κανω κ επειδη κουνιεται....νομιζω οτι ειναι σαν να μην το εχω συνδεσει

συνεπως μηπως πρεπει να το κολλησω με το κολλητηρι στην breadboard μαζι με αυτα τα πινς,ωστε να κανει επαφη?

----------


## jimmy956

Το RTC που έχεις είναι ένα τυπικό DS1307 module, το οποίο όμως δεν έχει ενσωματωμένες τις pull-up αντιστάσεις που χρειάζονται για τη λειτουργία του I2C bus. ΠΟλλοί υποστηρίζουν οτι δεν χρειάζονται pull-up αντιστάσεις καθότι η CPU έχει ενσωματωμένες. Εγώ, χρειάστηκα pull-ups όταν χρησιμοποίησα το I2C bus καθότι χωρίς αυτές δεν δούλευε. Προτείνω λοιπόν δύο αντιστάσεις 4,7ΚΩ (1/2 ή 1/4 Watt) και μια μπαταρία CR1225. Περισσότερη ανάλυση για τις αντιστάσεις στο I2C bus ΕΔΩ.  

Για να συνδέσεις το 1307 με το το arduino (το 7219 και τα display δεν έχουν σχέση), μπορείς να κάνεις ένα από τα ακόλουθα: 

α. Να προμηθευτείς θηλυκές σειρές pin, όπως αυτή της φωτογραφίας (απόσταση μεταξύ pins 2,54mm = 0,1inch)  
να κόψεις με κόφτη όσα χρειάζονται (πέντε, όσες και οι τρύπες στο 1307) και να τα κολήσεις με κολλητήρι στο 1307.   
 Εν συνεχεία, χρησιμοποιώντας τα καλώδια που έχεις, υποθέτω οτι είναι όπως αυτά 
 συνδέεις το arduino με το 1307 (με μία εδιάμεση σύνδεση στο breadboard για τις pull-up αντιστάσεις.  

β. Κολλάς με κολλητήρι αυτά τα pin που έχεις στο 1307 (κολλάς την κοντή πλευρά και μένει ελεύθερη η μακριά). Εν συνεχεία μπορείς να "καρφώσεις" (όχι να κολλήσεις !!!) το 1307 στο breadboard και εν συνεχεία να βάλεις καλώδια προς το arduino. Αφού έκανες δοκιμές, πιστεύω οτι η απόσταση μεταξύ των pins ταιριάζει τόσο με την απόσταση των τρυπών στο 1307 όσο και την απόσταση μεταξύ των τρυπών του breadboard. Αν όχι ίσως να μπορέσεις να κόψεις τα pin και να τα κολλήσεις στο 1307 ένα-ένα. Επίσης, δοκίμασε αν τα pins που έχεις, καρφώνονται στο breadboard (ίσως χρειαστεί λίγη δύναμη). 

 Η δεύτερη λύση μάλλον βολεύει περισσότερο...

----------


## irenedur

> β. Κολλάς με κολλητήρι αυτά τα pin που έχεις στο 1307 (κολλάς την κοντή πλευρά και μένει ελεύθερη η μακριά). Εν συνεχεία μπορείς να "καρφώσεις" (όχι να κολλήσεις !!!) το 1307 στο breadboard και εν συνεχεία να βάλεις καλώδια προς το arduino. Αφού έκανες δοκιμές, πιστεύω οτι η απόσταση μεταξύ των pins ταιριάζει τόσο με την απόσταση των τρυπών στο 1307 όσο και την απόσταση μεταξύ των τρυπών του breadboard. Αν όχι ίσως να μπορέσεις να κόψεις τα pin και να τα κολλήσεις στο 1307 ένα-ένα. Επίσης, δοκίμασε αν τα pins που έχεις, καρφώνονται στο breadboard (ίσως χρειαστεί λίγη δύναμη). 
> 
>  Η δεύτερη λύση μάλλον βολεύει περισσότερο...



  Δημητρη να εισαι καλα

το 2ρο θα κανω,αυτο μου ειπε κ ο καθηγητης
η θα κολλησεις τα καλωδια με το rtc η με την "χτενα" θα κολλησεις τα μικρα ποδια πανω κ τα μεγαλα κατω στην πλακετα
οποτε αυτο κ θα κανω για να μπορω να το μεταφερω το rtc..

σχετικα με τις αντιστασεις οπου κ να ειδα ακομα κ το datasheet του θελει 2 10Κ,αυτες ζητησα κ θα τις παρω σημερα

και μπαταρια εχει απο πισω το rtc

----------


## irenedur

καλησπερα απουσιαζα κ γι αυτο δεν σας ζαλισα
εκανα τα παντα

το θεμα ειναι πως οτι κωδικα κ αν βαζω τζιφος....

παιζει ρολο που δεν εχω δευτερολεπτα ωστε να μετραει αντιστροφα για την ωρα?



το κυκλωμα ειναι αυτο

DSC01336.jpg

DSC01335.jpg

----------


## irenedur

εχω βαλει και τις βιλβιοθηκες

του rtc και του time

----------


## jimmy956

Θα έλεγα να ανεβάσεις και το πρόγραμμα που χρησιμοποιείς, έτσι ώστε να έχουμε ολοκληρωμένη άποψη.  

Επίσης, έχουν οι αντιστάσεις του RTC +5V; Ρωτάω γιατί δεν φαίνεται από τη φωτο να συνδέεις τις κάτω ράγες τροφοδοσίας με τις επάνω που έχουν τάση (έρχεται όπως διακρίνω από το arduino).

----------


## irenedur

καλημερα

τι εννοεις να εχουν ρευμα?
οι αντιστασεις ειναι συνδεδεμενες στα αντιστοιχα ποδια του rtc το ενα μερος κ το αλλο στο + της breadboard
κατω απο το ενα ποδι της αντιστασης βαζω καλωδια κ πανε στο αρντουινο


αυτο μετρα απο 00 κ πανω στα 2 ψηφια
στα 4 ακομα δεν κανω κατι καλα κ δεν βγαινει...
#include "LedControl.h" //  need the library
LedControl lc=LedControl(12,11,10,1); // lc is our object
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLK pin 13
// pin 10 is connected to LOAD pin 12
// 1 as we are only using 1 MAX7219
void setup()
{
  // the zero refers to the MAX7219 number, it is zero for 1 chip
  lc.shutdown(0,false);// turn off power saving, enables display
  lc.setIntensity(0, :Cool: ;// sets brightness (0~15 possible values)
  lc.clearDisplay(0);// clear screen

}
void loop()
{
  //This code should count   from 00 displaying the numbers on the two digits 
    static int theNumber = 00;
    int digitOne, digitTwo;
    if (theNumber >99)
      theNumber = 0;


    if (theNumber > 0)
    {
      float result = theNumber / 10;  //s/b 4.2 resulting in 4
      digitTwo = result; 
      digitOne = theNumber % 10;  //this gets the remainder of 42/10 or 2
    }
    else
    {
      digitTwo = 0;
      digitOne = theNumber;  
    }
    lc.setDigit(0,0,digitOne,false);  
    lc.setDigit(0,1,digitTwo,false);
    delay(1000);
    theNumber ++;//count  !!
}

αλλα σχετικα με το ρολοι
// Simple clock using DS1307 RTC chip, Arduino and
// MAX7219 LED display driver

#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68
#include "LedControl.h" // need the library
byte second, minute  ;
float t=0;
int a,b;
LedControl lc=LedControl(12,11,10,1); // lc is ourobject
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLKpin 13
// pin 10 is connected to LOAD pin12
// 1 as we are only using 1 MAX7219
// Convert normaldecimal numbersto binary coded decimal
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10));
}

// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16));
}

// 1) Sets the date and time on the ds1307
// 2) Starts theclock
// 3) Sets hour mode to 24 hour clock
// Assumes you'repassing in validnumbers

void setDateDs1307(byte second,// 0-59
byte minute)// 0-59

{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.write(decToBcd(second));// 0 to bit 7 starts the clock
Wire.write(decToBcd(minute));
Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turnson square wave
Wire.endTransmission();
}
// Gets the dateand time from theds1307
void getDateDs1307(byte *second,
byte *minute)

{




// Reset the register pointer
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

// A few of these need masks because certain bits are control bits
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());


}
void setup()
{
// the zero refers to the MAX7219 number, it is zero for 1 chip
lc.shutdown(0,false);// turn offpower saving, enables display
lc.setIntensity(0, :Cool: ;// sets brightness (0~15 possible values)
lc.clearDisplay(0);// clear screen
byte second, minute ;
Wire.begin();// Change thesevalues to what you want to set your clock to.
// You probablyonly want to setyour clock onceand then remove
// the setDateDs1307 call.
second = 0;
minute = 56;





// setDateDs1307(second, minute, );
}
void loop()
{


getDateDs1307(&second, &minute );

if (minute<10)
{
lc.setDigit(0,0,0,false);
lc.setDigit(0,1,minute,false);
} else if (minute>=10)
{
t=minute/10
;
a=int(t);
lc.setDigit(0,0,a,false);
t=minute%10;
lc.setDigit(0,1,t,false);
}
if (second<10)
{
lc.setDigit(0,2,0,false);
lc.setDigit(0,3,second,false);

} else if (second>=10)
{
t=second/10;
lc.setDigit(0,2,a,false);
t=second%10;
lc.setDigit(0,3,t,false);
}
}

μετραει δευτερα κ λεπτα για αρχη για να δω οτι δουλευει
κ μετα θα το κανω να ειναι ωρα κ λεπτα
αμα μπορω...

αλλα δεν κανει τπτ κ δεν ξερω ειναι οκ το rtc?
πως μπορω να τεσταρω οτι κ το εχω συνδεσει σωστα(πιο πολυ για την κολληση με ενδιαφερει)
κ τεσπαντων οτι δουλευει?

----------


## irenedur

αλλαξα την θεση των αντοστασεων κ εκει που χθες οταν πηγαινα στα παραδειγματα του ds1307 και παταγα settime και readtest ητανε ολα σβηστα 
τωρα ειναι ολα αναμμενα
δεν εκανα κατι ιδιαιτερο 
εκει στο sda και scl πρωτα εβαζα το ενα ακρο της αντιστασης  το αλλο ακρο της στο + 
και ακριβως απο κατω εβαζα τα αντιστοιχα καλωδια και πανω στο αρτνουινο

τωρα εβαλα πρωτα τα καλωδια πανε αρντουινο
και ακριβως απο κατω τους τις αντιστασεις το ενα ακρο τους κ το αλλο στο + 

δεν ξερω αν παιζει ρολο,αλλα μηπως ετσι ειναι καλυτερα...

παραυτα το προγραμμα δεν...

----------


## jimmy956

> Θα έλεγα να ανεβάσεις και το πρόγραμμα που χρησιμοποιείς, έτσι ώστε να έχουμε ολοκληρωμένη άποψη.  
> 
> Επίσης, έχουν οι αντιστάσεις του RTC +5V; Ρωτάω γιατί δεν φαίνεται από τη φωτο να συνδέεις τις κάτω ράγες τροφοδοσίας με τις επάνω που έχουν τάση (έρχεται όπως διακρίνω από το arduino).



Αυτό που εννοώ είναι οτι αν έχουμε ένα breadboard, πχ αυτό



οι τρύπες με τις κόκκινες γραμμές και αυτές με τις μπλέ, δεν έχουν αρχικά καμμία τάση. Όμως, επειδή εκεί συνηθίζουμε να υπάρχει η θετική τροφοδοσία στο κόκκινο και η αρνητική στο μπλέ, συνδέουμε εκεί πχ το +5V και το 0V απο το arduino. Έτσι, αφού συνδέσουμε μια τρύπα της κόκκινης γραμμής με το +5 του arduino και σε μια τρύπα της μπλε γραμμής το 0 του arduino, το κόκκινο και μπλέ έχουν πλέον τροφοδοσία για να δώσουμε στο κύκλωμα που φτιάχνουμε. Αν τώρα θέλουμε και οι κόκκινη και μπλέ γραμμή από την άλλη πλευρά να έχει και αυτή τροφοδοσία, συνδέουμε με καλώδια όπως φαίνεται πιο πάνω. Επίσης, στα μεγάλα breadboards κάθε πλευρά έχει δύο ανεξάρτητα (ασύνδετα) τμήματα κόκκινων και μπλε γραμμών οπότε τα ενώνεις και αυτά, όπως έχεις ήδη κάνει.

Οπότε, έλεγξε αν οι αντιστάσεις από το RTC όντως είανι συνδεδεμένες στο +5 (δηλ. η κόκκινη γραμμή στην οποία καταλήγουν οι αντιστάσεις είναι συνδεδεμένη με τα +5).

----------


## irenedur

ok αυτα που μου λες δεν τα ειχα κανει...απορω πως δουλευαν τα κυκλωματα,περαν αυτου με το ds τα αλλα επερναν ρευμα
δλδ το +5 του αρντουινο κ το κοκκινο ητανε συνδεμενα

αυτο που δεν ητανε ητανε το μπλε με το 0 του αρντουινο
κ ρωτω με το 0 του αρντουινο η το grd του αρντουινο?

κ συνδεσα και τα πανω κατω την breadboard που δεν το ειχα κανει...
ωστε να περνουν κ οι 2 κοκκινες κ μπλε τροφοδοσια

βεβαια η  breadboard δεν εχει κοκκινο κ μπλε
αλλα το εχω βρει

----------


## irenedur

συνδεοντας στο 0 του αρντουινο εβγαζε σφαλμα

συνδεοντας στην γειωση του αρντουινο οκ λειτουργουν

λογικα τωρα θα παιζει κ το rtc

για να δω

----------


## jimmy956

Λέγοντας 0V ή 0 εννοούσα το πλην της τροφοδοσίας, οπότε το Gnd του arduino. Εσύ ποιό 0 συνέδεσες;

----------


## irenedur

0  του αρντουινο,αφου ειμαι ασχετη!

αλλα το εβαλα gnd του αρντουινο το φανταστηκα
βεβαια κατω στον αρντουινο διπλα στο +5 εχει 2 gnd,φανταζομαι το ιδιο ειναι ναι?ειτε η μια ειτε η αλλη
εχει 2 ποδαρακια το gnd δλδ

----------


## jimmy956

Ναι, τα δύο gnd είναι το ίδιο.

----------


## irenedur

// Simple clock using DS1307 RTC chip, Arduino and
// MAX7219 LED display driver 
#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68
#include "LedControl.h" // need the library
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
float t=0;
int a,b;
LedControl lc=LedControl(12,11,10,1); // lc is ourobject
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLKpin 13
// pin 10 is connected to LOAD pin12
// 1 as we are only using 1 MAX7219
// Convert normaldecimal numbersto binary coded decimal
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10));
}

// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16));
}

// 1) Sets the date and time on the ds1307
// 2) Starts theclock
// 3) Sets hour mode to 24 hour clock
// Assumes you'repassing in validnumbers

void setDateDs1307(byte second,// 0-59
byte minute,// 0-59
byte hour)// 1-23
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.write(decToBcd(second));// 0 to bit 7 starts the clock
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turnson square wave
Wire.endTransmission();
}
// Gets the dateand time from theds1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour)
{




// Reset the register pointer
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

// A few of these need masks because certain bits are control bits
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f); // Need to changethis if 12 hour am/pm


}
void setup()
{
// the zero refers to the MAX7219 number, it is zero for 1 chip
lc.shutdown(0,false);// turn offpower saving, enables display
lc.setIntensity(0, :Cool: ;// sets brightness (0~15 possible values)
lc.clearDisplay(0);// clear screen
byte second, minute, hour, dayOfWeek, dayOfMonth,month, year;
Wire.begin();// Change thesevalues to what you want to set your clock to.
// You probablyonly want to setyour clock onceand then remove
// the setDateDs1307 call.
second = 0;
minute = 56;
hour = 9;




// setDateDs1307(second, minute, hour,);
}

void loop()
{
lc.setChar(0,2,'-',false);
lc.setChar(0,5,'-',false);

if (hour<10)
{
lc.setDigit(0,0,0,false);
lc.setDigit(0,1,hour,false)
;
} else if (hour>=10)
{
t=hour/10;
a=int(t);
lc.setDigit(0,0,a,false);
t=hour%10;
lc.setDigit(0,1,t,false);
}
if (minute<10)
{
lc.setDigit(0,3,0,false);
lc.setDigit(0,4,minute,false);
} else if (minute>=10)
{
t=minute/10;
a=int(t);
lc.setDigit(0,3,a,false);
t=minute%10;
lc.setDigit(0,4,t,false);
}
if (second<10)
{
lc.setDigit(0,6,0,false);
lc.setDigit(0,7,second,false);
}
else if (second>=10)
{
t=second/10;
a=int(t);
lc.setDigit(0,6,a,false);
t=second%10;
lc.setDigit(0,7,t,false);
}
}


το αρχικο προγραμμα ειναι αυτο
αφαιρεσα την ημερομηνια,χρονο κλπ
δλδ κρατησα μονο ωρα λεπτα δευτερα

αλλα εχω 4 ψηφια κ οχι 7 οπως το αρχικο αλλα κανω διαφορες δοκιμες
μα τζιφος

----------


## jimmy956

Για να μην μπερδευόμαστε με πολύπλοκους κώδικες, δες αν τρέχει αυτό (μετά το upload, πρέπει να ξεκινήσεις το terminal στα 9600 για να βλέπεις τα αποτελέσματα στο PC)

//Arduino 1.0+ Only
//Arduino 1.0+ Only

#include "Wire.h"
#define DS1307_ADDRESS 0x68
byte zero = 0x00; //workaround for issue #527


void setup(){
  Wire.begin();
Serial.begin(9600);
  setDateTime(); //MUST CONFIGURE IN FUNCTION
}

void loop(){
  printDate();
delay(1000);
}

void setDateTime(){

byte second =      45; //0-59
byte minute =      40; //0-59
byte hour =        0; //0-23
byte weekDay =     2; //1-7
byte monthDay =    1; //1-31
byte month =       3; //1-12
byte year  =       11; //0-99

  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero); //stop Oscillator

  Wire.write(decToBcd(second));
  Wire.write(decToBcd(minute));
  Wire.write(decToBcd(hour));
  Wire.write(decToBcd(weekDay));
  Wire.write(decToBcd(monthDay));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));

  Wire.write(zero); //start 

  Wire.endTransmission();

}

byte decToBcd(byte val){
// Convert normal decimal numbers to binary coded decimal
return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val) {
// Convert binary coded decimal to normal decimal numbers
return ( (val/16*10) + (val%16) );
}

void printDate(){

// Reset the register pointer
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_ADDRESS, 7);

int second = bcdToDec(Wire.read());
int minute = bcdToDec(Wire.read());
int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
int monthDay = bcdToDec(Wire.read());
int month = bcdToDec(Wire.read());
int year = bcdToDec(Wire.read());

//print the date EG   3/1/11 23:59:59
Serial.print(month);
Serial.print("/");
Serial.print(monthDay);
Serial.print("/");
Serial.print(year);
Serial.print(" ");
Serial.print(hour);
Serial.print(":");
Serial.print(minute);
Serial.print(":");
Serial.println(second);

}

----------


## irenedur

> Ναι, τα δύο gnd είναι το ίδιο.




ωραια μια χαρα

----------


## jimmy956

terminal = tools->serial monitor

----------


## irenedur

στο pc πως μπορω να δω τα αποτελεσματα?

----------


## jimmy956

tools->serial monitor

----------


## irenedur

ιδεα δεν ειχα


βγαζει αυτο συνεχεια
165/165/165 45:165:165

----------


## jimmy956

Είσαι στα 9600;

----------


## irenedur

ναι

παραυτα αυτο δειχνει οτι το rtc ειναι συνδεμενο σωστα ετσι δεν ειναι?αλλιως δεν θα εβγαζε τπτ

----------


## jimmy956

Δεν είναι απαραίτητο οτι είναι σωστά ενωμένο

Δοκίμασε τον κώδικα που θα βρείς στο http://combustory.com/wiki/index.php...eal_Time_Clock κάτω από την επικεφαλίδα RTC_DS1307_Control v1.00 code

Μετά το upload, βάλε serial monitor στα 57600 και πληκτρολόγησε

T1157194250112 και enter
R και enter

----------


## irenedur

αυτην την σελιδα ειχα βαλει μερη του κωδικα 
λοιπον εκανα οτι μου ειπες

και βγαζει

45:165:85  , 165  20165

Command: 116
45:165:85  , 165  20165

Command: 114

----------


## jimmy956

Δοκίμασε να βγάλεις το module απο το breadboard, βγάλε την μπαταρία του, αστο 15 sec, ξαναβάλτο χωρίς μπαταρία και ξαναδοκίμασε τον κώδικα..

----------


## jimmy956

Δοκίμασε επίσης και άλλες εντολές όπως
T1111112101010
R

Q1
Q2

Βγάζει συνέχεια τα ίδια;

----------


## irenedur

Command: 84
45:165:85  , 165  20165

Command: 82
45:165:85  , 165  20165

Command: 84
45:165:85  , 165  20165

Command: 82
45:165:85  , 165  20165
: RTC1307 Initialized Memory
Command: 49
45:165:85  , 165  20165
: RTC 1307 Dump Begin
0: 255 : FF
1: 255 : FF
2: 255 : FF
3: 255 : FF
4: 255 : FF
5: 255 : FF
6: 255 : FF
7: 255 : FF
8: 255 : FF
9: 255 : FF
10: 255 : FF
11: 255 : FF
12: 255 : FF
13: 255 : FF
14: 255 : FF
15: 255 : FF
16: 255 : FF
17: 255 : FF
18: 255 : FF
19: 255 : FF
20: 255 : FF
21: 255 : FF
22: 255 : FF
23: 255 : FF
24: 255 : FF
25: 255 : FF
26: 255 : FF
27: 255 : FF
28: 255 : FF
29: 255 : FF
30: 255 : FF
31: 255 : FF
32: 255 : FF
33: 255 : FF
34: 255 : FF
35: 255 : FF
36: 255 : FF
37: 255 : FF
38: 255 : FF
39: 255 : FF
40: 255 : FF
41: 255 : FF
42: 255 : FF
43: 255 : FF
44: 255 : FF
45: 255 : FF
46: 255 : FF
47: 255 : FF
48: 255 : FF
49: 255 : FF
50: 255 : FF
51: 255 : FF
52: 255 : FF
53: 255 : FF
54: 255 : FF
55: 255 : FF
56: 255 : FF
57: 255 : FF
58: 255 : FF
59: 255 : FF
60: 255 : FF
61: 255 : FF
62: 255 : FF
63: 255 : FF
 RTC1307 Dump end
Command: 50





ναι τα ιδια

----------


## jimmy956

Στο loop{}, στην 20η περίπου γραμμή, έχει αυτά

 I2C_WRITE(0x08 ); _// Set the register pointer to be just past the date/time registers._
           for (i = 1; i <= 24; i++) {
               I2C_WRITE(0Xff);
              delay(10);
           }   

Άλλαξε το I2C_WRITE(0Xff); σε I2C_WRITE(0X55);

και ξαναδώσε 
Q1
Q2

----------


## irenedur

45:165:85  , 165  20165
: RTC1307 Initialized Memory
Command: 49
Command: 55
45:165:85  , 165  20165
: RTC1307 Initialized Memory
Command: 49
Command: 57
45:165:85  , 165  20165
: RTC 1307 Dump Begin
0: 255 : FF
1: 255 : FF
2: 255 : FF
3: 255 : FF
4: 255 : FF
5: 255 : FF
6: 255 : FF
7: 255 : FF
8: 255 : FF
9: 255 : FF
10: 255 : FF
11: 255 : FF
12: 255 : FF
13: 255 : FF
14: 255 : FF
15: 255 : FF
16: 255 : FF
17: 255 : FF
18: 255 : FF
19: 255 : FF
20: 255 : FF
21: 255 : FF
22: 255 : FF
23: 255 : FF
24: 255 : FF
25: 255 : FF
26: 255 : FF
27: 255 : FF
28: 255 : FF
29: 255 : FF
30: 255 : FF
31: 255 : FF
32: 255 : FF
33: 255 : FF
34: 255 : FF
35: 255 : FF
36: 255 : FF
37: 255 : FF
38: 255 : FF
39: 255 : FF
40: 255 : FF
41: 255 : FF
42: 255 : FF
43: 255 : FF
44: 255 : FF
45: 255 : FF
46: 255 : FF
47: 255 : FF
48: 255 : FF
49: 255 : FF
50: 255 : FF
51: 255 : FF
52: 255 : FF
53: 255 : FF
54: 255 : FF
55: 255 : FF
56: 255 : FF
57: 255 : FF
58: 255 : FF
59: 255 : FF
60: 255 : FF
61: 255 : FF
62: 255 : FF
63: 255 : FF
 RTC1307 Dump end
Command: 50

----------


## jimmy956

Άρα, στο 1307 δεν είτε δεν γράφεται τίποτε σωστά (προσπαθήσαμε να γράψουμε 55 και βγήκε FF), είτε δεν διαβάζεται τίποτε σωστά καθότι διαβάζουμε συνέχεια FF hex (όλο άσσους binary)

Οπότε, βγάλε την τροφοδοσία (+5 και gnd) από το max (δε χρειάζεται να το βγάλεις από το breadboard) και άσε μόνο το 1307 με τροφοδοσία. Ξαναέλεγξε τις αντιστάσεις και τις καλωδιώσεις του 1307 και ξαναδοκίμασε τον κώδικα με την αλλαγή FF->55.

----------


## jimmy956

Επιβεβαίωσε επίσης οτι οι αντιστάσεις συνδέονται στο +5V και τα λέμε με πιο καθαρό μυαλό αύριο...

----------


## irenedur

λοιπον εβγαλα το μαξ

και εβαλα το δικο σου προγραμμα και βγαζει
3/1/11 0:40:45
3/1/11 0:40:46
3/1/11 0:40:47
3/1/11 0:40:48
3/1/11 0:40:49
3/1/11 0:40:50
3/1/11 0:40:51
3/1/11 0:40:52
3/1/11 0:40:53

κ ανεβαινει......


εγω φταιω εκανα τραγικο λαθος στις εισοδους του rtc και αντι για την 4 την ειχα βαλει στο 3....ξερω ξερω
βλακεια αλλα μπερδεψατα καλωδια....τωρα που εβγαζα του μαξ...το ειδα αντι να ειχα
κανει συνδεση στην αναλογικη 4,5 ειχα βαλει στην 3,5 το rtc...
συγνωμη

----------


## irenedur

ακομα χωρις το μαξ


βαζω το προγραμμα της σελιδας
και ειτε αφηνω το ff ειτε το κανω 55 βγαζει
00:42:24  Mon, 1 Mar 2011
: RTC1307 Initialized Memory
Command: 49
00:42:26  Mon, 1 Mar 2011
: RTC 1307 Dump Begin
0: 38 : 26
1: 66 : 42
2: 0 : 0
3: 2 : 2
4: 1 : 1
5: 3 : 3
6: 17 : 11
7: 0 : 0
8: 85 : 55
9: 85 : 55
10: 85 : 55
11: 85 : 55
12: 85 : 55
13: 85 : 55
14: 85 : 55
15: 85 : 55
16: 85 : 55
17: 85 : 55
18: 85 : 55
19: 85 : 55
20: 85 : 55
21: 85 : 55
22: 85 : 55
23: 85 : 55
24: 85 : 55
25: 85 : 55
26: 85 : 55
27: 85 : 55
28: 85 : 55
29: 85 : 55
30: 85 : 55
31: 85 : 55
32: 93 : 5D

----------


## irenedur

συνδεω το μαξ κ εχω στο προγραμμα της σελιδας

στην αρχη ff

00:49:06  Mon, 1 Mar 2011
: RTC1307 Initialized Memory
Command: 49
00:49:13  Mon, 1 Mar 2011
: RTC 1307 Dump Begin
0: 19 : 13
1: 73 : 49
2: 0 : 0
3: 2 : 2
4: 1 : 1
5: 3 : 3
6: 17 : 11
7: 0 : 0
8: 255 : FF
9: 255 : FF
10: 255 : FF
11: 255 : FF
12: 255 : FF
13: 255 : FF
14: 255 : FF
15: 255 : FF
16: 255 : FF
17: 255 : FF
18: 255 : FF
19: 255 : FF
20: 255 : FF
21: 255 : FF
22: 255 : FF
23: 255 : FF
24: 255 : FF
25: 255 : FF
26: 255 : FF
27: 255 : FF
28: 255 : FF
29: 255 : FF
30: 255 : FF
31: 255 : FF
32: 93 : 5D
33: 255 : FF
34: 255 : FF
35: 255 : FF
36: 255 : FF
37: 255 : FF
38: 255 : FF
39: 255 : FF
40: 255 : FF
41: 255 : FF
42: 255 : FF
43: 255 : FF
44: 255 : FF
45: 255 : FF
46: 255 : FF
47: 255 : FF
48: 255 : FF
49: 255 : FF
50: 255 : FF
51: 255 : FF
52: 255 : FF
53: 255 : FF
54: 255 : FF
55: 255 : FF
56: 255 : FF
57: 255 : FF
58: 255 : FF
59: 255 : FF
60: 255 : FF
61: 255 : FF
62: 255 : FF
63: 255 : FF
 RTC1307 Dump end
Command: 50



μετα το ff το κανω 55


00:50:27  Mon, 1 Mar 2011
: RTC1307 Initialized Memory
Command: 49
00:50:29  Mon, 1 Mar 2011
: RTC 1307 Dump Begin
0: 41 : 29
1: 80 : 50
2: 0 : 0
3: 2 : 2
4: 1 : 1
5: 3 : 3
6: 17 : 11
7: 0 : 0
8: 85 : 55
9: 85 : 55
10: 85 : 55
11: 85 : 55
12: 85 : 55
13: 85 : 55
14: 85 : 55
15: 85 : 55
16: 85 : 55
17: 85 : 55
18: 85 : 55
19: 85 : 55
20: 85 : 55
21: 85 : 55
22: 85 : 55
23: 85 : 55
24: 85 : 55
25: 85 : 55
26: 85 : 55
27: 85 : 55
28: 85 : 55
29: 85 : 55
30: 85 : 55
31: 85 : 55
32: 93 : 5D
33: 255 : FF
34: 255 : FF
35: 255 : FF
36: 255 : FF
37: 255 : FF
38: 255 : FF


εδω αλλαξα στο loop που μου ειπες και το ff που ειναι στο i=24
και το εκανα 55
αλλα κ το απο κατω στο i=33 και βγαινει αυτο
00:51:36  Mon, 1 Mar 2011
: RTC1307 Initialized Memory
Command: 49
00:51:38  Mon, 1 Mar 2011
: RTC 1307 Dump Begin
0: 56 : 38
1: 81 : 51
2: 0 : 0
3: 2 : 2
4: 1 : 1
5: 3 : 3
6: 17 : 11
7: 0 : 0
8: 85 : 55
9: 85 : 55
10: 85 : 55
11: 85 : 55
12: 85 : 55
13: 85 : 55
14: 85 : 55
15: 85 : 55
16: 85 : 55
17: 85 : 55
18: 85 : 55
19: 85 : 55
20: 85 : 55
21: 85 : 55
22: 85 : 55
23: 85 : 55
24: 85 : 55
25: 85 : 55
26: 85 : 55
27: 85 : 55
28: 85 : 55
29: 85 : 55
30: 85 : 55
31: 85 : 55
32: 93 : 5D
33: 85 : 55

----------


## irenedur

αυτο ειναι απο το δικο σου προγραμμα το αποτελεσμα,ειπαμε το μαξ ειναι συνδεμενο κανονικα

πω πω βλακωδες το σφαλμα μου συγνωμη ,δεν ξρω πως την πατησα κ ολο το πρωι τσεκαριζα συνδεσεις

3/1/11 0:40:45
3/1/11 0:40:46
3/1/11 0:40:47
3/1/11 0:40:48
3/1/11 0:40:49
3/1/11 0:40:50
3/1/11 0:40:51
3/1/11 0:40:52
3/1/11 0:40:53
3/1/11 0:40:54
3/1/11 0:40:55
3/1/11 0:40:56

----------


## irenedur

> Δεν είναι απαραίτητο οτι είναι σωστά ενωμένο
> 
> Δοκίμασε τον κώδικα που θα βρείς στο http://combustory.com/wiki/index.php...eal_Time_Clock κάτω από την επικεφαλίδα RTC_DS1307_Control v1.00 code
> 
> Μετά το upload, βάλε serial monitor στα 57600 και πληκτρολόγησε
> 
> 
> 
> 
> ...





και εδω εχουμε

19:57:11  Wed, 25 Jan 2012

Command: 84
19:57:20  Wed, 25 Jan 2012

Command: 114



που σημαινει οτι το rtc δουλευει καλα
δλδ τωρα μενει ο κωδικας που θα δειχνει το ρολοι στα 7segment displays?λογικα..

----------


## jimmy956

Έσκισες!!!!! Όλο το hardware που έφτιαξες, φαίνεται ότι τώρα δουλεύει σωστά !!!!

Ναι, τώρα μένει να απεικονίσεις το ρολόι στα displays. Πως βλέπεις να το κάνεις; Εγώ σκέφτομαι να κρατήσεις τον τελευταίο κώδικα (με τα Τ και τα Q) και εκεί που γράφει στο serial (δηλ. στο PC) να αλλαχτεί ώστε να γράφει στο max...

Εναλλακτικά, κατεβάζεις μια βιβλιοθήκη για το 1307 και έχοντας και τη βιβλιοθήκη για το max γράφεις δικό σου πρόγραμμα..

----------

irenedur (14-09-13)

----------


## irenedur

καλημερα 


δεν το ειχα σκεφτει ετσι
θα προσπαθησω αφου πλεον ολα ειναι σωστα

σε ευχαριστω

το θεμα ειναι πως γραφει το rtc πραγματικη ωρα?
θελω να πω στο προγραμμα αυτο του δηλωνεις εσυ στην αρχη..

----------


## jimmy956

Βάζεις τη μπαταρία στο 1307, του σετάρεις μια φορά την ώρα (πχ με το πρόγραμμα με το Τ) και αυτό την κρατάει όσο η μπαταρία είναι ΟΚ είτε έχει τάση από το arduino είτε όχι..

----------


## jimmy956

Αν θές να σετάρεις την ώρα με κουμπιά όπως στα ρολόγια του εμπορίου, θέλει επιπλέον hardware (κουμπιά κλπ) και γράψιμο κώδικα...

----------


## irenedur

a ok

οχι αλλο harware μου φτανει! :Rolleyes:

----------


## irenedur

σας εχω ευχαριστα νεα..!!!!!
δημητρη ειδικα εσενα που με βοηθησες οσο δεν παει

επιτελους τα καταφερα,απο το μεσημερακι..!!!!
ασχοληθηκα πολυ με τον κωδικα
εβγαλα τα λεπτα στα 2 τελαυταια digits
μετα εβγαλα κ την ωρα στα 2 πρωτα και το εχω βαλει απο το μεσημερι
κ μετραει...................!!!!


μετραει σουπερ
μονο περιμενω να δω αν θα αλλαξει για 24ωρο
αυτο που θελω να ρωτησω ειναι επειδη απο την ωρα που το εβαλα παει 15 λεπτα μπροστα
πως μπορω να το σεταρω ωστε να δειχνει την σωστη ωρα,να μην χανει καθολου


και κατι αλλο στον κωδικα εχω βαλει ημερομηνια κλπ
εγω ομως αυτα δεν τα εμφανιζω αφου οθονη δεν εχω
να τα αφησω να υπαρχουν στον κωδικα η να τα σβησω 
φοβαμαι μηπως κατι κανω λαθος μετα γι αυτο δεν το πειραζω,,!!


το προγραμμα ειναι αυτο

#include "Wire.h"
#define DS1307_I2C_ADDRESS 0x68
#include "LedControl.h" // need the library
byte second, minute, hour  ,dayOfWeek, dayOfMonth, month, year;
float t=0;
int a,b;

LedControl lc=LedControl(12,11,10,1); // lc is ourobject
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLKpin 13
// pin 10 is connected to LOAD pin12
// 1 as we are only using 1 MAX7219

// Convert normaldecimal numbersto binary coded decimal
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10));
}

// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16));
}


// 1) Sets the date and time on the ds1307
// 2) Starts theclock
// 3) Sets hour mode to 24 hour clock
// Assumes you'repassing in validnumbers

void setDateDs1307(byte second,// 0-59
byte minute,// 0-59
byte hour, //1-23
byte dayOfWeek,// 1-7
byte dayOfMonth,// 1-28/29/30/31
 byte month,// 1-12
byte year)// 1-23
{

Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.write(decToBcd(second));// 0 to bit 7 starts the clock
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turnson square wave
Wire.endTransmission();
}

// Gets the dateand time from theds1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{


// Reset the register pointer
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);


// A few of these need masks because certain bits are control bits
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f); // Need to changethis if 12 hour am/pm
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());

}


void setup()
{
// the zero refers to the MAX7219 number, it is zero for 1 chip
lc.shutdown(0,false);// turn offpower saving, enables display
lc.setIntensity(0, :Cool: ;// sets brightness (0~15 possible values)
lc.clearDisplay(0);// clear screen

byte second, minute, hour, dayOfWeek, dayOfMonth,month, year;
Wire.begin();// Change thesevalues to what you want to set your clock to.
// You probablyonly want to setyour clock onceand then remove
// the setDateDs1307 call.
second = 0;
minute = 56;
hour = 23;
dayOfWeek = 7;
dayOfMonth = 31;
month = 12;
year = 23;
// setDateDs1307(second, minute, hour,dayOfWeek, dayOfMonth, month, year);


}


void loop()
{
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth,&month, &year); 
if (hour<10)
{
lc.setDigit(0,3,0,false);
lc.setDigit(0,2,hour,false)
;
} else if (hour>=10)
{
t=hour/10;
a=int(t);
lc.setDigit(0,3,a,false);
t=hour%10;
lc.setDigit(0,2,t,false);
}
if (minute<10)
{
lc.setDigit(0,1,0,false);
lc.setDigit(0,0,minute,false);
} else if (minute>=10)
{
t=minute/10;
a=int(t);
lc.setDigit(0,1,a,false);
t=minute%10;
lc.setDigit(0,0,t,false);
}
if (second<10)
{
lc.setDigit(0,6,0,false);
lc.setDigit(0,7,second,false);
}
else if (second>=10)
{
t=second/10;
a=int(t);
lc.setDigit(0,6,a,false);
t=second%10;
lc.setDigit(0,7,t,false);
}

}

----------


## irenedur

και κατι αλλο

τι προγραμμα υπαρχει ωστε να κανω το σχημα και να το βαλω ως φωτογραφια την πτυχιακη πια

----------


## chip

για το σχέδιο kicad.
πρέπει όμως να προσθέσεις και 1-2 πλήκτρα για ρύθμιση της ώρας.... πιστεύω οτι θα στο ζητήσει ο καθηγητής

----------

irenedur (15-09-13)

----------


## irenedur

βασικα θα ηθελα κατι ωστε να φαινεται το αρντουινο και οι συνδεσεις με τα καλωδια κ breadboard
βεβαια ειχα βρει το fritzing αλλα δεν εχει το max7219 οποτε τζιφος


chip το εχω ηδη συζητησει μαζι του κ δεν μου εχει πει κατι

εξαλλου χρονο δεν εχω ,μεχτι τις 29 πρεπει να παραδωσω..αλλιως χανω το θεμα,οποτε..

----------


## jimmy956

Κατ' αρχήν συγχαρητήρια !!!!

Όπως μπορείς να διαβάσεις ΕΔΩ το 1307 δυστυχώς δεν φημίζεται για την ακρίβειά του. Εκτιμώ ότι ο μοναδικός τρόπος να βελτιώσεις την ακρίβεια είναι να μετρήσεις πόσο χάνει σε δύο (ή περισσότερες) ώρες (λεπτά και δευτερόλεπτα) και εν συνεχεία να κάνεις αφαίρεση κάποιων δευτερολέπτων ανά κάποιο χρονικό διάστημα (πχ 10, 15, 30 λεπτά).

Πιστεύω ότι αν αφήσεις των κώδικα της ημερομηνίας δεν θα έχεις πρόβλημα. Μάλιστα, μπορείς να εμφανίζεις την ημερομηνία κάθε πχ 15 δευτερόλεπτα, επί πχ 2 δευτερόλεπτα και μετά να επανέρχεσαι στο να δείχνεις την ώρα.

Επίσης, στο loop θα πρότεινα να βάλεις και ένα delay 0,5 ή 1 δευτερόλεπτο έτσι ώστε να μην έχει το arduino συνεχή επικοινωνία με το 1307 (δεν χρειάζεται άλλωστε). Ίσως έτσι πέσει και λίγο η θερμοκρασία του 1307 και βελτιωθεί λίγο η ακρίβειά του (μάλλον άκυρη σκέψη, αλλά δε χάνεις και τίποτε!!).

----------

irenedur (15-09-13)

----------


## irenedur

σε ευχαριστω πολυ!
εξαλλου με βοηθησες αρκετα!

δεν θα τα ειχα καταφερει χωρις την βοηθεια σας αλλωστε

ερωτηση
πως μπορω να κανω reset  την ωρα να ξαναμετραει απο την αρχη?
βγαζοντας την μπαταρια κ βαζοντας την κ ξαναπρογραμματιζοντας το?

----------


## jimmy956

Αν βγάλεις τη μπαταρία και το 1307 δεν παίρνει τροφοδοσία, τότε όταν του ξαναδώσεις τροφοδοσία (μπαταρία ή σύνδεση με arduino), η ώρα και ημερομηνία θα είναι 01/01/00 01 00:00:00 (MM/DD/YY Day Of Week HH:MM:SS), όπως αναφέρει το datasheet του 1307 ΕΔΩ (σελ. 8, πρώτη παράγραφος). 

Αν θες να του βάζεις εσύ συγκεκριμένη ημερομηνία τότε είτε γράφεις ένα μικρό πρόγραμμα που θα κάνει μόνο αυτό, το τρέχεις μια φορά στο arduino και μετά τρέχεις το πρόγραμμα απεικόνισης, είτε στο πρόγραμμα απεικόνισης που δείχνει την ώρα περιλαμβάνεις κώδικα που να δέχεται κάποια είσοδο (πχ κουμπί ή εντολή από PC) και να βάζει την ώρα που θες όταν το θες.

----------


## irenedur

πιθανον να μπορω να περασω αυτο το προγραμμα στο Module ωστε να θεσω εγω ημερομηνια κ ωρα
βαζοντας τις εξοδους 8,9,βλεπω οτι στο σειριακη οθονη υφισταται και μετα συνδεω στο 4,5 που ειναι για 
την δικη μου εφαρμογη
http://wiring.org.co/learning/librar...timeclock.html

----------


## jimmy956

Το wiring δεν είναι arduino. Είναι άλλο board.

Το πρόγραμμα είναι κομμάτι από τον κώδικα με τα T και τα Q δες post 130 http://www.hlektronika.gr/forum/show...l=1#post616742), με το οποίο μπορείς να ρυθμίσεις την ώρα (εντολή Τ) και να την απεικονίσεις (εντολή R)

----------


## irenedur

α μαλιστα

----------


## irenedur

δυστυχως παει μπροστα

εβγαλα χθες την μπαταρια απο το Module βεβαια το ds ητανε πανω στην breadboard αλλα δεν ειχε τροφοδοσια τπτ
απλα δεν θελω να το μπαινοβγαζω μην κανει να σπασει καμια κολληση
κ μολις το εβαλα παλι τα ιδια,βεβαια μου κοπηκε το αιμα γιατι ξεκινησε μετα απο λιγο και οχι αμεσως
κ φοβηθηκα οτι κατι παιχτηκε....40 λεπτα μπροστα παει
προσπαθησα να κανω reset με εντολες αλλα τπτ

----------


## jimmy956

Αν μετρήσεις με ένα σωστό ρολόϊ, σε πόση ώρα πάει μπροστά 40 λεπτά;

----------


## chip

40 λεπτά είναι πολύ! ή το Module δεν έχει τον κατάλληλο κρύσταλλο
Η (ποιο πιθανό) έχει θόρυβο η τροφοδοσία σου. Αναφέρεται και στο datasheet του DS1307 οτι θόρυβος στην τροφοδοσία το κάνει να πηγαίνει γρήγορα... Βάλε πυκνωτές στην τροφοδοσία του κυκλώματος... και ιδιαίτερα κοντα στο max που είναι η αιτία παραγωγής θορύβους. βάλε  100μF κοντά στο ΜΑΧ7219, 100 στο σημείο που παίρνει το arduino και το DS1307 και επιπλέον 100nF.

----------


## irenedur

βασικα πηγαινε 20 λεπτα
ε χθες το εβγαλα 20λεπτα κ εβγαλα μπαταρια
και ειναι σαν να μην το εβγαλα ποτε νομιζω
μηπως πριν κανω αυτην την διαδικασια
να το ξηλωσω τελειως απο την Breadboard και να βγαλω την μπαταρια κ μετα να το ξαναβαλω?

λεω τωρα...μπας κ σεταριστει ετσι?

----------


## jimmy956

Δεν καταλαβαίνω τις θες να κάνεις σε αυτή τη φάση. 

Εαν θές να βάζεις στο 1307 κάποια ώρα και ημερομηνία, στείλε στο arduino το πρόγραμμα του post 130 και δώσε την εντολή Τ, η οποία σετάρει το 1307, με τις παραμέτρους που επιθυμείς. Η σύνταξη της εντολής Τ είναι στα σχόλια πριν τον κώδικα. 
Πχ αν θες να βάλεις το 1307 σε ώρα 00:00:00, πρώτη μέρα της εβδομάδας και ημ/νια 01/01/2010 τότε η εντολή είναι Τ0000001010110
Με τον τρόπο αυτό δε χρειάζεται να πειράζεις το 1307 και μπορείς να αφήσεις την μπαταρία επάνω του.
Αφού το σετάρεις, μπορείς να βάλεις άλλο πρόγραμμα που θα κάνει απεικόνιση στο max.

Επίσης, αν βρείς καιρό, κάνε αυτά που λέει ο chip με τους πυκνωτές (σου είχα γράψει και εγώ σχετικά με πυκνωτές). Αν παραγγείλεις πυκνωτές, η πλήρης περιγραφή τους είναι :
 - Για τους 100μF -> Ηλεκτρολυτικός πυκνωτής 100μF στα 16 volt (ή περισσότερα αν δε βρείς, όσο ανεβαίνεις όμως σε volt μεγαλώνει το μέγεθος!!)
 - Για τους 100nF -> Πολυέστερ ή κεραμικός πυκνωτής 100nF.

Eπιπλέον, βάλε μέσα στον κώδικα delay 1 έως 2 sec μεταξύ των διαδοχικών  διαβασμάτων του 1307 έτσι ώστε να μην επικοινωνεί συνέχεια το arduino με  το 1307.

----------


## irenedur

σεταρισα την ωρα με τον κωδικα που εχει μεσα στα παραδειγματα το ds1307 και συγκεκριμενα το seTtime εδειξε σωστα την ωρα 
στην σειριακη οθονη και μετα εκανα εμφανιση με το προγραμμα μου στα displays δουλευει με μισο λεπτο πισω...και ουτε,ισως 10δευτερα πισω
ρολοι δλδ ουτε 20 ουτε 30 ουτε 40 λεπτα μπροστα..!για την ακριβεια παει ακριβως με την ωρα του υπολογιστη..!

οποτε ολα καλα!

ουτε πυκνωτες ουτε αλλαγη των delay...
δεν εχω χρονο βασικα να κανω αλλαγες

αυτην την εβδομαδα ανεβαινω για επιβλεψη κ με το καλο την αλλη 
κανω παρουσιαση κ τελος...

οποτε ολα καλα

σας ευχαριστω για την βοηθεια σας

και ευχομαι να εγκριθει ωστε να μην σας "ξαναχρειαστω" με την καλη εννοια παντα :Rolleyes:

----------


## jimmy956

Ωραία !!

Περιμένουμε να μας πεις πως πήγε...

----------


## dade

Σου εύχομαι καλή επιτυχία

----------


## chip

καλή επιτυχία! και καλό πτυχίο!

----------


## irenedur

αργησα αλλα τρεχω αυτο το διαστημα


ευχαριστω για τις ευχες σας
ακομα δεν εχω νεο

μετα απο πολλες διορθωσεις στο γραπτο μερος κ πολλα εμαιλ πανω κατω με τον καθηγητη
την εχω δωσει για τυπωση κ ολα καλα....
ακομα δεν εχει οριστει ημερομηνια εξετασης


ΟΜΩΣ επειδη η γκαντεμια μ δεν ειναι τυχαια
ενα προβλημα αντιμετωπιζω η θα αντιμετωπισω
τελη του μηνα αλλαζει η ωρα
κ πιθανον να ειναι τον επομενο μηνα η εξεταση

το κύκλωμα δεν το εχω μαζι μου ωστε να το φτιαξω να δειχνει μια ωρα πισω....το κρατησε ο καθηγητης
λογικα οταν θα παω θα πρεπει να το μονταρω σωστα???
κ τι κανω???????????????/
ερωτω..................

καμια ιδεα???

μηπως να τρεξω το προγραμμα του παραδειγματος το ds1307--->setTime κ μετα να τρέξω το πρόγραμμα μου???
ετσι με αυτον το τροπο διορθωσα την καθυστερηση της ωρας που ειχα το 40λεπτο,αν θυμαστε
οποτε θεωρω οτι ετσι θα αλλαξω κ τον τροπο της ωρας?
τι λετε?
δενεχω για να το επιβεβαιωσω κ αμα το πω στον καθηγητη νομιζω θα με κραξει..!
οποτε κραττω το στομα μ κλειστο προς το παρον...
απλα εγω οταν σεταρα την ωρα ητανε 0000 το βραδυ ωστε να αρχιζε το ρολοι απο εκεινη την ωρα
αλλη ωρα της ημερας θα μπορω να το κανω????......

----------


## irenedur

na saw υπενθυμισω τον κωδικα μου


#include "Wire.h" //need the library
#define DS1307_I2C_ADDRESS 0x68
#include "LedControl.h" // need the library
byte second, minute, hour  ,dayOfWeek, dayOfMonth, month, year;
float t=0;
int a,b;

LedControl lc=LedControl(12,11,10,1); // lc is our object
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLKpin 13
// pin 10 is connected to LOAD pin12
// 1 as we are only using 1 MAX7219

// Convert normaldecimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10));
}

// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16));
}


// 1) Sets the date and time on the ds1307
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock
// Assumes you'repassing in validnumbers

void setDateDs1307(byte second,// 0-59
byte minute,// 0-59
byte hour, //1-23
byte dayOfWeek,// 1-7
byte dayOfMonth,// 1-28/29/30/31
byte month,// 1-12
byte year)// 1-23
{

Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0); //stop Oscillator
Wire.write(decToBcd(second));// 0 to bit 7 starts the clock
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turnson square wave
Wire.endTransmission();
}

// Gets the date and time from the ds1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)
{


// Reset the register pointer
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);


// A few of these need masks because certain bits are control bits
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f); // Need to change this if 12 hour am/pm
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());

}


void setup()
{
// the zero refers to the MAX7219 number, it is zero for 1 chip
lc.shutdown(0,false); // turn off power saving, enables display
lc.setIntensity(0, :Cool: ; // sets brightness (0~15 possible values)
lc.clearDisplay(0); // clear screen

byte second, minute, hour, dayOfWeek, dayOfMonth,month, year;
Wire.begin(); // Change these values to what you want to set your clock to.
// You probably only want to set your clock once and then remove
// the setDateDs1307 call.
second = 0;
minute = 56;
hour = 23;
dayOfWeek = 7;
dayOfMonth = 31;
month = 12;
year = 23;
// setDateDs1307(second, minute, hour,dayOfWeek, dayOfMonth, month, year);


}


void loop()
{
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth,&month, &year); 
if (hour<10)
{
lc.setDigit(0,3,0,false);
lc.setDigit(0,2,hour,false)
;
} else if (hour>=10)
{
t=hour/10;
a=int(t);
lc.setDigit(0,3,a,false);
t=hour%10;
lc.setDigit(0,2,t,false);
}
if (minute<10)
{
lc.setDigit(0,1,0,false);
lc.setDigit(0,0,minute,false);
} else if (minute>=10)
{
t=minute/10;
a=int(t);
lc.setDigit(0,1,a,false);
t=minute%10;
lc.setDigit(0,0,t,false);
}
if (second<10)
{
lc.setDigit(0,5,0,false);
lc.setDigit(0,4,second,false);
}
else if (second>=10)
{
t=second/10;
a=int(t);
lc.setDigit(0,5,a,false);
t=second%10;
lc.setDigit(0,4,t,false);
}
}

----------


## jimmy956

Κατ' αρχήν, χαίρομαι που όλα πάνε καλά...

Οταν λές οτι το κύκλωμα τα έχει ο καθηγητής και πρέπει να το ξαναμοντάρεις, τι εννοείς; Έβγαλε όλα τα καλώδια και πρέπει να το ξαναμομοντάρεις, είναι δηλαδή όλα βγαλμένα από το breadboard; Κατ' ελάχιστον, πιστεύω οτι το arduino δεν έχει τάση οπότε πρέπει να το συνδέσεις σε Η/Υ για να κάνεις την παρουσίαση. Η αλλαγή της ώρας είναι μια καλή δικαιολογία για να πεις οτι πρέπει να του ξαναπεράσεις πρόγραμμα για να πάει μια ώρα πίσω. Άλλωστε, δεν ξέρω πολλά επιτραπέζια ρολόγια που αλλάζουν μόνα τους!!

Γενικά, ο κώδικας που έγραψες στο προηγούμενο μήνυμα έχει στο setup εντολές για να βάλεις όποια ώρα θες στο 1307, οπότε, κατά την παρουσίαση, πριν στείλεις το πρόγραμμα στο arduino για να επιδείξεις τι έφτιαξες, αλλάζεις τις παραμέτρους και το στέλνεις, οπότε θα δείξει τη σωστή ώρα. Αναφέρομαι σε αυτό το τμήμα:_

byte second, minute, hour, dayOfWeek, dayOfMonth,month, year;
Wire.begin(); // Change these values to what you want to set your clock to.
// You probably only want to set your clock once and then remove
// the setDateDs1307 call.
second = 0;
minute = 56;
hour = 23;
dayOfWeek = 7;
dayOfMonth = 31;
month = 12;
year = 23;
// setDateDs1307(second, minute, hour,dayOfWeek, dayOfMonth, month, year);_

Τώρα, το setDateDs1307 είναι commented out, οπότε δεν εκτελείται, αν όμως το ενεργοποιήσεις και βάλεις στις μεταβλητές αμέσως πριν την τρέχουσα ώρα, πιστεύω οτι θα είσαι ΟΚ.

----------


## irenedur

γεια σου βρε τζιμι βοηθε........!!!!!
σε ευχαριστω για τα καλα σου λογια

οχι το εχει κρατησει ο καθηγητης για να μην το πηγαινοφερνω κ του κανω καμια ζημια,
ειναι ολα στην θεση τους αλλιως θα ειχα παθει εγκεφαλικο...!!!!!


δλδ σε εκεινο το κομματι μου προτεινεις στην ωρα να βαλω την ωρα που θα εχει εκεινη την στιγμη ας πουμε αλλαζω την τιμη
23 σε 12 αν ειναι δωδεκα το μεσημερι,ας πουμε?

σορι αλλα δεν τα πιανω αμεσως..! :Smile:

----------


## jimmy956

Ακριβώς. Πχ πάρεις το πιο κάτω κομμάτι 

_byte second, minute, hour, dayOfWeek, dayOfMonth,month, year;
Wire.begin(); // Change these values to what you want to set your clock to.
// You probably only want to set your clock once and then remove
// the setDateDs1307 call.
second = 0;
minute = 56;
hour = 23;
dayOfWeek = 7;
dayOfMonth = 31;
month = 12;
year = 23;
// setDateDs1307(second, minute, hour,dayOfWeek, dayOfMonth, month, year);
_

και το αλλάξεις σε αυτό


_byte second, minute, hour, dayOfWeek, dayOfMonth,month, year;
Wire.begin(); // Change these values to what you want to set your clock to.
// You probably only want to set your clock once and then remove
// the setDateDs1307 call.
second = 0;
minute = 10;
hour = 12;
dayOfWeek = 2;
dayOfMonth = 12;
month = 11;
year = 13;
setDateDs1307(second, minute, hour,dayOfWeek, dayOfMonth, month, year); εδώ έσβησα τα //_

τότε μόλις το στείλεις στο arduino, θα δεις ώρα 12:10:00 και η ημερομηνία θα είναι 12 Νοε 2013 και δεύτερη μέρα της εβδομάδας.

Έχει  όμως υπόψη σου, οτι αν μετά από πέντε λεπτά ξαναστείλεις το ίδιο  πρόγραμμα (πχ αν σου ζητήσουν να κάνεις μία αλλαγή στο πρόγραμμα), πάλι  θα δεις ώρα 12:10:00 (δηλαδή λάθος αφού θα έχουν περάσει πέντε λεπτά).  Αυτό οφείλεται στο ότι θα ξαναεκτελεσθεί το setDateDs1307(second,  minute, hour,dayOfWeek, dayOfMonth, month, year); με τις ίδιες παραμέτρους.

Αυτό τακτοποιείται αν:
α. Φροντίζεις κάθε φορά που στέλνεις το πρόγραμμα να αλλάζεις τις παραμέτρους στην σωστή ώρα και ημερομηνία ή
β.  Μόλις στείλεις το πρόγραμμα με τη σωστή ώρα και το ρολόι μετρά ΟΚ,  ξαναβάλεις τα // μπροστά απο το setDateDs1307(second, minute,  hour,dayOfWeek, dayOfMonth, month, year); οπότε να μην ξαναεκτελεσθεί και το 1307 απλά θα συνεχίσει να μετρά χωρίς αλλαγές.

Αν  θες βέβαια ξαναβγάζεις τα // αν θέλεις αργότερα για κάποιο λόγο να  αλλάξεις την ώρα του ρολογιού πχ αν δεν δείχνει σωστά ή αν σου πεί ο  καθηγητής.

Αντιλαμβάνομαι όμως οτι κάτι τέτοιο δεν το έχεις  ξανακάνει (δεν έχει ξανακληθεί η ρουτίνα setDateDs1307) οπότε είναι  σκόπιμο να το κάνεις πριν την παρουσίαση για να βεβαιωθείς οτι ο κώδικας  είναι σωστός.

----------


## irenedur

ευχαριστω πολυ φιλε μ

να εισαι,καλα

εν αναμονη λοιπον....ημερομηνιας εξετασης

----------


## jimmy956

Αν το θεωρήσεις σκόπιμο, για κάλυψη κάθε ενδεχομένου, μπορείς κατά τη διάρκεια της παρουσίασης να έχεις έτοιμο για χρήση και το πρόγραμμα του post 130 ( δηλ. το http://combustory.com/wiki/index.php...eal_Time_Clock κάτω από την επικεφαλίδα RTC_DS1307_Control v1.00 code), το οποίο, αν δεν κάνω λάθος, το έχεις δοκιμάσει με επιτυχία και με την εντολή Τ σετάρει το 1307 σε ότι ώρα/ημερομηνία θες.

Οπότε, αν η ρουτίνα setDateDs1307 δεν δουλέψει σωστά, τρέχεις το πρόγραμμα του post 130, δίνεις εντολή Τ με την ώρα/ημερομηνία που θές και μετά φορτώνεις το δικό σου πρόγραμμα (με // μπροστά απο το setDateDs1307).

Και πάλι, καλή επιτυχία !!!

----------


## irenedur

ευχαριστω πολυ Δημητρη

Πεμπτη 7/11 στις 1200 θα ειναι η εξεταση....
οποτε θεωρω οτι ολα καλα θα πανε
θα παω νωριτερα να σεταρω το ρολοι
ευχαριστω για την βοηθεια σου....


εχω 3 παραλλαγες για να αλλαξω την ωρα στο ρολοι
μια δικη μου κ τις 2 που μου ανεφερες εσυ,τι στο καλο
καποια θα κανει,δεδομενου οτι ολα ειναι σωστα....

ας ελπισουμε

απογευμα Πεμπτης θα σου πω


ευχαριστω κ παλι

----------


## irenedur

k αφου σας ζαλισα...δεν γινεται να μην σας πω,ακου Δημητρη,τα μαντατα.!!!!!

περασα την πτυχιακη με 10 παρακαλω...!!!
δεν ξερω πως κ τι εγω το 10 ολα τα χρονια στο Τει μια φορα το εζησα,9 ναι,10 οχι
κ ομως σε πτυχιακη 10..

Πηγα νωριτερα με σκοπο να αλλαωξ το ρολοι,δεν ηταν κανεις εκει,στο παρα πεντε εμφανιζονται
ολοι κ ρωτω τον καθηγητη να αλλαξω την ωρα...
μου απανταει πως δεν χρειαζεται αρκει που δουλευει,το αν παει λαθος δεν μας νοιαζει αρκει που δουλευει
σωστα....,ολα τα επιτραπεζια θελουν
χειροκινητη αλλαγη αλλωστε,δεν υπαρχει λογος,μου απανταει κ μου φευγει ενα απιστευτο βαρος

βεβαια αναρωτηθηκα εκεινη την στιγμη πως ειναι δυνατον να παρουσιαζω κατι που δειχνει λαθος ωρα...ααχχαχχ..
βεβαια αν σκεφτουμε οτι το αρχισα απο το μηδεν εχει αυτο σημασια...

τεσπα ερχονται με ρωτουσαν ...μπλα μπλα μπλα...και σε 15 λεπτα τελειωσε η εξεταση

ενημερωνομαι οτι με εμαιλ θα μου στειλει τον βαθμο
και ναι....βλεπω ενα ωραιο 10αρι οταν ηρθα σπιτι...!!!!!

κ επειδη δεν μπορουσα να εχω φτιαξει κατι και να μην μπορω να αλλαξω την ωρα
σαν γνησια πληροφορικαριος επρεπε να τεσταρω το προγραμμα μου αν δουλευει
και ναι κ σε αυτο
σεταρω την ωρα με το SetTime  απο το παραδειγμα του DS1307 στο περιβαλλον Arduino
και μετα τρεχω απλα το προγραμμα μου 
αμεσως το ρολογακι μ εδειξε σωστη ωρα....................!!!!
οποτε ητανε κατι που μπορουσα να το κανω την στιγμη που περιμενα αφοτου ανοιξε η αιθουσα 
κ ας μου ειπε ο καθηγητης οχι,αλλα ειχα κ την εννοια μην κανω καμια πατατα κ την απατησω!

τελικα ολα καλα...!!!!

απιστευτο μου φαινεται..!!!!

σας ευχαριστω ολους που ασχοληθηκατε και ανταποκριθηκατε στα ερωτηματα μου
και κυριως εσενα Δημητρη,που σπαταλησες πολυ χρονο για μια φτωχη πλην τιμια
πληροφορικαριο που δεν ειχε ιδεα απο ηλεκτρονικα.....ευχαριστω πολυ πολυ...!!!!


θα βαλω το ρολογακι μ σε διαφανο κουτακι,αυτοσχεδιο και θα το βαλω να δουλεψει με μπαταρια
ωστε να το βαλω στο γραφειο μ...!!!!!

να ειστε καλα,ευχαριστω πολυ

ΥΓ θα σας επισκεπτομαι..!

----------


## leosedf

Συγχαρητήρια σε όλους σας εδώ μέσα.



ΥΓ: Να μείνεις μόνιμα εδώ, το ταξίδι σου μόλις άρχισε.

----------


## chip

συγχαρητηρια!

----------


## irenedur

Ευχαριστω πολυ,να ειστε καλα..!

Κωνσταντινε,θα μεινω να σαι σιγουρος!

----------


## jimmy956

Ειρήνη, εύχομαι συγχαρητήρια για την επιτυχία σου διότι πιστεύω οτι αφενός προσπάθησες πολύ για αυτή την εργασία και αφετέρου μπήκες με το απαθί σου στο χώρο των ηλεκτρονικών. Επίσης, ευχαριστώ για τα καλά σου λόγια και είμαι σίγουρος οτι θα ανταποδώσεις τη βοήθεια σε κάποιον άλλο που θα τη χρειαστεί.

----------


## irenedur

> Ειρήνη, εύχομαι συγχαρητήρια για την επιτυχία σου διότι πιστεύω οτι αφενός προσπάθησες πολύ για αυτή την εργασία και αφετέρου μπήκες με το απαθί σου στο χώρο των ηλεκτρονικών. Επίσης, ευχαριστώ για τα καλά σου λόγια και είμαι σίγουρος οτι θα ανταποδώσεις τη βοήθεια σε κάποιον άλλο που θα τη χρειαστεί.




Εγω σε ευχαριστω για τα καλα σου λογια κ για την βοηθεια σου..!!!
Ειλικρινα αν δεν με ειχες βοηθησει τοσο,πιθανον να ειχα παιδευτει αρκετα.
Σιγουρα θα αναποδωσω με την πρωτη ευκαιρια.
Πραγματικα η βοηθεια σου σε μενα ητανε οροσημο για την πτυχιακη μου.

Ευχαριστω Δημητρη.
Σας ευχαριστω ολους.

----------


## irenedur

Και ναι λοιπον,προχθες πηρα το πτυχιο μου!

Σας ευχαριστω πολυ για την οποια βοηθεια σας..!

Να ειστε καλα..!!!!

----------

