Ο Δημήτρης έχει σκεφτεί να απλοποιήσει τη διαδικασία εξεύρεσης κωδικών των πλήκτρων του πληκτρολογίου για εύκολη ενσωμάτωση οποιαδήποτε τηλεχειριστηρίου κατάλληλης συμβατότητας.
Μην τον τρελάνουμε με πιέσεις, μέχρι να το ολοκληρώσει έτσι όπως το έχει φανταστεί, ως ντιούηδες, μπορούμε να βάλουμε λίγο χρόνο παραπάνω και να το κάνουμε με το χεράκι μας.
Θα γράψω μερικές αράδες για το πως παραμετροποιήθηκε το Sampling Rate Indicator στην περίπτωση του Mambo2.
Θα αναφέρω τις αλλαγές που έγιναν στον κώδικα και το λόγο έτσι ώστε να έχουμε μια πιο ολοκληρωμένη εικόνα.
Στην περίπτωση λοιπόν του Mambo2 έχουμε:
1) Si8065AA στη θέση του U1 και στη φίσα Η4 είσοδος όλων των Fx δειγματοληψίας και dsd (το σχήμα το έχει ανεβάσει ο Δημήτρης ήδη). Τροφοδοσία στη φίσα Η4 από ένα μικρό γραμμικό τροφοδοτικό 5V.
2) Si8642ΒΑ στη θέση του U2 και στη φίσα Η5, στα Pin1(Vcc), Pin6(gnd) δόθηκε τροφοδοσία 5V από την τροφοδοσία του ίδιου του μάμπο (πρέπει η τροφοδοσία dc να είναι 5V και όχι κάποια άλλη), ενώ είτε στο Pin4 είτε στο Pin5 θα ενώσετε το μεσαίο Pin του τριπλού τζάμπερ που αλλάζει το μάμπο είσοδο. Εάν θυμάστε εκεί βάζουμε ένα τζάμπερ είτε από τη μια μεριά (JP1-2) είτε από την άλλη (JP2-3) για εναλλαγή των εισόδων (αρκετοί έχουν διακόπτη στο σημείο αυτό). Εμάς μας ενδιαφέρει μόνο το μεσαίο pin το οποίο ενώνεται με το S του πολυπλέκτη. Αυτό λοιπόν το pin θα πέρνει είτε Hi τιμή δηλ. 5V και θα παίζει την i2s είσοδο είτε Lo δηλ. 0V και θα παίζει η s/pdif - τόσο απλά!
3) στη θέση του JP1_IR μπήκε ένα Vishay IR Receiver (TSOP34838), στο JP1_IR με φορά από κάτω προς τα πάνω ενώθηκαν, Vcc, gnd, Signal. To Signal προσωπικά δεν το ένωσα αλλά ένωσα το αντίστοιχο ποδαράκι του receiver απευθείας με το D12 του nano.
Στον κώδικα έγιναν οι εξής αλλαγές:
1) ενεργοποίηση του Amanero, γιατί απλά έχω amanero
#define Amanero
// #define DIYINHK_XMOS
// #define JLSounds
// #define WaveIO[/CODE]
2) ενεργοποίηση του TWOOUTPUTS επειδή χρησιμοποιώ στη θέση U2 to Si8642ΒΑ
//#define ALLINPUTS
#define TWOOUTPUTS
3) ενεργοποίηση του IRCONTROL εφόσον έχω βάλει το IR Receiver
#define IRCONTROL
4) ενεργοποίηση του U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK) επειδή έχω βάλει 1.3" oled οθόνη με SH1106, αντί του SSD1306 που έχουν οι 0,96"
//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // 0.96" OLED Display using I2C which does not send ACK
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI
//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
5) εισαγωγή του κατάλληλου κωδικού για αντιστοίχιση του τηλεχειριστηρίου μου - ΠΡΟΣΟΧΗ = ότι έχω υπογραμμίσει είναι οι κωδικοί που αντιστοιχούν στο on/off της οθόνης, στο πλήκτρο για spdif (source 1) και στο πλήκτρο για usb (source 2), το 0x υποχρεωτικά μπροστά.
#define POWER_CODE 0xA10CA00F // Code for power on/off
#define SOURCE1_CODE 0xA10C140B // Code for source 1
#define SOURCE2_CODE 0xA10C940B // Code for source 2
6) εισαγωγή του Pin που ενώνεται το signal του IR Receiver, στην περίπτωσή μας του D12 θα συμπληρώσετε την τιμή 12.
int RECV_PIN = 12; // IR Receiver input pin.
7) αλλαγή του 32 -> 0 εκεί που περιγράφει ο Δημήτρης ποιες δειγματοληψίες θα δείχνει η οθόνη. Έτσι ώστε να μην έχω ένδειξη 32KHz όταν δεν υπάρχει σήμα στην είσοδο usb, προτίμησα να γράφει 0
οπότε αντί του :
if (digitalRead(I1) == false && digitalRead(I2) == false && digitalRead(I3) == false && digitalRead(I4) == false)
{
SR = 32;
να γραφεί SR = 0
Πως βρίσκουμε τον κωδικό σε κάθε πλήκτρο του τηλεχειριστηρίου μας που θέλουμε να βάλουμε για power on/off της οθόνης και για την εναλλαγή των εισόδων μας (spdif<->usb)
Έχουμε ανοίξει το τελευταίο fw του Δημήτρη και στη κονσόλα του Arduino πάμε Tools->Serial Monitor.
Μας ανοίγει ένα παράθυρο, όπου κάθε φορά που πατάμε το πλήκτρο που μας ενδιαφέρει στο τηλεχειριστήριο μας, αυτό μας εμφανίζει τον 16δικό κωδικό που αντιστοιχεί στο στιγμιαίο πάτημα
Π.χ A10C140B
Θα παρατηρήσουμε ότι εάν πατήσουμε συνεχόμενα το ίδιο πλήκτρο θα εμφανίσει μια αλληλουχία 16δικών ψηφίων, εμάς πάντως μας ενδιαφέρει πάντα το πρώτο.
Καταγράφουμε αυτούς τους κωδικούς για τα 3 ενδιαφερόμενα πλήκτρα και τα εισαγάγουμε στα αντίσχτοιχα πεδία του Κώδικα πάντα με 0x μπροστά (βλέπε παραπάνω παράδειγμα 5 στον κώδικα).
Ίσως η διαδικασία σας φαίνεται βουνό, αλλά θα δείτε ότι είναι παιχνιδάκι μόλις την κατανοήσετε
Σημ.1 = μη ξεχνάτε ότι το σημείο τσεκαρίσματος πάνω αριστερά στην κονσόλα του Arduino, κάνει έλεγχο της σωστής εισαγωγής των εντολών στον κώδικα
Σημ.2 = μη ξεχνάτε ότι το βελάκι που δείχνει δεξιά, φορτώνει τον κώδικα που έχετε φορτώσει στην κονσόλα στο nano με την προυπόθεση ότι το έχετε συνδέσει σωστά στον υπολογιστή σας.