Stap 5: Serieel Protocol
Serieel Protocol
Voordat we in codering om het even wat moeten we beslissen over wat voor soort serieel protocol die we willen gebruiken. Het is fijn om een tekst zonder opmaak gebruikt protocol waar zenden wij platte tekst heen en weer tussen onze TinyDuino en de computer maar computers native Engels niet begrijpen en de code kan het behoorlijk gecompliceerd voor het verwerken van meer geavanceerde tekst zonder opmaak overbrengingen.
Omwille van de eenvoudige code en ultra snelle seriële transmissie wij iets moeten gebruiken de arduino en de computer zeer vloeiend spreken, namelijk raw bytes. Een byte is 8 bits, en aangezien seriële communicatie een stroom van bits is, bytes zeer efficiënt kunnen worden verzonden via de verbinding.
Ter vergelijking als we een bericht met onbewerkte tekst van gebruikten "Motor besturingsbericht, Motor1: 255, Motor2: 255" we hebben 47 bytes aan gegevens overgebracht, 44 van die bytes niet alle nuttige informatie bevatten en gewoon seriële tijd in beslag nemen. Dit is niet een groot probleem als u werkt met een hoge baud-rate zoals 9600.
Echter, als u gebruikmaakt van een langzame baud-rate, zeggen 50 (voor sommige hoogrenderende-apparaat), het verschil tussen 47 bytes en 3 is extreem, bijna een verschil van 93%. In beide gevallen, omwille van de eenvoud en efficiëntie moeten we vasthouden aan het verzenden van onbewerkte gegevens in plaats van tekst zonder opmaak.
Een eenvoudig protocol dat we kunnen gebruiken is 3 bytes lang, met 3 stuks van informatie. Aangezien wij onze bytes worden verzonden als een ééndimensionale matrix kunnen we een lijst 3 byte gebruiken om onze boodschap visualiseren:
- Berichttype (byte 0)
- Motor 1 snelheid (1 byte)
- Motor 2 snelheid (byte 2)
De laatste twee bytes zijn duidelijk, maar je kunt je afvragen waarom we een "Berichttype" byte wordt opgenomen. Dit is om twee redenen, het stelt ons in staat zowel onze protocol later bij meer opdrachten voor extra functies omvatten, alsmede het controleren of dat onze boodschap geldig is en niet een fragment van een voorgaand bericht uit te breiden.