Αγαπητοί μας φίλοι,

Καλώς ήλθατε στην ιστοσελίδα μας. Ελπίζουμε η παραμονή σας κοντά μας να είναι για σας εποικοδομητική εμπειρία.

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

Σας ευχαριστούμε για το ενδιαφέρον σας και σας ευχόμαστε καλή συνέχεια.

Εγγραφείτε στο φόρουμ, είναι εύκολο και γρήγορο

Αγαπητοί μας φίλοι,

Καλώς ήλθατε στην ιστοσελίδα μας. Ελπίζουμε η παραμονή σας κοντά μας να είναι για σας εποικοδομητική εμπειρία.

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

Σας ευχαριστούμε για το ενδιαφέρον σας και σας ευχόμαστε καλή συνέχεια.

Θέλετε να αντιδράσετε στο μήνυμα; Φτιάξτε έναν λογαριασμό και συνδεθείτε για να συνεχίσετε.
Καλως ηρθατε στην κοινοτητα μας,για οποιαδηποτε απορια στειλετε e-mail στο info@batteryworld.gr

+3
Hary Dee
dimbot
Σταθης
7 απαντήσεις

    Robot Deagostini

    avatar
    Σταθης


    Αριθμός μηνυμάτων : 4
    Ημερομηνία εγγραφής : 04/01/2010
    Ηλικία : 33
    Τόπος : Kατερινη

    Robot Deagostini Empty Robot Deagostini

    Δημοσίευση  Σταθης Τρι Ιαν 05, 2010 12:08 am

    Γεια σε ολους σας

    Ειμαι νεος εδω μεσα και οπως βλεπω και το φορουμ ειναι νεο..Καλως σας βρηκα λοιπον

    Ονομαζομαι Σταθης και εχω καποια επαφη με το αντικειμενο της ρομποτικης...

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

    Ας μην πολυλογω..δοκιμασα να το προγραμματισω με ενα προγραμμα ενονοματι visual p-basic αλλα δεν εβγαλα ακρη..Τελικα το εχω παρατησει το θεμα εδω και 3 χρονια...καταφερα μοναχα σε μια στιγμη να το κανω να βρισκει τα εμποδια και να τα αποφευγει μεσω υπερηθρων..Γνωριζει κανεις πως ισως να χρησιμοποιησω το προγραμμα?

    Αν οχι θα βρω ισως καποιο ατομο που να το παρει το ρομποτακι και να ασχοληθει σοβαρα μαζι του Smile
    dimbot
    dimbot
    Master


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Τρι Ιαν 05, 2010 12:32 pm

    Καλώς ήρθες στην παρέα μας Στάθη! Cool

    Μην το εγκαταλείψεις το ρομπότ, επειδή όλοι μας πάνω κάτω από αυτό ξεκινήσαμε με τη ρομποτική, μπορούμε να σου πούμε ακριβώς τι να κάνεις.

    Κατ'αρχήν όλα τα προγράμματα του Dea είναι σε γλώσσα PBasic. Δηλαδή η PBasic δεν είναι ένα συγκεκριμένο πρόγραμμα για κάποια συγκεκριμένη λειτουργία αλλά η γλώσσα προγραμματισμού, στην οποία μπορούμε να διαμορφώσουμε συγκεκριμένα προγράμματα για τις λειτουργίες που επιθυμούμε να εκτελεί το ρομπότ. Θα σου γράψω μια στιγμή μερικά χρήσιμα προγράμματα σε γλώσσα PBasic για διάφορες λειτουργίες του ρομπότ.

    Και κάτι άλλο. Έχεις πάρει τα τεύχη με τη ρομποτική "δαγκάνα" του ρομπότ; Άμα είναι να σου δώσω προγράμματα και γι'αυτή τη λειτουργία. Cool

    Ελπίζω να βοήθησα! Wink
    dimbot
    dimbot
    Master


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Τρι Ιαν 05, 2010 12:38 pm

    Πλοήγηση του ρομπότ με τη χρήση αισθητήρων αφής (κίνηση με DC μοτέρ):

    Κώδικας:
    ' {$STAMP BS2}
    ' {$PBASIC 2.5}


    '----- Δηλώσεις -------

    pulse_count VAR Byte     
    state VAR Nib       
    old_state VAR Nib     
    counter VAR Nib       

    M1a    CON  14 
    M1b    CON  15
    M2a    CON  5
    M2b    CON  3



    PBin    VAR  IN2 
    Pwr    VAR  Bit 


    '----- Ενεργοποίηση -----

    old_state = %0010 


    '------ Εκκίνηση ---------

    start:

    ChkPwr:  IF PBin = 1 THEN Cont
        Pwr = Pwr ^ 1
    AspettaPB:  IF PBin = 0 THEN AspettaPB
    Cont:    IF Pwr = 0 THEN start

    '----- Κύρια Ρουτίνα -------

    main:

    check_whiskers:
      state.BIT0 = IN6         
      state.BIT1 = IN4
      IF old_state <> state THEN no_reset 

      counter = 0

    no_reset:
      IF old_state ^ state <> %0011 THEN continue 
     
      counter = counter +1
      old_state = state         
      IF counter = 4 THEN u_turn       
                     

    continue:
      BRANCH state, [u_turn, right_turn, left_turn, forward]

    '----- Ρουτίνες Πλοήγησης -------

    forward:
      LOW  M1a:  HIGH  M1b
      PAUSE 50
      HIGH  M2a:  LOW  M2b
      PAUSE 30
      GOTO main



    left_turn:
      GOSUB backward
      HIGH M1a: LOW  M1b:
      PAUSE 50
      HIGH M2a: LOW  M2b:
      PAUSE 100
      GOTO main


    right_turn:
      GOSUB backward
      LOW M1a: HIGH  M1b:
      PAUSE 50
      LOW M2a: HIGH  M2b:
      PAUSE 100
      GOTO main

    u_turn:
      GOSUB backward
      HIGH M1a: LOW  M1b:
      PAUSE 50
      HIGH M2a: LOW  M2b:
      PAUSE 2000
      GOTO main


    '----- Υπορουτίνα Πλοήγησης -----

    backward:
      HIGH  M1a:  LOW  M1b
      PAUSE 50
      LOW  M2a:  HIGH  M2b
      PAUSE 100
      RETURN
    dimbot
    dimbot
    Master


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Τρι Ιαν 05, 2010 12:47 pm

    Χρήση του αισθητήρα Line Follower (κίνηση με σερβοκινητήρες):

    Κώδικας:
    '{$STAMP BS2}

    '*************************************************************************
    '
    'P0     Δεξιός δέκτης υπερύθρων
    'P1     Δεξιός πομπός υπερύθρων
    'P2     Δεξιός αισθητήρας 2 (Δεν χορηγείται)
    'P3     Δεξιός αισθητήρας 1
    'P4  Κεντρικός αισθητήρας
    'P5  Αριστερός αισθητήρας 2 (Δεν χορηγείται)
    'P6     Αριστερός αισθητήρας 1
    'P7  --- ελεύθερος
    'P8     Αριστερός δέκτης υπερύθρων για τηλεχειρισμό
    'P9     --- ελεύθερος
    'P10     Εντοπισμός πριν από τον τομέα LM 311
    'P11    --- ελεύθερος
    'P12     Αριστερός σερβοκινητήρας (X4)
    'P13     Δεξιός σερβοκινητήρας (X3)
    'P14     --- ελεύθερος
    'P15     --- ελεύθερος
    '
    '
    '*************************************************************************

    '---------- Ορισμός σταθερών ---------------------

    LED_ON       con       0       
    LED_OFF       con       1

    LINEA_BIANCA    con      0       
    LINEA_NERA       con       1       

    MODALITA       con       LINEA_NERA   

    VERO         con       1
    FALSO         con      0

    Sx1         con      6
    LINE         con      4
    Dx1         con      3

    SERVO_DX      con      13      
    SERVO_SX      con      12

    ANTIORARIO_DX   con      1000      
    ANTIORARIO_SX   con      1000      
    ORARIO_DX      con      500
    ORARIO_SX      con       500

    SERVO_STOP      con      750
    VELOCITA100      con      100

    '---------- Ορισμός μεταβλητών ---------------------

    inCorsa      var      bit

    ledPos       var       nib       
    cont         var      nib
    azione      var      nib

    lfBits       var       nib       

    ' --------------- Ενεργοποίηση ------------------------------

    pause 5000

    outl = %01011000
    dirl = %01011000          
    azione = 1
    inCorsa = FALSO

    ' ---------------- Κύριο Πρόγραμμα -------------------------

    Main:

       gosub Lettura_Sensori                   
       
       if (lfBits <> %0010) then VerificaArrivo
       inCorsa = VERO

    VerificaArrivo:
       if (lfBits <> %0111) then DecidiAzione
       if (inCorsa = FALSO) then Avanti
       goto Arresto

    DecidiAzione:
       lookdown lfBits, [%0001, %0010, %0100], azione
       branch azione, [GiraDestra, Avanti, GiraSinistra]


    GiraDestra:
       pulsout SERVO_DX, SERVO_STOP
       pulsout SERVO_SX, SERVO_STOP + VELOCITA100
    goto Main


    Avanti:
       pulsout SERVO_DX, ORARIO_DX + VELOCITA100
       pulsout SERVO_SX, ANTIORARIO_SX - VELOCITA100
    goto Main

    GiraSinistra:
       pulsout SERVO_DX, SERVO_STOP - VELOCITA100
       pulsout SERVO_SX, SERVO_STOP
    goto Main

    Arresto:
    end

    ' --------------------- Υπορουτίνα --------------------------------

    Lettura_Sensori:
       lfBits = 0                         
       for cont = 0 TO 2
          lookup cont, [Dx1, LINE, Sx1], ledPos
          outl.lowbit(ledPos) = LED_ON             
          pause 1                      
          lfBits.lowbit(cont) = in9 ^ MODALITA       
          outl.lowbit(ledPos) = LED_OFF          
       next
    return
    dimbot
    dimbot
    Master


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Τρι Ιαν 05, 2010 12:53 pm

    Πρόγραμμα για τον έλεγχο του ρομπότ με το τηλεχειριστήριο (κίνηση με σερβοκινητήρες):

    Κώδικας:
    '{$STAMP BS2}

    '*************************************************************************
    '
    'P0  Δεξιός δέκτης υπερύθρων RIGHT ( δεν χρησιμοποιείται )
    'P1  Ελεύθερη
    'P2  Πλήκτρο εκκίνησης (ON) σε πλακέτα DEA BS2
    'P3  Ελεύθερη
    'P4  Δεξιό Μουστάκι (X6)
    'P5  Ελεύθερη
    'P6  Αριστερό Μουστάκι (X5)
    'P7  Ελεύθερη
    'P8  Αριστερός δέκτης υπερύθρων LEFT
    'P9  Ελεύθερη
    'P10  Ελεύθερη
    'P11  Ελεύθερη
    'P12  Αριστερός σερβοκινητήρας
    'P13  Δεξιός σερβοκινητήρας
    'P14  Ελεύθερη
    'P15  Ελεύθερη
    '
    '-----------------------------Ορισμοί--------------------------------

                  '  Σταθερές
                  '  Είσοδοι
    Servo_Sx    CON    12    '    Αριστερός σερβοκινητήρας I/O ακίδα P15.
    Servo_Dx    CON    13    '    Δεξιός σερβοκινητήρας I/O ακίδα P1.

                  '  Είσοδοι
    l_IR_det_pin  CON    8    '    Αισθητήρας IR Left

                  '  Χρόνοι
    Centro    CON    750    '    Κέντρο (ανενεργός σερβοκινητήρας)
    Reg_fine_Sx  CON    0    '  Ρύθμιση - σερβοκινητήρας SX
    Reg_fine_Dx  CON    0    '    Ρύθμιση - σερβοκινητήρας DX
    neg_edge    CON    0    '    Διαμόρφωση "pulsin".
                  '
                    'Μεταβλητές
                  '
    data_remote    VAR    Byte    '    Κωδικοί τηλεχειρισμού
    velocita      VAR    Word    '    Ταχύτητα
    rotazione    VAR    Word        '    Περιστροφή
    Calc_impulso_Sx  VAR    Word    '    Μεταβλητή υπολογισμού σερβοκινητήρα SX
    Calc_impulso_Dx  VAR    Word    '    Μεταβλητή τηλεχειρισμού σερβοκινητήρα DX
    start_remote  VAR    Word    '  Παλμός τηλεχειρισμού Start
    input_remote_0  VAR    Word    '  Κωδικοί τηλεχειρισμού
    input_remote_1  VAR    Word    '  "
    input_remote_2  VAR    Word    '  "
    input_remote_3  VAR    Word    '  "
    input_remote_4  VAR    Word    '  "

    loop      VAR    Word

    '---------------------------------------------------------------------------------
    inizializzazione:          ' Boot

      OUTPUT Servo_Sx        ' Ορισμός εξόδων.
      OUTPUT Servo_Dx

    '---------------------------------------------------------------------------------
    Start:

      'debug ? data_remote    ' ενεργοποίηση μόνο για debug
      'debug ? start_remote  ' ενεργοποίηση  μόνο για debug
      GOSUB check_remote
      GOSUB Navigazione

    IF data_remote=0 THEN servo_pulse
    IF data_remote=1 THEN servo_pulse
    IF data_remote=2 THEN servo_pulse
    IF data_remote=3 THEN servo_pulse
    IF data_remote=4 THEN servo_pulse
    IF data_remote=5 THEN servo_pulse



    GOTO Start            ' loop

    '---------------------------------------------------------------------------------
    check_remote:



      PULSIN l_IR_det_pin,neg_edge,start_remote
      PULSIN l_IR_det_pin,neg_edge,input_remote_0
      PULSIN l_IR_det_pin,neg_edge,input_remote_1
      PULSIN l_IR_det_pin,neg_edge,input_remote_2
      PULSIN l_IR_det_pin,neg_edge,input_remote_3
      PULSIN l_IR_det_pin,neg_edge,input_remote_4


      IF start_remote < 1000 THEN check_remote

      data_remote.bit0=input_remote_0.bit9
      data_remote.bit1=input_remote_1.bit9
      data_remote.bit2=input_remote_2.bit9
      data_remote.bit3=input_remote_3.bit9
      data_remote.bit4=input_remote_4.bit9



    return

    '---------------------------------------------------------------------------------
    Navigazione:    ' Set "ταχύτητα" και "περιστροφή"

      branch data_remote,[a,b,c,d,e,f]

          'A=εμπρός δεξιά, B=εμπρός, C=εμπρός αριστερά



      a:  velocita = 0:    rotazione = 200:  goto exit_Navigazione
      b:  velocita = 350:  rotazione = 0:    goto exit_Navigazione
      c:  velocita = 0:    rotazione = -200:  goto exit_Navigazione


      'D=πίσω δεξιά, E=πίσω, F=πίσω αριστερά

      d:  velocita = 0:    rotazione = -100:  goto exit_Navigazione
      e:  velocita = -350:  rotazione = 0:    goto exit_Navigazione
      f:  velocita = 0:    rotazione = 100:  goto exit_Navigazione

      exit_Navigazione:



    return

    '---------------------------------------------------------------------------------
    servo_pulse:  ' Υπολογισμοί και εκπομπή παλμών.


      'Συνολικοί υπολογισμοί στους σερβοκινητήρες


    FOR loop = 1 TO 10
      Calc_impulso_Sx = velocita + rotazione + Centro + Reg_fine_Sx
      Calc_impulso_Dx = - velocita + rotazione + Centro + Reg_fine_Dx


      'Εκπομπή παλμών που υπολόγισαν οι σερβοκινητήρες

        pulsout Servo_Sx,Calc_impulso_Sx
        pulsout Servo_Dx,Calc_impulso_Dx
        pause 3

    gosub baffi

    next

    go:
    return

    '---------------------------------------------------------------------------------
    baffi:    ' υπορουτίνα εντοπισμού αντικειμένων με τα μουστάκια.

    IF IN6 =0 AND IN4 =0 THEN gira' Πίσω εάν και οι δύο διακόπτες είναι κλειστοί.
    IF IN4 =0 THEN destra_baffi  ' Δεξιά εάν ο αριστερός διακόπτης είναι κλειστός.
    IF IN6 =0 THEN sinistra_baffi  ' Αριστερά εάν ο δεξιός διακόπτης είναι κλειστός.
    RETURN





    '---------------------- Πλοήγηση Μουστακιών ------------------------


    destra_baffi:
          gosub indietro_baffi
          pause 20
          for loop = 1 to 100
             pulsout SERVO_DX, 500
             pulsout SERVO_SX, 500
             pause 20
          next

          return


    gira:      
          for loop = 1 to 100
             pulsout SERVO_DX, 500
             pulsout SERVO_SX, 500
             pause 20
          next

          return


    sinistra_baffi:
          gosub indietro_baffi
          pause 20
          for loop = 1 to 100
             pulsout SERVO_DX, 1000
             pulsout SERVO_SX, 1000
             pause 20
          next

          return


    indietro_baffi:
          for loop = 1 to 100
             pulsout SERVO_DX, 1000
             pulsout SERVO_SX, 500
             pause 20
          next

    return

    goto Start
    avatar
    Σταθης


    Αριθμός μηνυμάτων : 4
    Ημερομηνία εγγραφής : 04/01/2010
    Ηλικία : 33
    Τόπος : Kατερινη

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  Σταθης Τρι Ιαν 05, 2010 2:53 pm

    Να σε καλα φιλαρακι!!!

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

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

    Πραγματικα σε ευχαριστω παρα πολυ cheers cheers cheers cheers

    Και για τις ετοιμες λειτουργιες επισης cheers cheers cheers

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

    Ξεχασα να προσθεσω πως ναι εχω την ρομποτικη δαγκανα τοποθετημενη επανω στο ρομποτακι.. οποτε θα την προγραμματισουμε και αυτην...τι καλα Very Happy Very Happy
    dimbot
    dimbot
    Master


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Τρι Ιαν 05, 2010 3:14 pm

    Να είσαι καλά φίλε μου!

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

    Δυστυχώς θα σε απογοητεύσω αλλά έχουν εξαντληθεί όλα τα τεύχη της Dea στις αποθήκες της. Και εγώ είχα πάρει για να ζητήσω ένα τεύχος που μου έλειπε αλλά μου είπαν ότι... έχει καταργηθεί, επειδή... εξαντλήθηκαν τα αποθέματα (ομολογώ ότι ακόμα και τώρα δεν βγάζω νόημα στη φράση!!!). Έλεος με τη Dea!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Σου ετοιμάζω και το πρόγραμμα για τη δαγκάνα.

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

    Αναμένουμε νέα σου!!! Cool
    dimbot
    dimbot
    Master


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Τρι Ιαν 05, 2010 3:26 pm

    Πριν αρχίσεις τον προγραμματισμό, απαιτούνται ορισμένες συνδέσεις στην breadboard. Συγκεκριμένα τοποθετείς έναν πυκνωτή 100nF συνδεδεμένο με τη μία άκρη του σε Vdd. Την άλλη άκρη του τη συνδέεις σε μια αντίσταση 10Κ, η οποία με τη σειρά της συνδέεται στο Vss. Στη συνέχεια συνδέουμε πυκνωτή και αντίσταση 1ΟΚ, διαμέσου μιας αντίστασης των 220, στο I/O P11.

    Το πρόγραμμα για τον έλεγχο της ρομποτικής πένσας:

    Κώδικας:
    '{$STAMP BS2}

    '***************************************************************************
    'P0  Δεξιός δέκτης υπερύθρων
    'P1  Δεξιός πομπός υπερύθρων
    'P2  Πλήκτρο εκκίνησης (ON) στην πλακέτα DEA BS2
    'P3  Θύρα κινητήρα 2 (M2A) ακίδες εισόδου 10 και 15 του U2 Dc Motor ( X3 )
    'P4  Δεξιό μουστάκι (X6)
    'P5  Θύρα κινητήρα 2 (M2B) ακίδες εισόδου 2 και 7 του U2 Dc Motor ( X3 )
    'P6  Αριστερό μουστάκι (X5)
    'P7  Αριστερός πομπός υπερύθρων
    'P8  Αριστερός δέκτης υπερύθρων
    'P9  Ελεύθερος
    'P10  Ελεύθερος
    'P11  Κύκλωμα RC για τέλος διαδρομής
    'P12  Δεξιός σερβοκινητήρας (X3)
    'P13  Αριστερός σερβοκινητήρας (X4)
    'P14  Θύρα κινητήρα 1 (M1A) ακίδες εισόδου 2 και 7 του U1 Dc Motor ( X2 )
    'P15  Θύρα κινητήρα 1 (M1B) ακίδες εισόδου 10 και 15 του U1 Dc Motor ( X2 )
    '
    '
    '*************************************************************************
    ' Υπόμνημα κινητήρα
    ' M1= Δεξιός κινητήρας από τη Σειριακή πλευρά, σε ακροδέκτη X2 (πλακέτα DC Motor)
    ' M2= Αριστερός κινητήρας από τη Ρυθμιστική πλευρά, σε ακροδέκτη X3 (πλακέτα DC Motor)
    '
    ' Πίνακας κινήσεων
    '
    ' Δεξιός κινητήρας M1, σε πλακέτα X2  DC Motor (οπίσθια όψη)
    '    P15    P14
    ' Low  M1A  Low  M1B = Κινητήρας σταθερός
    ' High M1A  High  M1B = Κινητήρας σταθερός
    ' Low  M1A  high  M1B = Δεξιόστροφος κινητήρας
    ' High M1A  Low  M1B = Αριστερόστροφος κινητήρας
    '
    ' Αριστερός κινητήρας M2, σε πλακέτα X3  DC Motor (οπίσθια όψη)
    '    P3    P5
    ' Low  M2B  Low  M2A = Κινητήρας σταθερός
    ' High M2B  High  M2A = Κινητήρας σταθερός
    ' Low  M2B  high  M2A = Δεξιόστροφος κινητήρας
    ' High M2B  Low  M2A = Αριστερόστροφος κινητήρας
    '
    '************************************************************************
    '
    'Πίνακας Κωδικών Παλμών Τηλεχειρισμού SONY Συμβατό
    '
    '     Κωδικός 0 Εμπρός αριστερά
    '     Κωδικός 1 Εμπρός
    '     Κωδικός 2 Εμπρός δεξιά
    '     Κωδικός 3 Πίσω αριστερά
    '     Κωδικός 4 Πίσω
    '     Κωδικός 5 Πίσω δεξιά
    '     Κωδικός 6 Άνοιγμα ρύγχους λαβίδας
    '     Κωδικός 7 Ανύψωση ανυψωτικού φορείου
    '     Κωδικός 8 Κλείσιμο ρύγχους λαβίδας
    '     Κωδικός 9 Χαμήλωμα ανυψωτικού φορείου
    '


    '--------------------- Ορισμός Μεταβλητών ---------------------

    BaffoDx      var      in4      ' Ψευδώνυμο για τη θύρα του δεξιού μουστακιού
    BaffoSx      var      in6      ' Ψευδώνυμο για τη θύρα του αριστερού μουστακιού

    FC_aperto      var      bit      ' Μεταβλητή κατάστασης για τέλος διαδρομής ανοίγματος λαβίδας
    FC_chiuso      var      bit      ' Μεταβλητή κατάστασης για τέλος διαδρομής κλεισίματος λαβίδας
    FC_alzato      var      bit      ' Μεταβλητή κατάστασης για τέλος διαδρομής ανύψωσης φορείου
    FC_abbassato   var      bit      ' Μεταβλητή κατάστασης για τέλος διαδρομής χαμηλώματος φορείου

    contatore      var      nib      ' Βοηθητική μεταβλητή

    codicePulsante   var      byte      ' Περιέχει την τιμή του κωδικού του πιεσμένου πλήκτρου
    loop         var      byte      ' Μεταβλητή-μετρητής για τους σερβοκινητήρες

    movDx         var      word      ' Μεταβλητές για την κίνηση των σερβοκινητήρων
    movSx         var      word

    impulso      var      word      ' Μεταβλητές για την αποκωδικοποιήση του σήματος IR του τηλεχειρισμού
    inputIR0      var      word          
    inputIR1      var      word         
    inputIR2      var      word         
    inputIR3      var      word         
    inputIR4      var      word         

    misuraRC      var      word      ' Μεταβλητή για τη μέτρηση της σταθεράς χρόνου RC
    sogliaBecchi   var      word      ' Μεταβλητή ορίου τέλους διαδρομής για τα ρύγχη
    sogliaCarrello   var      word      ' Μεταβλητή ορίου τέλους διαδρομής για το φορείο



    '---------------------- Ορισμός Σταθερών --------------------


    M1a         con      14      ' Σταθερές σχετικές με τις θύρες των κινητήρων DC
    M1b         con      15      ' M1 = Κινητήρας DC στη θύρα X2
    M2a         con      3      ' M2 = Κινητήρας DC στη θύρα X3
    M2b         con      5
                         
    IR_SX         con      8      ' Θύρα IR για την ανίχνευση σήματος από το τηλεχειριστήριο
    ALTO         con      1      ' Υψηλή λογική τιμή
    BASSO         con      0      ' Χαμηλή λογική τιμή
    PORTA_RC      con      11      ' Θύρα στην οποία συνδέεται το κύκλωμα RC για τέλος διαδρομής

    SERVO_DX      con      13      ' Θύρες σχετικές με τους σερβοκινητήρες
    SERVO_SX      con      12

    ANTIORARIO_DX   con      1000      ' Τιμές για την κίνηση των τροχών. Αντικατάστησε αυτές τις τιμές
    ANTIORARIO_SX   con      1000      ' με τις τυπικές τιμές για τους σερβοκινητήρες σου
    ORARIO_DX      con      500
    ORARIO_SX      con       500


    '------------------------ Κύριο Πρόγραμμα ---------------------

    low   M1a:   low   M1b
    low   M2a:   low   M2b            ' Αρχικά όλοι οι κινητήρες είναι σταθεροί

    low SERVO_DX:   low SERVO_SX

    goto valori_Fine_corsa            ' Μεταβαίνει στη ρουτίνα για να ελέγξεις τις τιμές
                               ' αναφοράς του RC για τα "τέλος διαδρομής"



    main:   
       
         gosub decodifica            ' Μεταβαίνει στην υπορουτίνα αποκωδικοποίησης του σήματος

       branch codicePulsante, [AvantiSx, Avanti, AvantiDx, IndietroSx, Indietro, IndietroDx, Apri, Alza, Chiudi, Abbassa]

    goto main

    '-------------- Ρουτίνα πλοήγησης με σερβοκινητήρες ---------------------

    AvantiSx:
       movDx = ANTIORARIO_DX   : movSx = ANTIORARIO_SX  : goto esegui

    Avanti:
       movDx = ORARIO_DX    : movSx = ANTIORARIO_SX  : goto esegui

    AvantiDx:
       movDx = ORARIO_DX    : movSx = ORARIO_SX      : goto esegui
       
    IndietroSx:
       movDx = ORARIO_DX      : movSx = ORARIO_SX      : goto esegui

    Indietro:
       movDx = ANTIORARIO_DX :     movSx = ORARIO_SX      : goto esegui

    IndietroDx:
       movDx = ANTIORARIO_DX :     movSx = ANTIORARIO_SX  : goto esegui
       
    esegui:
       for contatore = 1 to 10
          pulsout SERVO_DX, movDx                  
          pulsout SERVO_SX, movSx
          pause 3
       next
       gosub Baffi
    goto main



    '--------------- Ρουτίνες κίνησης λαβίδας ----------------

    '***********************************************************************************
    '* Ρουτίνες διαχείρισης των κινήσεων της λαβίδας. Και οι τέσσερις ρουτίνες έχουν
    '* την ίδια δομή. Μπορείς να ενεργοποιήσεις τις οδηγίες του debug, για να ελέγχεις τις
    '* οριακές τιμές και τις μετρήσεις που έχουν γίνει στη διάρκεια των κινήσεων.
    '***********************************************************************************

    Alza:
       FC_abbassato = 0                  ' ξεμπλοκάρει το τέλος διαδρομής της αντίθετης κατεύθυνσης
       if FC_Alzato = 1 then main            ' εάν το τέλος διαδρομής είναι ενεργό, επιστρέφει στο main
       low M2a:    high  M2b               ' ενεργοποιεί τους κινητήρες
       gosub RCT                     ' μετρά την τρέχουσα τιμή του RC
    'debug "ανύψωση ", ? misuraRC
       if misuraRC < sogliaCarrello-2 then F_Up      ' Συγκρίνει τη μέτρηση που έχει γίνει με το όριο, πιθανώς ενεργοποιεί
                                      ' το τέλος διαδρομής
       pulsin IR_SX, BASSO, impulso            ' Ακούει για να δει εάν το πλήκτρο είναι ακόμα πιεσμένο
       if impulso >200 then Alza            ' Εάν το πλήκτρο είναι πιεσμένο, συνεχίζει την κίνηση.
    goto arresto


    Abbassa:
       FC_alzato = 0
       if FC_abbassato = 1 then main
       high    M2a:    low  M2b:
       gosub RCT
    'debug "χαμήλωμα ", ? misuraRC
       if misuraRC < sogliaCarrello-2 then F_Down

       pulsin IR_SX, BASSO, impulso
       if impulso >200 then Abbassa
    goto arresto


    Chiudi:
       FC_aperto = 0
       if FC_chiuso = 1 then main
       low    M1a:    high  M1b:
       gosub RCT
    'debug "κλείσιμο ", ? misuraRC
       if misuraRC < sogliaBecchi-2 then F_Closed

       pulsin IR_SX, BASSO, impulso
       if impulso >200 then Chiudi
    goto arresto


    Apri:
       FC_chiuso = 0
       if FC_aperto = 1 then main
       high    M1a:    low  M1b:
       gosub RCT
    'debug "άνοιγμα ", ? misuraRC
       if misuraRC < sogliaBecchi-3 then F_Open

       pulsin IR_SX, BASSO, impulso
       if impulso >200 then Apri
    goto arresto


    Arresto:   
       low   M1a:   low   M1b               ' Σβήνει και τους δύο κινητήρες
       low   M2a:   low   M2b
       pause 10
    'debug "παύση",cr
    goto main


    '-------------- Διαχείριση τέλους διαδρομής --------------------

    '*****************************************************************************************
    '* Ρουτίνα διαχείρισης των μεταβλητών κατάστασης του τέλους διαδρομής. Όταν επιτυγχάνεται
    '* η θέση τέλους διαδρομής, το σχετικό τέλος διαδρομής πιστοποιείται και ρυθμίζεται
    '* στην τιμή 1. Στη συνέχεια, μπορεί να ξεμπλοκάρει μόνο εκτελώντας την αντίθετη κίνηση.
    '* (Βλέπε ρουτίνα διαχείρισης κινήσεων λαβίδας)
    '*****************************************************************************************


    F_Up: 
       FC_alzato =1
    'debug "ανυψωμένο!",CR
       goto arresto

    F_Down: 
       FC_abbassato =1
    'debug "χαμηλωμένο!",CR
       goto arresto

    F_Open: 
       FC_aperto=1
    'debug "ανοιχτό!",CR
       goto arresto

    F_Closed: 
       FC_chiuso=1
    'debug "κλειστό!",CR
       goto arresto


    '**************************************************************************************
    '* Αυτή η Ρουτίνα εκτελείται μόνο μία φορά κατά την εκκίνηση του προγράμματος. Επιλέγει
    '* την τιμή του RC του κυκλώματος στη θύρα P11 και τη θέτει ως όριο. Αυτά τα όρια
    '* χρησιμοποιούνται στη συνέχεια για τη σύγκριση με τις μετρήσεις RC που έχουν γίνει
    '* στη διάρκεια της κίνησης της λαβίδας.
    '* Οι δυο κινητήρες τίθενται σε κίνηση για ελάχιστο χρονικό διάστημα στη διάρκεια του
    '* οποίου ελέγχονται οι τιμές του RC.
    '*
    '* ΣΗΜΑΝΤΙΚΟ!!!!!!!!!!!!!
    '* Όταν ξεκινά το πρόγραμμα η λαβίδα πρέπει να βρίσκεται στις ενδιάμεσες θέσεις, δεν πρέπει
    '* να βρίσκεται ήδη στις θέσεις τέλους διαδρομής, διαφορετικά οι μετρήσεις που έχουν γίνει
    '* από τη ρουτίνα παραποιούνται και δεν επιτρέπουν τη σωστή διαχείριση του τέλους διαδρομής
    '**************************************************************************************

    valori_Fine_corsa :


    ' Βρίσκει την οριακή τιμή για το φορείο
       low M2a:    high  M2b               ' Προκαλεί την ανύψωση του ανυψωτικού φορείου
       gosub RCT                     ' Μεταβαίνει στην υπορουτίνα μέτρησης RC
       sogliaCarrello = misuraRC            ' Θέτει τη μέτρηση που βρήκε ως όριο
    'debug ? sogliaCarrello
       low M2a:    low  M2b               ' Σταματά τον κινητήρα

    ' Βρίσκει την οριακή τιμή για τη λαβίδα
       low M1a:    high  M1b               ' Κλείνει το ρύγχος της λαβίδας
        gosub RCT                     ' Μεταβαίνει στην υπορουτίνα μέτρησης RC

        sogliaBecchi = misuraRC               ' Θέτει τη μέτρηση που βρήκε ως όριο
    'debug ? sogliaBecchi
        pause 50
        low M1a:    low  M1b               ' Σταματά τον κινητήρα

       misuraRC = 0

    goto main


    '------------ Υπορουτίνα ανάγνωσης Rctime --------------


    RCT:
       high PORTA_RC
       pause 1
       rctime PORTA_RC, ALTO, misuraRC         ' Μετρά την τιμή της σταθεράς χρόνου RC του κυκλώματος
                                      ' που συνδέεται με τη θύρα PORTA_RC
       
    pause 100
       
    return

    '---------- Υπορουτίνα αποκωδικοποίησης παλμών IR -----------

    decodifica:
      rileva:
         pulsin IR_SX, BASSO, impulso
         pulsin IR_SX, BASSO, inputIR0
         pulsin IR_SX, BASSO, inputIR1
         pulsin IR_SX, BASSO, inputIR2
         pulsin IR_SX, BASSO, inputIR3
         pulsin IR_SX, BASSO, inputIR4
         
      if impulso < 1000 then rileva
     
         codicePulsante.bit0 = inputIR0.bit9
         codicePulsante.bit1 = inputIR1.bit9
         codicePulsante.bit2 = inputIR2.bit9
         codicePulsante.bit3 = inputIR3.bit9
         codicePulsante.bit4 = inputIR4.bit9   

    return

    '----------------- Υπορουτίνα εντοπισμού αντικειμένων με τα μουστάκια ---------------

    Baffi:

       if BaffoDx = 0 and BaffoSx = 0 then gira      ' Πίσω εάν και οι δύο διακόπτες είναι κλειστοί.
       if BaffoDx = 0 then destra_baffi          ' Δεξιά εάν ο αριστερός διακόπτης είναι κλειστός.
       if BaffoSx = 0 then sinistra_baffi         ' Αριστερά εάν ο δεξιός διακόπτης είναι κλειστός.
    RETURN

    '---------------------- Ρουτίνα πλοήγησης μουστακιών ------------------------


    destra_baffi:
          gosub indietro_baffi
          pause 20
          for loop = 1 to 100
             pulsout SERVO_DX, ORARIO_DX
             pulsout SERVO_SX, ORARIO_SX
             pause 20
          next

    return

    gira:      
          for loop = 1 to 100
             pulsout SERVO_DX, ORARIO_DX
             pulsout SERVO_SX, ORARIO_SX
             pause 20
          next

    return


    sinistra_baffi:
          gosub indietro_baffi
          pause 20
          for loop = 1 to 100
             pulsout SERVO_DX, ANTIORARIO_DX
             pulsout SERVO_SX, ANTIORARIO_SX
             pause 20
          next

    return


    indietro_baffi:
          for loop = 1 to 150
             pulsout SERVO_DX, ANTIORARIO_DX
             pulsout SERVO_SX, ORARIO_SX
             pause 20
          next

    return
    avatar
    Σταθης


    Αριθμός μηνυμάτων : 4
    Ημερομηνία εγγραφής : 04/01/2010
    Ηλικία : 33
    Τόπος : Kατερινη

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  Σταθης Τετ Ιαν 06, 2010 12:32 am

    dimbot έγραψε:Να είσαι καλά φίλε μου!

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

    Δυστυχώς θα σε απογοητεύσω αλλά έχουν εξαντληθεί όλα τα τεύχη της Dea στις αποθήκες της. Και εγώ είχα πάρει για να ζητήσω ένα τεύχος που μου έλειπε αλλά μου είπαν ότι... έχει καταργηθεί, επειδή... εξαντλήθηκαν τα αποθέματα (ομολογώ ότι ακόμα και τώρα δεν βγάζω νόημα στη φράση!!!). Έλεος με τη Dea!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Σου ετοιμάζω και το πρόγραμμα για τη δαγκάνα.

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

    Αναμένουμε νέα σου!!! Cool

    Oxi ρε γμτ...ετσι σου ειπαν???Δεν εχουν καθολου τευχη??? Sad Sad κριμα...

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

    Μην βιαζεσαι παντως για να μου γραψεις τα προγραμματα...Τωρα πρεπει να βρω και υπολογιστη καινουριο...εδω και τοσο καιρο μπαινω απλα στο ιντερνετ απο ενα λαπτοπ παλιο που εχω...και εβαλα σημερα σε λειτουργια τον πυργο μου τον υπολογιστη και γεια σας...καικε ο σκληρος μου δισκος...Ετσι επειδη γουσταρε... Sad Sad Sad Sad

    Οποτε πρεπεια να βρω υπολογιστη τωρα με σειριακη θυρα για να συνδεσω τον Coubix Very Happy Very Happy ετσι τον ονομασα Smile με την πρωτη ευκαιρια θα σας ενημερωσω!

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

    Τα λεμε cheers cheers cheers cheers
    Hary Dee
    Hary Dee


    Αριθμός μηνυμάτων : 30
    Ημερομηνία εγγραφής : 23/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  Hary Dee Τρι Φεβ 09, 2010 3:35 pm

    Στάθη πες αλεύρι! Στο hlektronika.gr ο Neoklis ΧΑΡΙΖΕΙ τα τεύχη που ψάχνεις!

    Αν έχω καταλάβει σωστά για ποια τεύχη μιλάς...
    avatar
    Σταθης


    Αριθμός μηνυμάτων : 4
    Ημερομηνία εγγραφής : 04/01/2010
    Ηλικία : 33
    Τόπος : Kατερινη

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  Σταθης Τετ Φεβ 10, 2010 10:34 am

    Αλευρι!!!!

    Ωραια!!

    Πως να επικοινωνησω με το παιδι αυτο???

    Γνωριζεις?


    Επειδη εγω αυτην την στιγμη ειμαι στο σχολειο και δεν προλαβαινω να γραφτω στο site για να στειλω προσωπικο μυνημα στον Νεοκλη αν καποιος μπορει ας του στειλει ενα μυνημα να του πει!Αν γινετε βεβαια!!! Laughing Laughing

    Ευχαριστω παρα πολυ Hary dee cheers cheers
    Hary Dee
    Hary Dee


    Αριθμός μηνυμάτων : 30
    Ημερομηνία εγγραφής : 23/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  Hary Dee Παρ Φεβ 12, 2010 12:15 am

    Στάθη είχα ξεχάσει να βάλω "παρακολούθηση" στο θέμα και το είδα τώρα! Sorry αλλά να του στείλω pm που να λέει τι; Βέβαια μπορεί μέσα στο διήμερο να μίλησες και μόνος σου...
    thanos
    thanos


    Αριθμός μηνυμάτων : 29
    Ημερομηνία εγγραφής : 01/03/2010

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  thanos Τρι Μαρ 02, 2010 12:09 am

    Απιστευτο αλλα και εγω με το ρομποτ της deagostini ειχα την πρωτη μου επαφη με τη ρομποτικη!!! Πρεπει να εκανε τρελες πωλησεις εκεινη η σειρα!
    dimbot
    dimbot
    Master


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Κυρ Μάης 09, 2010 11:58 am

    Παιδιά κάτι που παρατήρησα στο αναπτυξιακό του ρομπότ της dea και μου έκανε εντύπωση. Δεν έχει μικροελεγκτή τον basic stamp αλλά ένα chip της pic!!! Παρόλα αυτά το αναπτυξιακό έχει ακριβώς την ίδια λειτουργία και προγραμματισμό με την Board of Education της parallax!!! Το έχετε παρατηρήσει και εσείς αυτό?
    avatar
    kikostaki


    Αριθμός μηνυμάτων : 5
    Ημερομηνία εγγραφής : 09/08/2010

    Robot Deagostini Empty deagostini robot

    Δημοσίευση  kikostaki Δευ Αυγ 09, 2010 10:19 pm

    Γεια σε ολους σας

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


    ' {$STAMP BS2}

    PBin VAR IN2
    Pwr VAR Bit

    start:
    LOW 15: LOW 14
    PAUSE 50
    LOW 6: LOW 3

    ChkPwr:
    IF pbin = 0 THEN Cont
    Pwr =Pwr ^ 1

    AspettaPB:
    IF pbin = 0 THEN AspettaPB

    Cont:
    IF pwr = 0 THEN start

    MuoviRobot

    HIGH 15: LOW 14
    PAUSE 50
    HIGH 6: LOW 3
    PAUSE 5000

    Pwr=0

    GOTO start

    Κανω τπτ λαθος?
    dimbot
    dimbot
    Master


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Τρι Αυγ 10, 2010 8:58 pm

    Κατ'αρχήν καλώς ήρθες στην παρέα μας!!! Cool

    Ένα συνηθισμένο λάθος, το οποίο κάνουν πολλοί με το ρομπότ της deagostini είναι ότι χρησιμοποιούν τον κώδικα για τα απλά dc μοτέρ για να κινήσουν τους σερβοκινητήρες και το αντίστροφο. Κοίταξε μήπως συμβαίνει αυτό το λάθος, αν το έχεις σωστό κοιτάμε τον κώδικα και τις συνδεσμολογίες.
    dimbot
    dimbot
    Master


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Τρι Αυγ 10, 2010 9:01 pm

    Διάβασα τον κώδικα και είναι σωστός. Ρίξε και μια ματιά και στις συνδεσμολογίες αν συνεχίσει το πρόβλημα.

    Αναμένουμε τα νέα σου! Wink
    avatar
    kikostaki


    Αριθμός μηνυμάτων : 5
    Ημερομηνία εγγραφής : 09/08/2010

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  kikostaki Τρι Αυγ 10, 2010 9:03 pm

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


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Τετ Αυγ 11, 2010 6:07 pm

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


    Κώδικας:
    '{$STAMP BS2}
    '-----------------------------Ορισμοί--------------------------------

               
    Servo_Sx    CON    12   
    Servo_Dx    CON    13     

                 
    l_IR_det_pin  CON    8   

                 
    Centro    CON    750   
    Reg_fine_Sx  CON    0   
    Reg_fine_Dx  CON    0   
    neg_edge    CON    0   
                 
               
                 
    data_remote    VAR    Byte   
    velocita      VAR    Word       
    rotazione    VAR    Word           
    Calc_impulso_Sx  VAR    Word       
    Calc_impulso_Dx  VAR    Word   
    start_remote  VAR    Word   
    input_remote_0  VAR    Word   
    input_remote_1  VAR    Word   
    input_remote_2  VAR    Word   
    input_remote_3  VAR    Word   
    input_remote_4  VAR    Word   

    loop      VAR    Word

    '---------------------------------------------------------------------------------
    inizializzazione:         

      OUTPUT Servo_Sx       
      OUTPUT Servo_Dx

    '---------------------------------------------------------------------------------
    Start:

      'debug ? data_remote   
      'debug ? start_remote 
      GOSUB check_remote
      GOSUB Navigazione

    IF data_remote=0 THEN servo_pulse
    IF data_remote=1 THEN servo_pulse
    IF data_remote=2 THEN servo_pulse
    IF data_remote=3 THEN servo_pulse
    IF data_remote=4 THEN servo_pulse
    IF data_remote=5 THEN servo_pulse



    GOTO Start            ' loop

    '---------------------------------------------------------------------------------
    check_remote:



      PULSIN l_IR_det_pin,neg_edge,start_remote
      PULSIN l_IR_det_pin,neg_edge,input_remote_0
      PULSIN l_IR_det_pin,neg_edge,input_remote_1
      PULSIN l_IR_det_pin,neg_edge,input_remote_2
      PULSIN l_IR_det_pin,neg_edge,input_remote_3
      PULSIN l_IR_det_pin,neg_edge,input_remote_4


      IF start_remote < 1000 THEN check_remote

      data_remote.bit0=input_remote_0.bit9
      data_remote.bit1=input_remote_1.bit9
      data_remote.bit2=input_remote_2.bit9
      data_remote.bit3=input_remote_3.bit9
      data_remote.bit4=input_remote_4.bit9



    return

    '---------------------------------------------------------------------------------
    Navigazione:   

      branch data_remote,[a,b,c,d,e,f]

         
      a:  velocita = 0:    rotazione = 200:  goto exit_Navigazione
      b:  velocita = 350:  rotazione = 0:    goto exit_Navigazione
      c:  velocita = 0:    rotazione = -200:  goto exit_Navigazione


     
      d:  velocita = 0:    rotazione = -100:  goto exit_Navigazione
      e:  velocita = -350:  rotazione = 0:    goto exit_Navigazione
      f:  velocita = 0:    rotazione = 100:  goto exit_Navigazione

      exit_Navigazione:



    return

    '---------------------------------------------------------------------------------
    servo_pulse: 


     


    FOR loop = 1 TO 10
      Calc_impulso_Sx = velocita + rotazione + Centro + Reg_fine_Sx
      Calc_impulso_Dx = - velocita + rotazione + Centro + Reg_fine_Dx



        pulsout Servo_Sx,Calc_impulso_Sx
        pulsout Servo_Dx,Calc_impulso_Dx
        pause 3

    gosub baffi

    next

    go:
    return

    '---------------------------------------------------------------------------------
    baffi: 

    IF IN6 =0 AND IN4 =0 THEN gira
    IF IN4 =0 THEN destra_baffi 
    IF IN6 =0 THEN sinistra_baffi
    RETURN





    '---------------------- Πλοήγηση Μουστακιών ------------------------


    destra_baffi:
          gosub indietro_baffi
          pause 20
          for loop = 1 to 100
             pulsout SERVO_DX, 500
             pulsout SERVO_SX, 500
             pause 20
          next

          return


    gira:      
          for loop = 1 to 100
             pulsout SERVO_DX, 500
             pulsout SERVO_SX, 500
             pause 20
          next

          return


    sinistra_baffi:
          gosub indietro_baffi
          pause 20
          for loop = 1 to 100
             pulsout SERVO_DX, 1000
             pulsout SERVO_SX, 1000
             pause 20
          next

          return


    indietro_baffi:
          for loop = 1 to 100
             pulsout SERVO_DX, 1000
             pulsout SERVO_SX, 500
             pause 20
          next

    return

    goto Start


    avatar
    kikostaki


    Αριθμός μηνυμάτων : 5
    Ημερομηνία εγγραφής : 09/08/2010

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  kikostaki Πεμ Αυγ 12, 2010 12:36 am

    πως μπορω να μετατρεψω αυτο:
    high 14: low 15
    pause 50
    low 5: high 3
    pause 300

    high 14: low 15
    pause 50
    high 5: low 3
    pause 300

    αυτο σε αντολη για σερβοκινητηρες?

    dimbot
    dimbot
    Master


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Πεμ Αυγ 12, 2010 11:59 am

    Στους σερβοκινητήρες χρησιμοποιείς την εντολή pulsout. Πρέπει πρώτα να δεις τι κίνηση θέλεις να κάνουν οι σερβοκινητήρες.
    Οι τιμές που παίρνει ένας σερβοκινητήρας είναι από 500 έως 1000. Δηλαδή αν θέλεις να περιστρέφεται δεξιόστροφα του δίνεις τιμές από 500 έως 750 και για αριστερόστροφα από 750 έως 1000. Σε κάθε σερβοκινητήρα δίνεις ξεχωριστά εντολή στο πρόγραμμα. Συνδυάζοντας τις 2 εντολές μπορείς να καθορίσεις και τον τρόπο που θα κινηθεί το ρομπότ. Δηλαδή αν βάλεις και στα δύο τις ίδιες τιμές, το ρομπότ θα κινηθεί σε ευθεία πορεία (είτε εμπρός είτε πίσω, ανάλογα με το αν οι τιμές θα είναι 500-750 ή 750-1000). Αν βάλεις τιμές στον ένα σερβοκινητήρα και στον άλλο βάλεις την τιμή 750 (για ακινησία του ενός σερβοκινητήρα) το ρομπότ θα στρίψει και πάει λέγοντας.

    Αν θέλεις σου δίνω και παράδειγμα.
    avatar
    kikostaki


    Αριθμός μηνυμάτων : 5
    Ημερομηνία εγγραφής : 09/08/2010

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  kikostaki Πεμ Αυγ 12, 2010 12:20 pm

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


    Αριθμός μηνυμάτων : 5
    Ημερομηνία εγγραφής : 09/08/2010

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  kikostaki Πεμ Αυγ 12, 2010 12:23 pm

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


    Αριθμός μηνυμάτων : 344
    Ημερομηνία εγγραφής : 22/12/2009

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  dimbot Τετ Αυγ 18, 2010 6:29 pm

    Λοιπόν μπορείς να βρεις πάρα πολλά παραδείγματα και χρήσιμα προγράμματα για το ρομπότ σου στην ιστοσελίδα www.deagostini.gr

    Ρίξε μία ματιά, σίγουρα θα σε βοηθήσει πολύ, καθώς τα παρουσιάζει πολύ αναλυτικά.
    avatar
    TheKwsths


    Αριθμός μηνυμάτων : 31
    Ημερομηνία εγγραφής : 25/05/2011

    Robot Deagostini Empty Απ: Robot Deagostini

    Δημοσίευση  TheKwsths Τετ Ιουν 08, 2011 3:46 pm

    θα ανεβάσεις και άλλα προγράμματα για το ρομποτ;
    Έχω μείνει στο 24 τεύχος, αν έχεις κάτι στο νού σου ανέβασέ το!
    ΕΥΧΑΡΙΣΤΩ!!!!!

      Η τρέχουσα ημερομηνία/ώρα είναι Παρ Μαρ 29, 2024 4:35 am