Guten Abend liebes Forum,
derzeit arbeite ich an einem Lasergame Projekt, was den Milestag Standart benutzen soll.
Dafür werden zwei byte an Daten über eine Infrarotschnittstelle Übertragen.
Hier ist die genaue Erklärung: http://www.lasertagparts.com/mtformat-2.htm.
Nun weiß ich leider nicht, wie ich diese Daten übertragen soll..
Ich habe mir bereits überlegt, sie Seriell zu übertragen, aber ich bin mir nicht sicher, wie ich das bewerkstelligen soll. Ich bin beim stöbern auf die Serial.write(); Funktion gestoßen.
Damit müßte es doch eigentlich klappen, oder?
Über eure Hilfe wäre ich sehr dankbar.
Nein, Serial.write bringt dir in diesem Fall nichts. Die genannten Frequenzen stehen in Analogie zur Pausenzeit der Puls-Längen-Modulation. Wie man schön im Diagramm sehen kann, läuft die Datenübertragung ganz trivial ab:
Übertragung des Headers: 2400 µs High-Pegel
Pause: 600 µs Low-Pegel
Datenbit: 600 µs High-Pegel für eine 0, 1200 µs-High-Pegel für eine 1
Pause: 600 µs Low-Pegel
nächstes Datenbit]
Ist schnell nachzubauen, wenn man das mit Delays löst.
Ok, das werde ich mal versuchen.
Das heißt also, ich muss erst mit einem Timer eine 38/40/56 kHz Frequenz erzeugen, also als Carrier Signal
und dann einfach an einem Pin mit digital.write() und ein paar Delays dazwischen meine Bits ausgeben?
Dann habe ich nur noch eine Frage: Wie kann ich dann für System Data Packets die Hex Codes übertragen? Also zum Beispiel 0x83?
Ok so werde ich das mal probieren..
Gibt es zufällig eine Library zum Umwandeln von Hex nach Bin?
Oder einen ganz ganz simplen Algorithmus? Im Allgemeinen kann ich das auch, bin nur ein bisschen
schreibfaul
Ok ich habe eine bessere Lösung:
Anstatt die Hex Codes zu speichern und daraus die Bin Codes berechnen zu lassen, speichere ich lieber direkt die Bin Codes
Und ich suche seit Stunden seit einer leichten Lösung...
Naja danke für eure Hilfe
Du kannst dir doch zum Beispiel ein Highbyte und ein Lowbyte als byte deklarieren und dann mit der Funktion
bitWrite() bzw. bitRead() die Bytes "manipulieren". Dann hast du ja deine beiden Datenbytes. Mit bitRead() liest du die einzelen Bits aus und schickst die dann entsprechend moduliert "weg".