I^2C

Uit KekBot
Versie door Bastiaan (overleg | bijdragen) op 28 nov 2012 om 09:25
(wijz) ← Oudere versie | Huidige versie (wijz) | Nieuwere versie → (wijz)
Naar navigatie springen Naar zoeken springen

Voor het communiceren tussen instrumenten kun je gebruik maken van verschillende methodes. Voor dit project is in eerste instantie gekozen voor I^2C, een protocol dat snel informatie naar veel verschillende systemen kan sturen. Na velen test opstellingen is er ook onderzoek gepleegd naar simpelere alternatieven; I^2C is veelzijdig maar vereist nogal wat kennis om het hardware matig op te zetten.

Werking

I^2C werkt op het Master - Slave principe. De Master mag data versturen en de Slaves ontvangen. Elke Slave geeft aan op welk adres hij zit(mag hij zelf bepalen) De Master kan vervolgens data versturen naar de benodigde adressen. dat kan dan per adres verschillen (dat bepaal je in de code) Voor de Energia en Arduino is er een Wire bibliotheek beschikbaar.


Aansluiting

je maakt 2 lijnen, eentje voor de adressen en eentje voor de data. een lijn sluit je parallel aan op elke poort 4 van de Arduino(1.6 op Launchpad) de andere lijn sluit je parallel aan op elke poort 5 van de Arduino(1.7 op Launchpad)

problemen die je kunt ondervinden hebben te maken met een te lange lijn, deze krijgt dan een te lage spanning. je lost dit op door een labvoeding op de lijn aan te sluiten. de instelling hiervan hangt af van de lengte van de draad. experimenteer hier voorzichtig mee!

Wire Methodes

  1. include <Wire.h> //deze zet je helemaal bovenin je code zodat je van de volgende commando's gebruik kunt maken:

Wire.begin(void of integer) //Als je tussen de haakjes niks invult ben je Master, anders vul je een getal in, dit is dan je Slave-adres

Voor het versturen van data

 Wire.beginTransmission(adres); //start een verbinding met het gekozen adres
 Wire.send(Waarde);          // verstuur je data, integers en chars werken makkelijk, met strings moet je oppassen dat deze niet te lang word.
 Wire.endTransmission();    // stop met de verbinding

Voor het ontvangen van data

Wire.receive() // Ontvang data van je data lijn