Σελίδα 1 από 4 1 2 3 ... ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 1 έως 10 από 37

Θέμα: Ηλεκτρονική κλειδαριά πόρτας με Arduino

  1. #1
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Lightbulb Ηλεκτρονική κλειδαριά πόρτας με Arduino

    Η κατασκευή αυτή προέκυψε απο την ανάγκη προστασίας ενός χώρου με εργαλεία και ειδικά εργαλεία
    αφ' ενός κατά τη διάρκεια όλης της ημέρας, αλλά και αφ' ετέρου για να υπάρχει κάποιος υποτυπώδης
    έλεγχος εισόδου στον χώρο κατά το μή εργάσιμο ωράριο. Στηρίζεται σε έναν ATmega328P μικροελεγκτή,
    ο οποίος τρέχει το πρόγραμμά του στημένο σε περιβάλλον Arduino (Uno για την ακρίβεια).

    Επειδή με πίεζε ο χρόνος, έφτιαξα την "πλακέτα" σε διάτρητη, με τις συνδέσεις pin to pin με το χέρι.
    Το project, εκτός του μ/ε, περιλαμβάνει μια οθόνη 2x16 χαρακτήρων, ένα πληκτρολόγιο 4x4 κουμπιών
    matrix, τα ενδεικτικά LEDs για τροφοδοσία, κλείδωμα και ξεκλείδωμα και ένα buzzer για το ηχητικό
    feedback των πλήκτρων, λίγη μουσική (!) και ήχους για τις καταστάσεις του συστήματος.

    Ένα αρκετά ενδιαφέρον σημείο για μένα, ήταν η οδήγηση της οθόνης με σειριακό τρόπο (I²C) για
    εξοικονόμηση pins που θα χρειαζόντουσαν για την σάρωση του πληκτρολογίου. Και μια και υπάρχει
    αυτή η δυνατότητα, ο χρήστης μπορεί να έχει και ρολόϊ πραγματικού χρόνου με ένα M41T80 RTC.

    Οι πρώτες φωτογραφίες ακολουθούν, καθώς και ο κώδικας σε σκετσάκι για Arduino:

    Κώδικας:
    #include <Wire.h> #include <Keypad.h>
    #include <LiquidCrystal_I2C.h>
    #include <EEPROM.h>
    #include "pitches.h"
    
    
    //=================================================================================
    #define  LOCKED  9
    #define  UNLOCKED  10
    #define  LOCKER_PIN  8
    #define  BUZZER_PIN  11
    
    
    //=================================================================================
    
    
    LiquidCrystal_I2C lcd(0x38,16,2);  // set the LCD address to 0x20 for a 16 chars and 2 line display
    
    
    const byte ROWS = 4; //four rows
    const byte COLS = 4; //four columns
    //define the cymbols on the buttons of the keypads
    char hexaKeys[ROWS][COLS] = {
      {'1','2','3','A'},
      {'4','5','6','B'},
      {'7','8','9','C'},
      {'*','0','#','D'}
    };
    
    
    byte rowPins[ROWS] = {4, 5, 6, 7};             //connect to the row pinouts of the keypad
    byte colPins[COLS] = {0, 1, 2, 3};             //connect to the column pinouts of the keypad
    
    
    Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 
    
    
    const char* MESSAGE = " PLACE HERE ANY TEXT YOY WANT  ";
    const int MESSAGE_LENGTH = XX;//NUMBER IS EQUAL TO THE ABOVE STRING
    const int DISPLAY_WIDTH = 16;
    int g_nPosition = 0;
    int line = 1;
    int counter;
    
    
    int melody_1[] = {NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};
    int noteDurations_1[] = {4, 8, 8, 4,4,4,4,4 };
    int Dixie[] =  {NOTE_A4, NOTE_B4, NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_G4}; 
    int DixieDurations[] = {16,16,16,16,16,16,16,16};
    //=================================================================================
    void setup()
    {
      counter=0;
      pinMode(LOCKED, OUTPUT);
      pinMode(UNLOCKED, OUTPUT);
      pinMode(LOCKER_PIN, OUTPUT); 
      pinMode(BUZZER_PIN, OUTPUT); 
      digitalWrite(LOCKED, HIGH);
      digitalWrite(UNLOCKED, LOW);
      digitalWrite(LOCKER_PIN, LOW);  
      
      lcd.init();                      // initialize the lcd 
     
      // Print a message to the LCD.
      lcd.backlight();
      lcd.print(F("TOOLS WHAREHOUSE"));
      lcd.setCursor(0,1);
      lcd.print(F("    M.E.N. /2   "));
      delay(2000);
      lcd.clear(); lcd.print(F("    WELCOME!    "));
      delay(2000);
      
      if(ReadPassFromEEPROM()==25755)
      {
        //Password is blank so store a default password
        WritePassToEEPROM(1234);
      }
    } 
    //=================================================================================
    void loop()
    {
      unsigned int password, customKey;
      
      password = InputNumber("ENTER PASSWORD: ");
      
      //Match Password
      if(password == ReadPassFromEEPROM())
      {
    //    music(Dixie, DixieDurations);
        music(melody_1, noteDurations_1);
        lcd.noBlink(); lcd.clear(); 
        lcd.print(F("DOOR UNLOCKED!"));
        counter = 0;
        //Now Activate Relay
        digitalWrite(LOCKED, LOW);
        digitalWrite(UNLOCKED, HIGH);
        digitalWrite(LOCKER_PIN, HIGH);  
        delay(2000);
        lcd.clear();
        lcd.print(F("PRESS ANY KEY..."));
        delay(3000);
        digitalWrite(LOCKER_PIN, LOW); 
        repeatScroll();   
        
        while(customKeypad.getKey() == NO_KEY) 
        {
          delay(1);
        }
        beepBuzzer();
        //Now DeActivate Relay
        digitalWrite(LOCKER_PIN, LOW); 
        digitalWrite(LOCKED, HIGH); 
        digitalWrite(UNLOCKED, LOW);  
      }
      else if(password == 0)
      {
        /*
        If user enters 0000 as password it
        indicates a request to change password
        */
        lcd.clear();
        password=InputNumber(" OLD PASSWORD:  ");
    
    
        if(password==ReadPassFromEEPROM())
        {
          //Allowed to change password
          unsigned int NewPassword;
          NewPassword=InputNumber(" NEW PASSWORD:  ");
          WritePassToEEPROM(NewPassword);
    
    
          lcd.clear();
          lcd.print(F("  NEW PASSWORD  "));
          lcd.setCursor(0,1);
          lcd.print(F("    ENTERED!    "));
          quadBuzzer();
          delay(2000);
        }
        else
        {
          //Not Allowed to change password
          lcd.clear(); quadBuzzer();
          lcd.print(F("     WRONG      "));    
          lcd.setCursor(0,1);
          lcd.print(F("PASSWORD ENTERED"));
          delay(2000);
        }
      }            
      else
      {
        lcd.noBlink(); lcd.clear(); quadBuzzer();
        lcd.print(F(" ACCESS DENIED!  "));
        digitalWrite(LOCKER_PIN, LOW);
        counter++; 
        if(counter==3)
        {
          counter=0;
          lcd.clear(); 
          lcd.print(F("YOU HAVE TO WAIT"));
          lcd.setCursor(0,1);
          lcd.print(F("60 SECS! SORRY.."));
          delay(60000);
          quadBuzzer();
        }  
        delay(2000);
      }  
    }
    //=================================================================================        
    void buzz(int msec)
    {
     int y;
        for(y=80; y>0; y--)
        {
          digitalWrite(BUZZER_PIN, HIGH);   // set the LED on
          delayMicroseconds(400);          // wait for a second
          digitalWrite(BUZZER_PIN, LOW);    // set the LED off
          delayMicroseconds(400);              // wait for a second
        }
    } 
    //=================================================================================        
    void quadBuzzer()
    {
      buzz(500);
      delay(50);
      buzz(500);
      delay(50);
      buzz(500);
      delay(50);
      buzz(500);
      delay(50);
      buzz(500); 
    }     
    //=================================================================================
    void beepBuzzer()
    {
      int y;
      for(y=20; y>0; y--)
      {
        digitalWrite(BUZZER_PIN, HIGH);   // set the LED on
        delayMicroseconds(800);          // wait for a second
        digitalWrite(BUZZER_PIN, LOW);    // set the LED off
        delayMicroseconds(800);              // wait for a second
      }
      digitalWrite(BUZZER_PIN, LOW);
    }
    //=================================================================================
    unsigned int InputNumber(char *msg)
    {
      unsigned int keyCode,x,pos,customKey;
      unsigned int prev_key = 0xFF;
            
      while(1)
      {
        x=0;
        pos=0;
    
    
        lcd.clear();
        lcd.print(msg);
        lcd.setCursor(0,1); lcd.print("____");
        lcd.setCursor(0,1); lcd.blink();
        
        unsigned char key[] = "####";
        unsigned int system_reset = 0;
        unsigned int backlight_timeout = 16000;
    
    
        while(!system_reset)
        {
          if(backlight_timeout>0)
          {
            backlight_timeout--;
            if(backlight_timeout==0)
        {
          lcd.noBacklight();
        }
          }
    //      delay(500);
          customKey = customKeypad.getKey();
          keyCode = customKey;                            //Get the keycode of pressed key
          if(keyCode == prev_key)  continue;
          else if(keyCode == NO_KEY)
          {
            prev_key=0xFF;
        continue;
          }
          else
          {
            prev_key=keyCode;
          }
                    
          if(keyCode!=0xFF)
          {
            lcd.backlight();
        backlight_timeout=16000;
          }
          if(pos==4)
          {
            lcd.setCursor(3,1); lcd.blink();
        while(1)
        {
    //          delay(500);
          customKey = customKeypad.getKey();
              keyCode = customKey;    
          if(keyCode == '#')//4
          {
            break;
          }
        }
        return(((1000*key[0])+(100*key[1])+(10*key[2])+key[3]));        //save the password in 16 bit integer
        lcd.clear();
          }
          switch (keyCode)                                     //generating key characeter to display on LCD
          {
        case '1': 
            beepBuzzer();
            lcd.setCursor(pos,1); lcd.print("*");
        key[x]=1;
        ++x;
        pos++;
        break;
                
        case '2': 
        beepBuzzer();
            lcd.setCursor(pos,1); lcd.print("*");
        key[x]=2;
        ++x;
        pos++;
        break;
                
        case '3':
        beepBuzzer();
        lcd.setCursor(pos,1); lcd.print("*");
        key[x]=3;
        ++x;
        pos++;
        break;
                
        case '4':
        beepBuzzer();
        lcd.setCursor(pos,1); lcd.print("*");
        key[x]=4;
        ++x;
        pos++;
        break;
                
        case '5': 
        beepBuzzer();
        lcd.setCursor(pos,1); lcd.print("*");
            key[x]=5;
        ++x;
        pos++;
        break;
                
        case '6':
        beepBuzzer();
        lcd.setCursor(pos,1); lcd.print("*");
            key[x]=6;
        ++x;
        pos++;
        break;
                
        case '7':
        beepBuzzer();
        lcd.setCursor(pos,1); lcd.print("*");
               key[x]=7;
               ++x;
        pos++;
        break;
    
    
        case '8':
        beepBuzzer();
            lcd.setCursor(pos,1); lcd.print("*");
            key[x]=8;
        ++x;
        pos++;
        break;
                
        case '9':
        beepBuzzer();
        lcd.setCursor(pos,1); lcd.print("*");
            key[x]=9;
        ++x;
        pos++;
        break;
    
    
        case '0':
        beepBuzzer();
        lcd.setCursor(pos,1); lcd.print("*");
            key[x]=0;
        ++x;
        pos++;
        break;
    
    
        case '*': 
        beepBuzzer();
        system_reset=1;        
        break;
    
    
            case 'A':
            beepBuzzer();
            lcd.clear();
            lcd.print(F("LAST ENTRY WAS: "));
            lcd.setCursor(0,1);
            lcd.print(F("< TIME STAMP>   "));
            delay(5000);
            system_reset=1;
            break;
            
            case 'B':
            beepBuzzer();
            lcd.clear();
            lcd.print(F("<TIME>"));
            lcd.setCursor(0,1);
            lcd.print(F("<DATE>")); lcd.noBlink();
            delay(5000);
            system_reset=1;
            break;
            
            case 'C':
            beepBuzzer();
            lcd.clear();
            lcd.print(F("    TIME/DATE   "));
            lcd.setCursor(0,1);
            lcd.print(F("    SETTINGS    "));
            delay(5000);
            system_reset=1;
            break;
                                
        default: ;
          }
          delay(150);
        }    
      }        
    }
    //=================================================================================
    void WritePassToEEPROM(unsigned int pass)
    {
      EEPROM.write(0,(pass%100));
      EEPROM.write(1,(pass/100));
    }
    //=================================================================================
    unsigned int ReadPassFromEEPROM()
    {
      return (EEPROM.read(1)*100  +    EEPROM.read(0000));
    }
    //=================================================================================
    void repeatScroll()
    {
      do
      {
        scrollDisplay(1);
      }while(customKeypad.getKey() == NO_KEY) ; 
    }
    //=================================================================================
    void scrollDisplay(int line)
    {
      int i;
      
      if(g_nPosition < MESSAGE_LENGTH - DISPLAY_WIDTH)
      {
        for(i=0; i<DISPLAY_WIDTH; i++)
        {
           lcd.setCursor(i, line);
           lcd.print(MESSAGE[g_nPosition + i]);
        }
      }
      else
      {
        int nChars = MESSAGE_LENGTH - g_nPosition;
        for(i=0; i<nChars; i++)
        {
           lcd.setCursor(i, line);
           lcd.print(MESSAGE[g_nPosition + i]);
        }
        for(i=0; i<(DISPLAY_WIDTH - nChars); i++)
        {
           lcd.setCursor(nChars + i, line);
           lcd.print(MESSAGE[i]);
        }
      }
      g_nPosition++;
      if(g_nPosition >= MESSAGE_LENGTH)
      {
         g_nPosition = 0;
      }
      delay(180); 
    }  
    //=================================================================================
    void music(int* melody, int* noteDurations)
    {
      for (int thisNote = 0; thisNote < 8; thisNote++) {
    
    
        // to calculate the note duration, take one second 
        // divided by the note type.
        //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
        int noteDuration = 1000/noteDurations[thisNote];
        tone(BUZZER_PIN, melody[thisNote],noteDuration);
    
    
        // to distinguish the notes, set a minimum time between them.
        // the note's duration + 30% seems to work well:
        int pauseBetweenNotes = noteDuration * 1.30;
        delay(pauseBetweenNotes);
        // stop the tone playing:
        noTone(8);
      }  
    }
    Σημείωση: ο κώδικας υπολείπεται μερικών λεπτομερειών, όπως τη ρύθμιση του ρολογιού,
    την ένδειξη της τελευταίας εισόδου στο χώρο και της ένδειξης του ρολογιού.

    Η κατασκευή έχει τη δυνατότητα να παίζει και μουσική! Υπάρχει ένα header file, που περιέχει
    πληροφορίες για την οδήγηση ενός digital pin με συχνότητα (όχι PWM) και ενός buzzer. Με την
    εισαγωγή του σωστού κωδικού και το ξεκλείδωμα, παίζει ένα μικρό ηχητικό (λίγο cartoon βέβαια!)
    για την επιβεβαίωση του ξεκλειδώματος.
    Όλα τα αρχεία (lock.ino, pitches.h, καθώς και η βιβλιοθήκη LiquidCrystal_I2C.h) θα ανεβούν σε λίγο
    σε zip file.



    Είναι σχεδόν εντελώς ασχολίαστος ο κώδικας, αλλά η βιασύνη βλέπετε... Στο μέλλον,
    ίσως κάτσω να τον σχολιάσω...
    Συνημμένα Thumbnails Συνημμένα Thumbnails Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  2012-09-09 21.24.36.jpg Εμφανίσεις:  1631 Μέγεθος:  152,5 KB   Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  2012-09-09 21.24.58.jpg Εμφανίσεις:  1188 Μέγεθος:  153,4 KB   Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  2012-09-09 21.25.16.jpg Εμφανίσεις:  1156 Μέγεθος:  153,8 KB   Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  2012-09-09 21.38.45.jpg Εμφανίσεις:  1353 Μέγεθος:  153,0 KB   Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  2012-09-09 21.39.06.jpg Εμφανίσεις:  1287 Μέγεθος:  148,2 KB  

    4 Not allowed! Not allowed!

  2. 17 μέλη ευχαρίστησαν τον manolena για αυτό το χρήσιμο μήνυμα:

    agis68 (20-05-13), Dimitris_Peristeri (21-11-14), GeorgeVita (09-09-12), guscokes (02-12-12), hukgys (12-09-12), Hulk (09-09-12), jakektm (09-06-14), kentar (10-09-12), lepouras (09-10-16), Lord Vek (10-10-16), Mixalis xania (28-02-13), nikknikk4 (10-09-12), p.gabr (10-09-12), rep (10-09-12), spiroscfu (10-09-12), stavros_97s (09-09-12), Sted (11-09-12)

  3. #2
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Το σχηματικό της κατασκευής είναι αυτό:

    Όπως θα δείτε, το PCF8574A (διεύθυνση 0x38 με τα Α0, Α1, Α2 γειωμένα) είναι αυτό που
    μετατρέπει τη σειριακή πληροφορία απο το δίαυλο I²C σε παράλληλη για την οθόνη. Τα pins
    που εξοικονομούνται έτσι, χρησιμοποιούνται και για άλλες εργασίες, όπως τη σάρωση του
    πληκτρολογίου, την οδήγηση του ρελέ της πόρτας, των LEDs κατάστασης και του buzzer.
    Συνημμένα Αρχεία Συνημμένα Αρχεία

    1 Not allowed! Not allowed!

  4. 3 μέλη ευχαρίστησαν τον manolena για αυτό το χρήσιμο μήνυμα:

    agis68 (09-12-12), kentar (10-09-12), stavros_97s (09-09-12)

  5. #3
    Μέλος Το avatar του χρήστη Hulk
    Όνομα
    Σάββας
    Εγγραφή
    Jan 2011
    Περιοχή
    Αχαρναί
    Μηνύματα
    951

    Προεπιλογή

    Μπραβο Μανο! Πολυ καλη δουλεια, αν και απο μΕ δεν ξερω τιποτα ''ντιπ για ντιπ'' τα ζηλευω τα ρημαδια!!!

    0 Not allowed! Not allowed!

  6. Ένα μέλος ευχαρίστησε τον Hulk για αυτό το χρήσιμο μήνυμα:

    manolena (09-09-12)

  7. #4
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Στο συνημμένο zip file που ακολουθεί, μπορείτε να βρείτε όλα τα απαραίτητα αρχεία
    για το project. Το σχηματικό και η πλακέτα είναι σε Altium DXP format, αλλά υπάρχουν και
    σε .pdf μορφή. Τις βιβλιοθήκες για το χτίσιμο του project μπορείτε να τις βρείτε εδώ:

    http://arduino.cc/en/Reference/EEPROM (για την EEPROM)
    http://arduino.cc/en/Reference/LiquidCrystal (για την οθόνη με παράλληλη επικοινωνία)
    http://hmario.home.xs4all.nl/arduino...rystal_I2C.zip (για την σειριακή οθόνη)
    http://www.arduino.cc/playground/code/Keypad (για το πληκτρολόγιο)
    http://www.arduino.cc/en/Reference/Wire (για την επικοινωνία σε δίαυλο I²C)
    Συνημμένα Αρχεία Συνημμένα Αρχεία

    0 Not allowed! Not allowed!

  8. #5
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Πατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  2012-09-09 21.26.48.jpg Εμφανίσεις:  375 Μέγεθος:  140,9 KBΠατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  2012-09-09 21.27.49 - Αντίγραφο.jpg Εμφανίσεις:  603 Μέγεθος:  141,4 KBΠατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  2012-09-09 21.27.49 - Αντίγραφο.jpg Εμφανίσεις:  603 Μέγεθος:  141,4 KBΠατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  2012-09-09 21.28.05.jpg Εμφανίσεις:  366 Μέγεθος:  140,4 KBΠατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  2012-09-09 21.29.02 - Αντίγραφο.jpg Εμφανίσεις:  453 Μέγεθος:  131,9 KBΠατήστε στην εικόνα για να τη δείτε σε μεγένθυνση Όνομα:  2012-09-09 21.29.54 - Αντίγραφο.jpg Εμφανίσεις:  444 Μέγεθος:  132,8 KB

    Η συσκευή δέχεται έναν 4ψήφιο κωδικό (0001-9999) και εισαγωγή με (#), τον οποίο αποθηκεύει στην EEPROM.
    Υπάρχει η δυνατότητα αλλαγής του, πατώντας (0000) και (#), με επιβεβαίωση. Αν δεν δοθεί σωστά τη δεύτερη
    φορά, βγάζει μήνυμα σφάλματος. Μόλις εισαχθεί ο σωστός κωδικός, ενεργοποιείται για 5 δευτερόλεπτα το ρελέ
    που με τη σειρά του ενεργοποιεί το κυπρί της πόρτας (ίδιο με αυτό στις κύριες εισόδους πολυκατοικιών). Αν δοθεί
    3 φορές λάθος κωδικός, το σύστημα κλειδώνει για 1 λεπτό και επαναλαμβάνεται η εισαγωγή. Στην κατάσταση
    ξεκλειδώματος, η οθόνη παραμένει συνέχεια αναμμένη και στην κάτω γραμμή "τρέχει" ένα κυλιόμενο μήνυμα.

    Στην αρχική οθόνη εισαγωγής κωδικού, η οθόνη έχει φωτισμό για 8 δευτερόλεπτα και μετά σβήνει για εξοικονόμηση
    ενέργειας. Μόλις πατηθεί οποιοδήποτε πλήκτρο, ξανα-ανάβει. Κατά την εισαγωγή κωδικού, αν γίνει λάθος μπορεί να
    διορθωθεί πατώντας (*) και ξανα-αρχίζοντας. Πατώντας το "Α" φαίνεται στην οθόνη η χρονική στάμπα της τελευταίας
    φοράς που έγινε ενεργοποίηση της κλειδαριάς. Πατώντας "Β", φαίνεται η τρέχουσα ώρα/ ημερομηνία. Πατώντας "C"
    γίνονται οι ρυθμίσεις του ρολογιού.

    0 Not allowed! Not allowed!

  9. #6
    Νέο Μέλος
    Όνομα
    τασος
    Εγγραφή
    Feb 2011
    Περιοχή
    kozani
    Μηνύματα
    17

    Προεπιλογή

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

    0 Not allowed! Not allowed!

  10. #7
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Τα υλικά υπάρχουν όλα εδώ:

    http://www.fanos.gr/

    0 Not allowed! Not allowed!

  11. Ένα μέλος ευχαρίστησε τον manolena για αυτό το χρήσιμο μήνυμα:

    tasos@ (10-09-12)

  12. #8
    Μέλος Το avatar του χρήστη wow
    Όνομα
    Βαγγέλης
    Εγγραφή
    Mar 2011
    Περιοχή
    Μακεδονία
    Μηνύματα
    119

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από manolena Εμφάνιση μηνυμάτων
    Τα υλικά υπάρχουν όλα εδώ:

    http://www.fanos.gr/
    Θα φτιαξει site ο φανος ? καποιος φουρνος θα γκρεμισε........

    0 Not allowed! Not allowed!

  13. Ένα μέλος ευχαρίστησε τον wow για αυτό το χρήσιμο μήνυμα:

    Hary Dee (22-09-13)

  14. #9
    Μέλος Το avatar του χρήστη manolena
    Όνομα
    Μάνος
    Εγγραφή
    Dec 2006
    Περιοχή
    Ελευσίνα
    Μηνύματα
    2.709

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από wow Εμφάνιση μηνυμάτων
    Θα φτιαξει site ο φανος ? καποιος φουρνος θα γκρεμισε........
    Όχι βέβαια!!! Απο τον Ιούνιο που τον ρώτησα, ακόμα το φτιάχνει...

    0 Not allowed! Not allowed!

  15. #10
    Μέλος Το avatar του χρήστη kentar
    Όνομα
    Γιώργος
    Εγγραφή
    Jul 2009
    Περιοχή
    Κερατσινι
    Μηνύματα
    698

    Προεπιλογή

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

    0 Not allowed! Not allowed!

  16. Ένα μέλος ευχαρίστησε τον kentar για αυτό το χρήσιμο μήνυμα:

    manolena (10-09-12)

Σελίδα 1 από 4 1 2 3 ... ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Ηλεκτρονική κλειδαριά
    By ALAMAN in forum Γενικά
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 13-03-15, 20:51
  2. Ηλεκτρονική κλειδαριά
    By nikolio1 in forum Ηλεκτρονικά
    Απαντήσεις: 6
    Τελευταίο Μήνυμα: 09-10-12, 21:01
  3. USB Ηλεκτρονική κλειδαριά
    By GR_KYROS in forum Παρουσίαση Ολοκληρωμένων Κατασκευών
    Απαντήσεις: 13
    Τελευταίο Μήνυμα: 15-08-10, 14:24
  4. ηλεκτρονική κλειδαριά
    By Ashtaroth in forum Γενικά
    Απαντήσεις: 1
    Τελευταίο Μήνυμα: 31-08-04, 03:28

Tags for this Thread

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας