337 γραμμές
22 KiB
Markdown
337 γραμμές
22 KiB
Markdown
|
+++
|
|||
|
title = 'Πώς φτιάχνεται ένας γκαϊφές'
|
|||
|
date = '1998-01-01T00:00:00Z'
|
|||
|
description = ''
|
|||
|
author = 'Γεωργάτος Φώτης gef@ceid.upatras.gr(mailto:gef@ceid.upatras.gr?subject=COFFEE-HOWTO)'
|
|||
|
issue = ['Magaz 01']
|
|||
|
issue_weight = 4
|
|||
|
+++
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
*Μία από τις πιο ενοχλητικές ερωτήσεις που έχω ακούσει για λογισμικό είναι εάν φτιάχνει καφέ. Ε, ναι λοιπόν, φτιάχνει. Και καλό καφέ.*
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
Επί μακρόν την ανθρωπότητα την εβασάνιζε το πώς θα ημπορούσε να χρησιμοποιήσει τον υπολογιστή, ώστε να παράγει καφέ. Τον καφέ τον χρειαζόμαστε για καθόμαστε
|
|||
|
στον υπολογιστή με τις ώρες χωρίς να νυστάζουμε, διότι ως γνωστόν την νύχτα γράφεται ο καλύτερος κώδικας.
|
|||
|
|
|||
|
Το κυριότερο πρόβλημα είναι να συνδέσουμε την καφετιέρα με τον υπολογιστή και να την ελέγχουμε μέσω λογισμικού. Αυτό συνήθως ανάγεται σε ένα κύκλωμα διακόπτη
|
|||
|
ON/OFF, που ελέγχει την τροφοδοσία της καφετιέρας.
|
|||
|
|
|||
|
**1. Είδη καφέ**
|
|||
|
-----------------------------------------------
|
|||
|
|
|||
|
- [1.1 Ελληνικός](#ss1.1)
|
|||
|
- [1.2 Γαλλικός](#ss1.2)
|
|||
|
- [1.3 Nescaffe](#ss1.3)
|
|||
|
- [1.4 frappe](#ss1.4)
|
|||
|
- [1.5 freddo](#ss1.5)
|
|||
|
- [1.6 cappuccino](#ss1.6)
|
|||
|
- [1.7 espresso](#ss1.7)
|
|||
|
|
|||
|
**2. Κυκλώματα σύνδεσης της καφετιέρας**
|
|||
|
-----------------------------------------------------------------------
|
|||
|
|
|||
|
- [2.1 Οδήγηση με 0-5V από τον υπολογιστή](#ss2.1)
|
|||
|
- [2.2 \'Ελεγχος με Relay](#ss2.2)
|
|||
|
- [2.3 \'Ελεγχος με TRIAC \#1](#ss2.3)
|
|||
|
- [2.4 \'Ελεγχος με TRIAC \#2](#ss2.4)
|
|||
|
|
|||
|
**3. Λογισμικό**
|
|||
|
-----------------------------------------------
|
|||
|
|
|||
|
- [3.1 Πρόγραμμα σε C](#ss3.1)
|
|||
|
- [3.2 Σαν device driver](#ss3.2)
|
|||
|
- [3.3 Διασύνδεση με Internet](#ss3.3)
|
|||
|
|
|||
|
**4. Συμπτώματα υπερδοσολογίας**
|
|||
|
---------------------------------------------------------------
|
|||
|
|
|||
|
**5. Επεκτάσεις**
|
|||
|
------------------------------------------------
|
|||
|
|
|||
|
**6. Αναφορές**
|
|||
|
----------------------------------------------
|
|||
|
|
|||
|
|
|||
|
### [1. Είδη καφέ]{#s1}
|
|||
|
|
|||
|
### [1.1 Ελληνικός]{#ss1.1}
|
|||
|
|
|||
|
Είναι επίσης γνωστός και ως τούρκικος, αλλά είναι παραλλαγή του. Παλιά είχαν για σηματάκι τον παπαγάλο, αλλά τώρα χρησιμοποιούν τον πιγκουίνο. Χαρακτηριστικό
|
|||
|
του καφέ αυτού είναι το κατακάθι στον πάτο του ποτηριού, που μπορεί να χρησιμεύσει για να μαντέψετε την ατυχία σας.
|
|||
|
|
|||
|
Αναμιγνύουμε καφέ και ζάχαρη στη σωστή αναλογία, με ποσότητα νερού αντιστοίχου του φλιτζανίου. Παραδοσιακά παρασκευάζεται σε ζεσεοδοχείο (μπρίκι) με γκαζιέρα,
|
|||
|
αλλά απουσία φτηνών εξαρτημάτων για τον έλεγχο του αερίου, θα χρησιμοποιήσουμε ένα απλό μάτι. (εεε! της κουζίνας)
|
|||
|
|
|||
|
Οι κατηγορίες του ελληνικού καφέ είναι: (κουταλιές)
|
|||
|
|
|||
|
- Γλυκός: 1 καφέ, 2 ζάχαρη
|
|||
|
- Βαρύ γλυκός: 2 καφέ, 3 ζάχαρη
|
|||
|
- Γλυκύβραστος: 1/2 καφέ, 1 ζάχαρη
|
|||
|
- Μέτριος: 1 καφέ, 1 ζάχαρη
|
|||
|
- Σκέτος (Πικρός): 1 καφέ
|
|||
|
- Πολλά βαρύς και όχι: 2 καφέ, συνοδεύεται με ναργιλέ
|
|||
|
|
|||
|
Ανακατεύουμε συνεχώς μέχρι το μίγμα να αρχίσει να ξεχειλίζει, οπότε με γρήγορες κινήσεις το παίρνουμε από τη φωτιά. Αργείς-χάνεις, απλή λογική. Το βήμα αυτό
|
|||
|
συζητείται να υλοποιηθεί με robot.
|
|||
|
|
|||
|
### [1.2 Γαλλικός]{#ss1.2}
|
|||
|
|
|||
|
Δημοφιλής καφές για προγραμματιστές μιας και δεν χρειάζεται προσοχή. Η ανάρπαστη γεύση του έχει εμπνεύσει χιλιάδες προγραμματιστών σε έργα λογισμικού αμύθητης
|
|||
|
τελειότητας, υλοποιημένα άγρια χαράματα. Τα Windows για παράδειγμα είναι γραμμένα 5:00 το πρωί, με τα νεύρα ΝΑ. Εγγυημένο αποτέλεσμα.
|
|||
|
|
|||
|
### [1.3 Nescaffe]{#ss1.3}
|
|||
|
|
|||
|
Το κουνάς πριν
|
|||
|
|
|||
|
### [1.4 frappe]{#ss1.4}
|
|||
|
|
|||
|
Το κουνάς μετά
|
|||
|
|
|||
|
### [1.5 freddo]{#ss1.5}
|
|||
|
|
|||
|
Δύσκολος καφές.
|
|||
|
|
|||
|
Μην τον ζητήσετε από τον τύπο στο Πάρκο της Ειρήνης/Πανεπιστήμιο Πάτρας
|
|||
|
|
|||
|
### [1.6 cappuccino]{#ss1.6}
|
|||
|
|
|||
|
### [1.7 espresso]{#ss1.7}
|
|||
|
|
|||
|
|
|||
|
### [2. Κυκλώματα σύνδεσης της καφετιέρας]{#s2}
|
|||
|
|
|||
|
Το σχηματικό είναι κάπως έτσι:
|
|||
|
|
|||
|
**ΣΗΜΕΙΩΣΗ: \'Εχει παρατηρηθεί ότι μερικά σχήματα δεν φαίνονται σωστά. Σε τέτοια περίπτωση, δείτε τα με \"View-\>Document source\".**
|
|||
|
|
|||
|
> --------- 0-5V --------- ~220V -----------
|
|||
|
> | Η/Υ |===>===|Ελεγχος|========|Καφετιέρα|
|
|||
|
> --------- --------- -----------
|
|||
|
|
|||
|
Η γενική ιδέα είναι ότι παίρνουμε μία τάση ελέγχου από τον υπολογιστή, ο οποία οδηγεί ένα κύκλωμα με απομόνωση (OPTOTRIAC ή RELAY).
|
|||
|
|
|||
|
Εάν η καφετιέρα είναι μεγάλη (πχ περισσότερο από 200W), χρησιμοποιείστε οπωσδήποτε RELAY, αλλιώς μπορείτε να βάλετε TRIAC. Εάν δεν κάνετε ακριβώς αυτό, απλά θα
|
|||
|
πετάξετε τα λεφτά σας με τον ή με τον άλλο τρόπο.
|
|||
|
|
|||
|
Σημειώστε ότι τα κυκλώματα που έχουμε παρακάτω, είναι όλα τουλάχιστον μια φορά δοκιμασμένα, αλλά η διασύνδεση με τον υπολογιστή γίνεται με ΔΙΚΗ ΣΑΣ ΕΥΘΥΝΗ. Εάν
|
|||
|
δεν έχετε εμπειρία με ηλεκτρονικά, καλόν θα είναι να μην την αποκτήσετε με αυτά τα κυκλώματα, γιατί θα είναι κακή μάλλον\...
|
|||
|
|
|||
|
Να είστε πολύ προσεχτικοί στους πειραματισμούς με τα 220V, και δεν θα είναι πολυτέλεια να χρησιμοποιήσετε ασφάλεια ανάλογη του φορτίου σας\...
|
|||
|
|
|||
|
### [2.1 Οδήγηση με 0-5V από τον υπολογιστή]{#ss2.1}
|
|||
|
|
|||
|
Εδώ είναι ένα απλό παράδειγμα για το πώς θα πάρετε μια απλή τάση 0-5V από τον υπολογιστή, μέσω της παράλληλης θύρας.
|
|||
|
|
|||
|
> Back View ----- Pin 10 - ACK
|
|||
|
> Male DB-25 | | Pin 9 - D7
|
|||
|
> Connector | | Pin 2 - D0
|
|||
|
> v v v Pin 1 -
|
|||
|
> ~Strobe
|
|||
|
> ____________________________________________________________
|
|||
|
> / \
|
|||
|
> \ 13 12 11 10 9 8 7 6 5 4 3 2 1 /
|
|||
|
> \ /
|
|||
|
> \ 25 24 23 22 21 20 19 18 17 16 15 14 /
|
|||
|
> \______________________________________________________/
|
|||
|
|
|||
|
Ο ακροδέκτης 1 είναι το Strobe( αρνητικής λογικής)
|
|||
|
|
|||
|
Οι ακροδέκτες 2-9 είναι τα σήματα του DATA BUS, όπως αυτά διαμορφώνονται, έπειτα από μία εντολή τύπου OUT στην παράλληλη θύρα.
|
|||
|
|
|||
|
Ο ακροδέκτης 10 είναι το ACK, δηλαδή τον ελέγχετε εσείς, παράγοντας interrupt.
|
|||
|
|
|||
|
Τα 18-25 είναι βραχυκυκλωμένα και είναι η γείωση.
|
|||
|
|
|||
|
Πιο αναλυτικά:
|
|||
|
|
|||
|
> <= in DB25 Cent Name of Reg
|
|||
|
> => out pin pin Signal Bit Function Notes
|
|||
|
> ------ ---- ---- -------- --- -----------------------------
|
|||
|
> => 1 1 -Strobe C0- Set Low pulse >0.5 us to send
|
|||
|
> => 2 2 Data 0 D0 Set to least significant data
|
|||
|
> => 3 3 Data 1 D1 ...
|
|||
|
> => 4 4 Data 2 D2 ...
|
|||
|
> => 5 5 Data 3 D3 ...
|
|||
|
> => 6 6 Data 4 D4 ...
|
|||
|
> => 7 7 Data 5 D5 ...
|
|||
|
> => 8 8 Data 6 D6 ...
|
|||
|
> => 9 9 Data 7 D7 Set to most significant data
|
|||
|
> <= 10 10 -Ack S6+ IRQ Low Pulse ~ 5 uS, after accept
|
|||
|
> <= 11 11 +Busy S7- High for Busy/Offline/Error
|
|||
|
> <= 12 12 +PaperEnd S5+ High for out of paper
|
|||
|
> <= 13 13 +SelectIn S4+ High for printer selected
|
|||
|
> => 14 14 -AutoFd C1- Set Low to autofeed one line
|
|||
|
> <= 15 32 -Error S3+ Low for Error/Offline/PaperEnd
|
|||
|
> => 16 31 -Init C2+ Set Low pulse > 50uS to init
|
|||
|
> => 17 36 -Select C3- Set Low to select printer
|
|||
|
> == 18-25 19-30, Ground
|
|||
|
|
|||
|
### [2.2 \'Ελεγχος με Relay]{#ss2.2}
|
|||
|
|
|||
|
Το πιο απλό κύκλωμα που μπορεί να φτιάξει κανείς είναι το εξής:
|
|||
|
|
|||
|
> Vcc
|
|||
|
> |
|
|||
|
> +------+
|
|||
|
> | __|__
|
|||
|
> Relay /^\ Diode 1N4002
|
|||
|
> Coil /---\
|
|||
|
> | |
|
|||
|
> +------+
|
|||
|
> |
|
|||
|
> | /
|
|||
|
> 4.7K B |/ C
|
|||
|
> parallel port >-\/\/\/\/---| NPN Transistor: BC547A or 2N2222A
|
|||
|
> data pi |\ E
|
|||
|
> | V
|
|||
|
> |
|
|||
|
> parallel port >--------------+
|
|||
|
> ground pin |
|
|||
|
> Ground
|
|||
|
|
|||
|
Συνδέστε το Vcc με τάση αντίστοιχη με τον τύπο του relay που έχετε βρει (5 ή 12V). Προφανώς το relay πρέπει να διαλέξετε να είναι επαρκές για την καφετιέρα σας.
|
|||
|
Αυτό ίσως εξηγεί τους κακούς καφέδες: Οι barmen συχνά κάνουν το λάθος να βάζουν το relay αντί στον συλλέκτη (C), στον εκπομπό (E) του τρανζίστορ, πολώνοντάς το
|
|||
|
έτσι με λάθος τρόπο. Η δίοδος 1N4002 είναι για να προστατεύει το τρανζίστορ από τα ανάστροφα ρεύματα του Relay, όταν το ρεύμα σε αυτό αλλάζει. Εάν δεν την
|
|||
|
βάλετε, λογικά το τρανζίστορ θα γίνει πιο μαύρο και θα μυρίζει.
|
|||
|
|
|||
|
### [2.3 \'Ελεγχος με TRIAC \#1]{#ss2.3}
|
|||
|
|
|||
|
Εάν θέλετε ένα απλό κύκλωμα μπορείτε να χρησιμοποιήσετε ένα Motorola MOC301\[012\] (οδηγός για TRIAC), μαζί με ένα γενικής χρήσης TRIAC όπως το SC141D. Το
|
|||
|
πλεονέκτημα αυτού του κυκλώματος είναι ότι δεν χρειάζεται τάση τροφοδοσίας.
|
|||
|
|
|||
|
Για μη επαγωγικό φορτίο το κύκλωμα είναι ως εξής:
|
|||
|
|
|||
|
> 270 1 +-------+ 6 180
|
|||
|
> +5v -VAVAVA-----+ +----VAVAVA-----+-------------- Line Hot
|
|||
|
> 2 | MOC | |
|
|||
|
> TTL in ---------+ 3012 +nc VA SC141D
|
|||
|
> | | 4 / |
|
|||
|
> nc+ +------------/ |
|
|||
|
> +-------+ +----\/\/\/---- Line Neutral
|
|||
|
> LOAD
|
|||
|
|
|||
|
Εάν πρόκειται να δουλέψετε με 220V, προτιμήστε ένα 3021. Εάν έχετε επαγωγικό φορτίο ενδείκνυται να βάλετε bypass πυκνωτές, δείτε σχετικά Motorola Application
|
|||
|
Note AN-780. Οι καφετιέρες είναι κυρίως ωμικά φορτία (το θερμαντικό νήμα) και όχι επαγωγικά (όπως είναι πχ ένα μοτέρ) αλλά επειδή ποιος ξέρει τι καφετιέρα
|
|||
|
έχετε\...
|
|||
|
|
|||
|
### [2.4 \'Ελεγχος με TRIAC \#2]{#ss2.4}
|
|||
|
|
|||
|
> +5VDC
|
|||
|
> | 180 180 2.2k
|
|||
|
> +---/\/\/\----+-----+ +----/\/\/-+--/\/\/\---+-------> 120V
|
|||
|
> | 1| |6 | | Hot
|
|||
|
> | +=====+ | | MT1
|
|||
|
> | | MC | TRIAC | +-+
|
|||
|
> | | 3032| Driver | G | | TRIAC
|
|||
|
> | +=====+ | /| |
|
|||
|
> \ 2| |4 | / +-+
|
|||
|
> 2N3904 |----+ | | | | MT2
|
|||
|
> / | +--------- | -------+ |
|
|||
|
> V \ | | |
|
|||
|
> | / | \ |
|
|||
|
> | \ 43 .01u --- 10k / |
|
|||
|
> | / 500V --- \ |
|
|||
|
> | | | / |
|
|||
|
> +------+ | | | Neutral
|
|||
|
> | +--------+--+---o o--> 120V
|
|||
|
> / load
|
|||
|
> >-/\/\--| 2N3904
|
|||
|
> \
|
|||
|
> V
|
|||
|
> |
|
|||
|
> ---
|
|||
|
> ///
|
|||
|
> You should change resistors accordingly for 220V.
|
|||
|
|
|||
|
Περιγραφή κυκλώματος:
|
|||
|
|
|||
|
Το MC3032 είναι ένας οπτοαπομονωτής, κατάλληλος για οδήγηση TRIAC. Η αντίσταση των 180Ω ρυθμίξει το ρεύμα για τον εκπέμπον LED του οπτοαπομονωτή. Εάν
|
|||
|
χρειάζεται, αλλάξτε την τιμή της αντίστασης για να πάρετε μία λογική τιμή ρεύματος (πχ 15 mA).
|
|||
|
|
|||
|
Δώστε σημασία στην ένδειξη 500V για τον πυκνωτή των .01μF. Σημειώσατε ότι δεν μπορείτε να ελέγξετε αυτό το κύκλωμα δίχως φορτίο. Το TRIAC δεν θα αλλάξει
|
|||
|
αγωγιμότητα παρά μόνον εάν συνδεθεί με την πηγή παροχής εναλλασόμενου ρεύματος (δίκτυο) και με το φορτίο. Προσέξτε το φορτίο να μην είστε ΕΣΕΙΣ.
|
|||
|
|
|||
|
|
|||
|
### [3. Λογισμικό]{#s3}
|
|||
|
|
|||
|
\'Εφτασεεεε\...
|
|||
|
|
|||
|
### [3.1 Πρόγραμμα σε C]{#ss3.1}
|
|||
|
|
|||
|
Φτιάξτε ένα εκτελέσιμο, που θα κάνει χοντρικά τα εξής:
|
|||
|
|
|||
|
- Θα παίρνει τα κατάλληλα δικαιώματα για την διεύθυνση I/O, με αίτηση στον πυρήνα, μέσω της ioperm: πχ ioperm( BASE, range ,1);
|
|||
|
- θα εκτελεί το κατάλληλο out request, για να επιβάλει την σωστή τάση στην παράλληλη θύρα. πχ outb( 1, BASE );
|
|||
|
- Θα περιμένει κατάλληλο χρονικό διάστημα για να ψηθεί ο καφές, ( καλόν θα είναι αυτό να το διαβάζει από την γραμμή εντολών )
|
|||
|
- στην συνέχεια θα κλείνει την καφετιέρα. outb( 0 , BASE );
|
|||
|
- Προαιρετικά, θα δίνει πίσω την θύρα με ioperm( BASE, range, 0);
|
|||
|
|
|||
|
Όπου BASE = 0x3bc για /dev/lp0, 0x378 για /dev/lp1, και 0x278 για /dev/lp2, range=8.
|
|||
|
|
|||
|
Καλόν θα είναι να το κάνετε setuid, για να μπορεί όλος ο κόσμος να φτιάχνει καφέ.
|
|||
|
|
|||
|
### [3.2 Σαν device driver]{#ss3.2}
|
|||
|
|
|||
|
Δεν έχετε παρά να διαβάσετε το kernel hacker\'s guide, να υλοποιήσετε έναν device driver (μπορεί να είναι και user space). Πλιιζ, κάνετέ το module, να μην
|
|||
|
κάνουμε compile όλη την ώρα. Μετά θα γράφετε:
|
|||
|
|
|||
|
echo baryglykos >/dev/coffee
|
|||
|
|
|||
|
Και θα έχετε ζεστό καφέ σε 1 λεπτό. Θυμηθείτε να δώσετε τα σωστά permission στο /dev/coffee, ανάλογα με το εάν θέλετε να φτιάχνει καφέ μόνο ο root ή όχι.
|
|||
|
|
|||
|
Το πλεονέκτημα αυτής της μεθόδου είναι ότι επιτρέπει να χρησιμοποιηθεί το ACK της παράλληλης θύρας, ώστε οι \"έξυπνες\" καφετιέρες να μπορούν να παράγουν
|
|||
|
interrupt.
|
|||
|
|
|||
|
Αφήνεται σαν άσκηση.
|
|||
|
|
|||
|
### [3.3 Διασύνδεση με Internet]{#ss3.3}
|
|||
|
|
|||
|
Αφού έχετε υλοποιήσει το πρόγραμμα σε C (βλέπε παραπάνω), δεν έχετε παρά να φτιάξετε ένα cgi τσι σειράς (ας είναι και β\' διαλογής), που θα καλεί το
|
|||
|
προγραμματάκι για να φτιάξει τον καφέ. Τι web server? apache φυσικά\...
|
|||
|
|
|||
|
|
|||
|
### [4. Συμπτώματα υπερδοσολογίας]{#s4}
|
|||
|
|
|||
|
- ευεξία
|
|||
|
- νευρικότητα
|
|||
|
- ταχυκαρδία ή καρδιακή αρυθμία
|
|||
|
- τέντωμα μυών
|
|||
|
- δυσκοιλιότητα :-(
|
|||
|
|
|||
|
|
|||
|
### [5. Επεκτάσεις]{#s5}
|
|||
|
|
|||
|
Αυτές είναι μερικές ιδέες που είχαμε:
|
|||
|
|
|||
|
- Με λίγη προσπάθεια η ηλεκτρονική καφετιέρα μπορεί να επεκταθεί ώστε να υποστηρίζει τοστ, παστίτσιο, κουραμπιέδες κλπ.
|
|||
|
- Cluster με 8 καφετιέρες. Αυτό θα επιτρέπει να έχετε καφέ ακόμη και όταν \"πέφτει\" η μία καφετιέρα, με αντίστοιχη μείωση της απόδοσης. Η παράλληλη
|
|||
|
ανυσματική καφετιέρα είναι στα υπ\' όψιν.
|
|||
|
- Εάν θέλουμε πλήρη αυτοματοποίηση χρειαζόμαστε επιπρόσθετα κυκλώματα και αισθητήρες, ώστε να ελέγχουμε την ροή του νερού, την θερμοκρασία του, την ποσότητα
|
|||
|
του καφέ κλπ.
|
|||
|
- Στο μέλλον σκεφτόμαστε να υλοποιήσουμε και SNMP. Α μα πια, αυτές οι καφετιέρες να μην έχουν έθερνετ ιντερφέις\...
|
|||
|
- Σειριακή καφετιέρα στα 115Kbps.
|
|||
|
|
|||
|
|
|||
|
### [6. Αναφορές]{#s6}
|
|||
|
|
|||
|
- [Χριστόφορος Κολόμβος](http://sunsite.unc.edu/expo/1492.exhibit/c-Columbus/columbus.html). Το πραγματικό του όνομα είναι Cristobal Colon. \'Εφερε πρώτος τον
|
|||
|
καφέ από την Αμερική, την οποία πρώτος (από τους Ευρωπαίους) ανακάλυψε το 1492.
|
|||
|
- <http://daisy.uwaterloo.ca/~alopez-o/caffaq.html> Το απόλυτο κείμενο σχετικά με τον καφέ. Βασικά, είναι το coffee-FAQ από το Internet.
|
|||
|
- <http://lonestar.texas.net/~andrew/f_pc_.htm> Πολλά κυκλώματα σε ASCII, ανάμεσά τους και με έλεγχο από παράλληλη
|
|||
|
- <http://shell.rmi.net/~hisys/parport.html> \'Οτι θέλατε να μάθετε για την παράλληλη θύρα και δεν τολμούσατε να ρωτήσετε.
|
|||
|
- <http://sunsite.unc.edu/LDP/HOWTO/mini/IO-Port-Programming> Προγραμματισμός I/O θυρών σε Linux.
|
|||
|
- <http://www.redhat.com:8080/HyperNews/get/khg.html> Πώς να γράψετε τους δικούς device drivers. Εμπρός λοιπόν, τι κάθεστε;
|
|||
|
- <http://www.hut.fi/Misc/Electronics/circuits/parallel_output.html> Ας το θέσουμε έτσι: εάν ασχολείστε με ηλεκτρονικά, οι σελίδες του Tomi Engdahl είναι
|
|||
|
must.
|
|||
|
- <http://www.yahoo.com/Computers_and_Internet/Internet/Entertainment/Interesting_Devices_Connected_to_the_Net/Coffee_Machines/> Καφετιέρες on-line. Δυστυχώς,
|
|||
|
δεν έχει συγκριτικά test.
|
|||
|
- <http://www.cs.su.oz.au/~bob/coffee.html> Η εν λόγω συσκευή προσφέρει μόνο cappuccino. \'Αντε αναβαθμίστε το, ρε παιδιά.
|
|||
|
- <http://einstein.et.tudelft.nl/~janssen/> Ζεστός ολλανδικός καφές
|
|||
|
- http://circe.chinalake.navy.mil/cgi-bin/spion/snapit.cgi
|
|||
|
- http://www.cl.cam.ac.uk/coffee/coffee.html
|
|||
|
- http://www.menet.umn.edu/coffeecam/
|
|||
|
|