Το προφίλ μας στο Google Plus
1

Arduino – the way of the hacker, part 5 of k, όπου k = *{$#

Τι θα λέγατε για ένα Larson scanner με δέκα LED; Μιλάμε για μια συστοιχία LED, τα οποία αναβοσβήνουν με τέτοιον τρόπο ώστε να θυμίζουν το μάτι ενός Cylon — ή τέλος πάντων το φωτεινό σηματάκι στην πρόσοψη του KITT. Όπως αντιλαμβάνεστε, θα εγκαταλείψουμε προσωρινά το RGB matrix και τους shift register για ν’ ασχοληθούμε μ’ ένα απλούστερο κύκλωμα. Στόχος μας είναι η γνωριμία με την τεχνική PWM και η υλοποίησή της σε software. Νομίζετε ότι κάτι τέτοιο είναι περιττό; Τι θα λέγατε αν δημιουργούσαμε περισσότερα κανάλια PWM, από αυτά που προσφέρει το hardware του Arduino; Mε την τεχνογνωσία που θ’ αποκτήσουμε θα μπορούμε αργότερα να φτιάξουμε παιχνίδια για το RGB matrix με εκατομμύρια *κυριολεκτικά* χρώματα! Εξάλλου, θα βρούμε και μια πρώτης τάξεως αφορμή, για να παίξουμε λίγο παραπάνω με τους timers και τα interrupts…

deltaHacker Απριλίου (τεύχος 007) | Arduino — The way of the hacker, part 5/k

Η τελευταία μας κατασκευή στηριζόταν σε ένα RGB matrix. Θεωρητικά, κάθε κουκκίδα σε μια τέτοια διάταξη μπορεί να προβάλει *οποιαδήποτε* απόχρωση. Ωστόσο, το frame buffer του προγράμματός μας διατηρούσε ένα μόλις bit για κάθε χρωματική συνιστώσα (Red, Green και Blue) κάθε κουκκίδας. Με άλλα λόγια, για κάθε κουκκίδα το πρόγραμμα διατηρούσε 3bit πληροφορίας. Επομένως το πρόγραμμα διέθετε μια παλέτα των οκτώ μόλις χρωμάτων (βάθος χρώματος 3bit, 2^3=8 διαφορετικά χρώματα). Τα οκτώ χρώματα μπορεί να ακούγονται αρκετά, αλλά η απουσία των ενδιάμεσων αποχρώσεων καθιστά αδύνατη την υλοποίηση πολλών εφέ (fade-in, fade-out, morphing, κ.λπ). Για να ξεπεράσουμε αυτόν τον περιορισμό θα μπορούσαμε να κατασκευάσουμε ένα μεγαλύτερο frame buffer, το οποίο θα διατηρούσε περισσότερα bit πληροφορίας για το χρώμα κάθε κουκκίδας. Όμως το αυξημένο πλήθος των bit δεν θα επαρκούσε. Θα χρειαζόμασταν κι έναν ειδικό μηχανισμό, ο οποίος θα μπορούσε να ρυθμίζει την ένταση κάθε χρώματος και να δημιουργεί τελικά τις επιθυμητές αποχρώσεις. Πώς όμως μπορεί να γίνει κάτι τέτοιο; Πώς μπορούμε να μεταβάλλουμε τη φωτεινότητα ενός LED, από τον κώδικα; Είμαστε σίγουροι ότι σκέφτεστε το PWM και τη σχετική συνάρτηση του Arduino, την analogWrite. Καλά κάνετε. Ωστόσο το Arduino διαθέτει μόνο έξι κανάλια PWM, ενώ τα matrix που γνωρίσαμε διαθέτουν γραμμές και στήλες των οκτώ LED. Επομένως, για την οδήγηση ενός τέτοιου matrix θα χρειαζόμασταν τουλάχιστον οκτώ κανάλια PWM. Φυσικά, θα χρειαζόμασταν κι ένα εντελώς διαφορετικό κύκλωμα, σε σχέση με όσα είδαμε. Θα χρειαζόμασταν ένα κύκλωμα στο οποίο το matrix θα συνδεόταν απευθείας πάνω στους ακροδέκτες του Arduino, ώστε να είναι δυνατή η χρήση των ενσωματωμένων καναλιών PWM. Όπως καταλαβαίνετε, αυτή η “λύση” είναι γεμάτη προβλήματα και σύντομα οδηγεί σε νέο αδιέξοδο. Αναρωτιέστε τι θα μπορούσαμε να κάνουμε για όλα αυτά; Η λύση, θεωρητικά τουλάχιστον, είναι πολύ απλή: Θα κατασκευάσουμε σε software το δικό μας σύστημα PWM, το οποίο θα διαθέτει οκτώ κανάλια και θα μπορεί να ρυθμίζει την τάση σε οποιουσδήποτε οκτώ ακροδέκτες — ακόμα και μέσω του PSI και μερικών shift registers!

Διαβάστε όλο το άρθρο στο deltaHacker Απριλίου (τεύχος 007). Όλες τις πληροφορίες για τις συνδρομές στο deltaHacker, το μοναδικό μηνιαίο περιοδικό με θεματολογία ethical hacking και security που δεν κυκλοφορεί στα περίπτερα και απευθύνεται σε όλους, θα τις βρείτε εδώ ακριβώς. Για παραγγελίες μεμονωμένων τευχών ή συνδρομών συμπληρώστε τη σχετική φόρμα.

Σημείωση: Οι συνδρομές μπορούν να ξεκινούν από όποιο τεύχος επιθυμείτε, αρκεί να υπάρχει σε stock.

One Response to “Arduino – the way of the hacker, part 5 of k, όπου k = *{$#”

  1. giwrg98 | 29/04/2012 at 21:15

    Για Arduino, υπάρχει κάνα link με LED από το ίντερνετ; Δεν ξέρω ποιο από όλα είναι το σωστό!

Leave a Reply

You must be logged in to post a comment.

Σύνδεση

Αρχείο δημοσιεύσεων