Sie sind auf Seite 1von 28

RP6 CONTROL M32

Erweiterungsmodul

RP6-M32
2007 ARE Engineering www!"re##!$om

RP6 CONTROL M32


Bedienungsanleitung
- Deutsch (German) Version RP6-M32-DE-20070521

WICHTIGE INFORMATION! Bitte unbedingt lesen!


Bevor Sie dieses RP Er!eiterungs"odul in Betrieb ne#"en$ lesen Sie bitte diese Anleitung %N& die RP ROBOT S'STEM Bedienungs(nleitu) nug vollst*ndig dur+#! Sie erl*utert I#nen die ,orre,te -er!endung und !eist (u. "/gli+#e Ge.(#ren #in! Weiter#in ent#*lt sie !i+#tige In.or"(tionen$ die .0r viele An!ender ,eines!egs o..ensi+#tli+# sein d0r.ten1 &ie RP CONTRO2 M34 Anleitung ist nur eine Erg*n5ung! Bei Ni+#tbe(+#tung dieser Anleitung und der RP ROBOT S'STEM An) leitung erlis+#t 6egli+#er G(r(ntie(ns7ru+#! Weiter#in 0berni""t AR) E88 Engineering ,einerlei H(.tung .0r S+#*den 6egli+#er Art$ die (us Ni+#tbe(+#tung dieser Anleitung resultieren! Bitte be(+#ten Sie vor (lle" den Abs+#nitt 9Si+#er#eits#in!eise9 in der RP ROBOT S'STEM Bedienungs(nleitung!

%m&ressum 2007 ARE Nervistraat 16 8013 RS Zwolle The Netherlands Tel.: +31 (0 38 !"! #0#8 $a%.: +31 (0 38 !"# !!8# &R'6 Ro(ot S)ste*& ist eingetragenes +a, ren-ei.hen von /R011 0ngineering. /lle anderen +aren-ei.hen stehen i* Besitihrer 2eweiligen 0igent3*er. Engineering

4iese Bedienungsanleitung ist urhe(erre.ht, li.h ges.h3t-t. 4er 5nhalt dar6 ohne vorheri, ge s.hri6tli.he Zusti**ung des 7erausge, (ers au.h ni.ht teilweise 8o9iert oder 3(er, no**en werden: n erun!en an Pro u"ts#e$i%i"ationen un &ie%erum%an! 'or(eha)ten* Der +nha)t ieser ,e ienun!san)eitun! "ann -e er$eit ohne 'orheri!e .n"/n i!un! !e0nert 1er en* 2eue Versionen ieser .n)eitun! erha)ten 3ie "osten)os au% htt#455111*are66*com5

+ir sind ni.ht verantwortli.h 63r den 5nhalt von e%ternen +e(seiten; au6 die in dieser /nlei, tung verlin8t wird:

'inweise (ur )es$*r+n,ten -"r"ntie und '".tung


4ie <ew=hrleistung von /R011 0ngineering (es.hr=n8t si.h au6 /ustaus.h oder Re9aratur des Ro(oters und seines Zu(eh>rs innerhal( der geset-li.hen <ew=hrleistungs6rist (ei na.hweisli.hen 'rodu8tions6ehlern; wie *e.hanis.her Bes.h=digung und 6ehlender oder 6als.her Best3.8ung ele8tronis.her Bauteile; ausgeno**en aller 3(er Ste.8ver(inder?So, .8el anges.hlossenen @o*9onenten. 0s (esteht 8eine 7a6t(ar8eit 63r S.h=den; die un*ittel(ar dur.h; oder in $olge der /nwen, dung des Ro(oters entstehen. An(er3hrt davon (lei(en /ns9r3.he; die au6 una(ding(aren geset-li.hen Bors.hri6ten -ur 'rodu8tha6tung (eruhen. So(ald Sie irreversi(le Ber=nderungen (-.B. /nl>ten von weiteren Bauteilen; Bohren von C>.hern et.. a* Ro(oter oder seine* Zu(eh>r vorneh*en oder der Ro(oter S.haden in, 6olge von Ni.ht(ea.htung dieser /nleitung ni**t; erlis.ht 2egli.her <arantieans9ru.h: 0s 8ann ni.ht garantiert werden; dass die *itgelie6erte So6tware individuellen /ns9r3.hen gen3gt oder 8o*9lett unter(re.hungs und 6ehler6rei ar(eiten 8ann. +eiterhin ist die So6tware (elie(ig ver=nder(ar und wird vo* /nwender in das <er=t gela, den. 4aher tr=gt der /nwender das gesa*te Risi8o (e-3gli.h der Dualit=t und der Ceis, tungs6=hig8eit des <er=tes in8lusive aller So6tware. /R011 0ngineering garantiert die $un8tionalit=t der *itgelie6erten /99li8ations(eis9iele un, ter 0inhaltung der in den te.hnis.hen 4aten s9e-i6i-ierten Bedingungen. Sollte si.h der Ro, (oter oder die 'E,So6tware dar3(er hinaus als 6ehlerha6t oder un-urei.hend erweisen; so 3(erni**t der @unde alle entstehenden @osten 63r Servi.e; Re9aratur oder @orre8tur. Bitte (ea.hten Sie au.h die ents9re.henden Ci-en-verein(arungen au6 der E4,RFG:

/0m)ole
%m '"nd)u$* werden .olgende /0m)ole 1erwendet2

3"s 4A$*tung54 /0m)ol weist "u. )esonders wi$*tige A)s$*nitte *in6 die sorg.+ltig )e"$*tet werden m7ssen! 8enn /ie *ier 9e*ler m"$*en6 ,:nnte dies gg.! (ur ;erst:rung des Ro)oters oder seinem ;u)e*:r .7*ren und sog"r %*re eigene oder die -esund*eit "nderer ge.+*rden5 3"s 4%n.orm"tion4 /0m)ol weist "u. A)s$*nitte *in6 die n7t(li$*e Ti&&s und Tri$,s oder 'intergrundin.orm"tionen ent*"lten! 'ier ist es ni$*t immer essentiell "lles (u 1erste*en6 ")er meist se*r n7t(li$*!

%n*"lts1er(ei$*nis
1. 4as R'6 EFNTRFC G3# 0rweiterungs*odul ...................................... " 1.1. Te.hnis.her Su99ort ................................................................ 6 1.#. Cie6eru*6ang .......................................................................... 6 1.3. $eatures und te.hnis.he 4aten ................................................. H #. Gontage des 0rweiterungs*oduls .................................................... I 3. R'6 EFNTRFC Ci(rar) .................................................................. 11 3.1.1. Gi8ro.ontroller initialisieren................................................ 1# 3.1.#. Status C04s..................................................................... 1# 3.1.3. Taster............................................................................. 13 3.1.!. Bee9er............................................................................ 13 3.1.". Gi8ro6onsensor................................................................. 1! 3.1.6. CE,4is9la)....................................................................... 1! 3.1.H. S'5 Bus und S'5 00'RFG................................................... 16 3.1.8. /4Es............................................................................... 18 3.1.I. 5?F 'orts......................................................................... 18 !. Beis9iel9rogra**e ...................................................................... #0 /N7/N< ....................................................................................... #H / J /ns.hluss(elegungen................................................................#H

RP6 RO<OT /=/TEM - >! 3"s RP6 CONTROL M32 Erweiterungsmodul

>! 3"s RP6 CONTROL M32 Erweiterungsmodul


Git de* R'6 EFNTRFC G3# (oder 8ur- KR'6,G3#L 0rweiterungs*odul 8>nnen Sie de* Ro(oter einen -weiten /t*el /TG0</3# Gi8ro.ontroller hin-u63gen; der 2edo.h do99elt so s.hnell geta8tet ist wie der Eontroller au6 de* Gain(oard. /u.h sonst steht de* /nwender au6 de* R'6,G3# *ehr Re.hen-eit -ur Ber63gung; da der Eontroller ni.ht au.h no.h *it Gotorregelung; /ES; 5REFGG; et.. (es.h=6tigt ist. Git de* e%ternen 3#@B S'5 00'RFG (e6indet si.h ein sehr o6t wieder(es.hrei((arer (1 Gio. Z)8len $ests9ei.her au6 de* Godul; den *an (eis9ielsweise -u* 4atenlog, gen oder als 'rogra**s9ei.her 63r B)te.ode 5nter9reter verwenden 8ann (wie -.B. die NanoBG 63r Mava . F9tional 8ann *an sogar no.h einen 8 9oligen 45' So.8el au6 das Godul l>ten und ein -weites 00'RFG i* 45' 8 <eh=use hin-u63gen. +eitere interessante G>gli.h8eiten (ieten die 0inga(etaster; die C04s; der 'ie-o 'ie9, ser und das o9tional erh=ltli.he CE,4is9la). 4a*it 8ann *an den Ro(oter au.h dire8t (edienen und -.B. ein 8leines /uswahl*en3 9rogra**ieren u* vers.hiedene 'ro, gra**e 3(er die Taster -u starten J und nat3rli.h au.h Gesswerte und Status*el, dungen an-eigen. 4er 'ie9ser 8ann vers.hiedene T>ne er-eugen und -.B. eine Begr3Nungs*elodie a(s9ielen wenn das 'rogra** gestartet wird oder (ei niedriger /88us9annung warnen. 0igene S.haltungen au6 den Co.hraster 0rweiterungs*odulen 8ann *an *it den 1! 6reien 5?F 'orts ansteuern; die au6 -wei 10 9olige +annenste.8er herausge63hrt sind. Bon den 1! 5?Fs sind 6 als /nalog?4igial +andler @an=le verwend(ar. /(gerundet wird die /usstattung des Goduls *it de* Gi8ro6onsensor; der au.h s.hon au6 de* alten EER'" vorhanden war. 4a*it 8ann *an den R'6 (eis9ielsweise starten inde* *an in die 7=nde 8lats.ht oder =hnli.he 4inge. 4ie S.haltung ist als K'ea8 4e, te8torL ausgelegt; es werden also nur die Ga%i*alwerte er*ittelt. So 8ann die Caut, st=r8e von A*ge(ungsger=us.hen gro( ge*essen und ents9re.hend darau6 reagiert werden. (das 8la99t nat3rli.h nur dann gut; wenn die Gotoren ni.ht lau6en weil 3(er @>r9ers.hall vo* Ro(oter sel(st er-eugte <er=us.he (esonders gut vo* Gi8ro6on de, te8tiert werden... <e1or /ie mit dem RP6-M32 loslegen; sollten Sie si.h un(edingt *it de* Ro(oter an si.h vertraut *a.hen und alle Beis9iel9rogra**e des Ro(oters F7N0 *ontiertes R'6,G3# 0rweiterungs*odul aus9ro(ieren: 4iese /nleitung versteht si.h als 8leine 0r, g=n-ung -ur groNen R'6 Bedienungsanleitung. Cesen Sie diese au6 2eden $all (evor Sie *it de* R'6,G3# an6angen: Ein wi$*tiger 'inweis .7r An.+nger2 $3r das R'6,G3# ges.hrie(ene 'rogra**e lau6en nat3rli.h N5E7T 8orre8t au6 de* Gi8ro.ontroller der Basiseinheit und u*ge, 8ehrt (8o*9lett andere 'in(elegung und Ta8t6reOuen- : AC'T?N-2 8enn /ie ein Progr"mm in den ."ls$*en Controller l"den6 ,:nnte dieser oder die gesteuerten /$*"ltungen dur$*"us )es$*+digt werden5 <eis&ielsweise wenn ein %@O Pin norm"lerweise "ls Eing"ng 1erwendet6 im Progr"mm .7r den ."ls$*en Controller ")er "ls Ausg"ng ges$*"ltet und d"nn "u.grund der "nges$*lossenen /$*"ltung 7)erl"stet wird5
,",

RP6 RO<OT /=/TEM - >! 3"s RP6 CONTROL M32 Erweiterungsmodul

Nor*alerweise 9assiert ni.hts s.hli**es wenn Sie si.h *al vertun sollten; a(er es 8ann hier 63r ni.hts garantiert werden: 4er R'6Coader 8ann ni.ht unters.heiden 63r wel.hen Eontroller die 'rogra**e (esti**t sind; da die 7e%6iles alle glei.h au6ge(aut sind. 0r verhindert also ni.ht; dass Sie 'rogra**e in den 6als.hen Eontroller laden: Nut-en Sie die $un8tion des R'6Coaders; vers.hiedene @ategorien an-ulegen: $3r 2e, des 0rweiterungs*odul eine eigene @ategorie ...

>!>! Te$*nis$*er /u&&ort


Bei $ragen oder 'ro(le*en errei.hen Sie unser Su99ort Tea* wie 6olgt 3(er das 5nternet (Bevor Sie uns 8onta8tieren lesen /ie ")er )itte diese <edienungs"nleitung 1ollst+ndig dur$*5 0r6ahrungsge*=N erledigen si.h viele $ragen so (ereits von sel(st: : , 3(er unser $oru*: http://www.arexx.com/forum/ , 9er 0,Gail: info@arexx.nl Ansere 'ostans.hri6t 6inden Sie i* 5*9ressu* dieses 7and(u.hs. /8tu, ellere @onta8tin6or*ation; So6twareu9dates und weitere 5n6or*ationen gi(t es au6 unserer 7o*e9age:

http://www.arexx.com/
und au6 der 7o*e9age des Ro(oters:

http://www.arexx.com/rp6
/u.h de* Ro(oternet-; der gr>Nten deuts.hs9ra.higen Ro(oti8 Eo*, *unit); 8ann *an au6 2eden $all *al einen Besu.h a(statten:

http://www.roboternetz.de/

>!2! Lie.erum."ng
$olgende 4inge sollten Sie in 5hrer R'6 EFNTRFC G3# 'a.8ung vor6inden:

$ertig au6ge(autes R'6,G3# Godul ! St3.8 #"** G3 4istan-(ol-en ! St3.8 G3 S.hrau(en ! St3.8 G3 Guttern # St3.8 1! 9ol $la.h(and8a(el

4ie So6tware und die '4$ /nleitung (e6inden si.h au6 der R'6 E4,RFG. /8tualisierte Bersionen der So6tware und dieser /nleitung gi(t es au6 unserer 7o*e9age:

,6,

RP6 RO<OT /=/TEM - >! 3"s RP6 CONTROL M32 Erweiterungsmodul

>!3! 9e"tures und te$*nis$*e 3"ten


4ieser /(s.hnitt gi(t einen P(er(li.8 dar3(er; was das R'6 EFNTRFC G3# -u (ieten hat und dient glei.h-eitig der 0in63hrung einiger Begri66e und Be-ei.hnungen von @o*9onenten des Goduls.

Fe(tures$ :o"7onenten und te+#nis+#e &(ten des RP

CONTRO2 M34;

Leistungs.+*iger Atmel ATME-A32 A-<it Mi,ro$ontroller <es.hwindig8eit 16 G5'S (Q16 Gillionen 5nstru8tionen 9ro Se8unde (ei 16G7Ta8t; also do99elt so s.hnell geta8tet wie der Eontroller au6 de* R'6 Gain(oard: S9ei.her: 3#@B $lash RFG; #@B SR/G; 1@B 00'RFG $rei in E 9rogra**ier(ar (*it +in/BR ? avr,g.. : ... und vieles *ehr (s. 4aten(latt : E#ternes 32B< /P% EEPROM Sehr s.hnelles S'5 5nter6a.e (8G7- Ta8trate Mede S9ei.her-elle *indestens 1.000.000 *al wieder(es.hrei((ar ... *ehr te.hnis.he 5n6os i* 4aten(latt au6 der E4,RFG (/T#"#"6/ : 5deal 63r 4atenlogging oder als S9ei.her 63r B)te.ode 5nter9reter (-.B. eine Mava BG wie die NanoBG: htt9:??www.har(au*.org?till?nanov*? . /llerdings *3sste diese erst no.h ange9asst werden da*it au.h das e%terne 00'RFG verwendet wird... %CC-<us Erweiterungs"ns$*l7sse @ann (elie(ige 5RE Bus Slaves ansteuern. 4er G0</3# au6 de* Godul 8ann als Gaster oder Slave verwendet werden. Sinn, vollerweise sollte er als Gaster verwendet werden und den Ro(oter 8o*9lett steu, ern (der Eontroller au6 de* Gain(oard 3(erni**t allerdings die Regelung der Gotorges.hwindig8eit; /ES; 5REFGG; /88u P(erwa.hung et.. sel(stst=ndig und entlastet so den Eontroller au6 de* 0rweiterungs*odul . Mi,ro.onsensor u* <er=us.he -u dete8tieren; -.B. in die 7=nde 8lats.hen o.=. Pie(o <ee&er u* ein6a.he T>ne und Gelodien -u er-eugen Signalge(er -.B. u* $ehler oder Statuswe.hsel -u *elden D /t"tus LE3s E Eing")et"ster

,H,

RP6 RO<OT /=/TEM - >! 3"s RP6 CONTROL M32 Erweiterungsmodul

LC-3is&l"0 Port Zu* /ns.hluss eines 16%# Zei.hen CE,4is9la)s. /u.h andere CE,4is9la)s lassen si.h hier ans.hliNen; -.B. 16%! o.=.; allerdings lassen si.h diese dann nur *it -wei 4istan-(ol-en (e6estigen und 8>nnten an einer Seite 3(erstehen... /* (esten vor de* @au6 genau aus*essen und 9assendes Gontage*aterial *it(estellen: /us, serde* *3ssen Sie (ei anderen 4is9la) $or*aten als 16%# evtl. ein 9aar an9as, sungen in der Ci(rar) vorneh*en; da*it es 8orre8t 6un8tioniert (7au9ts=.hli.h die 5nitialisierung des 4is9la)s und evtl. die Eursor 'ositionierung . 4ie Beis9iel9ro, gra**e sind alle au6 ein 16%# Zei.hen 4is9la) -uges.hnitten. 4as l=sst si.h a(er lei.ht =ndern. 4as 4is9la) 8ann -.B. Te%t*eldungen?Gen3s; 'rogra**-ust=nde werte an-eigen. oder Sensor,

>D .reie %@O Ports (ur Ansteuerung eigener /$*"ltungen und /ensoren 6 davon sind als An"log@3igit"l 8"ndler FA3CG B"n+le verwend(ar <is (u 3 e#terne %nterru&ts "m <?/ Ans$*luss l"ssen si$* 1erwenden! Ans$*luss .7r d"s ?/< PC %nter."$e 63r den 'rogra*u9load 4er 'rogra**u9load l=u6t genau wie (ei* Ro(oter sel(st; s.hnell und ein6a.h 3(er das ASB 5nter6a.e und die 8o*6orta(le R'6Coader So6tware.

+eiterhin werden wie (ei* Ro(oter einige E Beis9iel9rogra**e sowie eine $un8tions, (i(liothe8 *itgelie6ert; wel.he die 'rogra**ierung star8 erlei.htert. /u6 der +e(site -u* Ro(oter werden de*n=.hst evtl. weitere 'rogra**e und A9da, tes 63r den Ro(oter und seine 0rweiterungs*odule -ur Ber63gung stehen. Sie 8>nnen nat3rli.h au.h gerne 5hre eigenen 'rogra**e 3(er das 5nternet *it anderen R'6 /nwendern austaus.hen: 4ie R'6EontrolCi(rar) und die Beis9iel9rogra**e stehen unter der F9en Sour.e Ci-en- <'C:

,8,

RP6 RO<OT /=/TEM - 2! Mont"ge des Erweiterungsmoduls

2! Mont"ge des Erweiterungsmoduls


+ie Sie das Godul au6 de* Ro(oter (e6estigen; h=ngt nat3rli.h davon a(; wel.he anderen 0rweiterungs*odule Sie evtl. (ereits au6 de* Ro(oter *ontiert ha(en. A* das Godul au6 de* Ro(oter -u *ontieren; *3ssen Sie -un=.hst die vier S.hrau(en vo* Gain(oard l>sen. 0ventuell 8>nnen Sie au.h den 8leinen Ste.8er der Bu*9er9latine vorsi.htig l>sen; da*it Sie das Gain(oard 8o*, 9lett anhe(en 8>nnen. 4as ist a(er ni.ht un(edingt er6orderli.h wenn Sie *it den $ingern au.h so unter das Gain(oard grei6en 8>nnen u* die 4i, stan-(ol-en *it den G3 Guttern 6est, -us.hrau(en. A$*tung2 Bei* wieder /nste.8en des @a(els der Bu*9er9latine un(edingt *it eine* $inger hinter der Sensor9la, tine gegenhalten da*it diese ni.ht -u star8 na.h hinten gedr3.8t wird: /lternativ 8ann *an au.h die -wei S.hrau(en der Bu*9er9latine l>sen und das @a(el dran lassen... 4ann 8>nnen Sie die vier #"** G3 4istan-(ol-en na.heinan, der *it G3 Guttern in den Be6estigungsl>.hern i* Gain(oard 6ests.hrau(en wie au6 de* $oto ge-eigt. /u6 de* Bild o(en sind alle 8 4istan-(ol-en anges.hrau(t; au.h die vo* Co.hraster 0rweiterungs*odul: /ns.hlieNend set-ten Sie das 0rweiterungs*odul o(en au6 die 4istan-(ol-en und S.hrau(en es *it den vier G3 S.hrau(en 6est. Met-t *3ssen no.h die -wei $la.h(and8a(el angeste.8t werden J 6ertig. +ir e*96ehlen das R'6 EFNTRFC G3# au6 de* hinteren 0rweiterungssta9el au6 de* Ro(oter -u *ontieren J als o(erstes Go, dul; da*it die Taster und gg6. das 4is9la) -ug=ngli.h (lei(en. 4ann sind au.h (eide 'rogra**ierans.hl3sse au6 der glei.hen Seite des Ro(oters -ug=ngli.h. Borne 8>nnen Sie das (ereits i* Cie6eru*6ang des Ro(oters enthaltene 0%9eri*entier, *odul an(ringen (s. $oto au6 der n=.hs, ten Seite 63r eine Beis9iel8on6iguration .

,I,

RP6 RO<OT /=/TEM - 2! Mont"ge des Erweiterungsmoduls

+enn Sie -us=t-li.h das 16%# Zei.hen CE,4is9la) ge8au6t ha(en; sollten Sie es BFR der Gontage au6 de* Ro(oter an das 0rweiterungs*odul ans.hlieNen und *ontieren. 4as 1! 9olige $la.h(and8a(el des 4is9la)s ist sehr 6le%i(el und 8ann 9ro(le*los ge6al, tet werden. 4a*it das @a(el gut unter das 4is9la) 9asst; sollten Sie es 63r das R'6 EFNTRFC G3# 0rweiterungs*odul in etwa wie au6 de* $oto ge-eigt 6alten. 4ann 8ann das 4is9la) -.B. *it #0** oder #"** 4istan-(ol-en; 9assenden Guttern und S.hrau(en a* 0rweiterungs, *odul (e6estigt werden. Sie 8>nnen au.h ein (elie(iges anderes Te%t CE,4is9la) *it 74!!H80 8o*9ati, (le* Eontroller verwenden. Sie *3ssen da-u nur ein eigenes @a(el an das 4is9la) anl>ten. Da(ei (itte un(e in!t au% ie richti!e .nsch)uss(e)e!un! achten7 0s werden ni.ht un(edingt ! 4istan-(ol-en (en>tigt wie au6 de* $oto: Zwei St3.8 ((eide vorne o er hinten rei.hen (ereits aus; u* das 4is9la) -u (e6estigen. 8i##4 Es 1er en $1ar "eine $us0t$)ichen Distan$(o)$en %/r ie Dis#)a9 Monta!e mit!e)ie%ert: a(er (ei -e em Er1eiterun!smo u) sin 'ier Distan$(o)$en: Muttern un 3chrau(en in")usi'e* 2orma)er1eise (e%esti!t man ein Er1eiterun!smo u) 1ie au% en ,i) ern !e$eu!t mit ; Distan$(o)$en* Es reichen a(er auch rei < $1ei 'orne un einer hinten in er Mitte7 Mit E6#erimentiermo u) un RP6-M32 h0tten 3ie so $1ei 25mm Distan$(o)$en: 3chrau(en un Muttern %/r as Dis#)a9 /(ri!*** $ertig au6 de* Ro(oter *ontiert; 8>nnte das -.B. wie 6olgt aussehen:

4ie -wei 10 9oligen 0rweiterungsste.8er *it den 6reien 5?F 'orts 8ann *an nun ein, 6a.h 3(er 8leine 10 9olige $la.h(and8a(el *it de* 0rweiterungs*odul ver(inden und die 5?Fs und /4Es dort -ur /uswertung von Sensoren o.=. verwenden. 4as geht na, t3rli.h au.h *it Godulen die au6 anderen 0(enen *ontiert sind J die $la.h(and8a(el sollten gut dur.h die C3.8e in der Gitte -wis.hen den -wei Godulsta9eln 9assen.
, 10 ,

RP6 RO<OT /=/TEM - 2! Mont"ge des Erweiterungsmoduls

Met-t 8>nnen Sie 8ur- einen 8leinen 9un,tionstest dur.h63hren: Zun=.hst das a* 'E anges.hlossene ASB 5nter6a.e 3(er das 10 9olige $la.h(and8a(el *it de* 'RF<?A/RT /ns.hluss au6 de* R'6,G3# ver(inden und den R'6Coader star, ten. 4ann den Ro(oter ans.halten J au6 de* CE,4is9la) sollte eine Te%tna.hri.ht er, s.heinen und eine der C04s sollte (lin8en. 7at das ge8la99t; 8li.8en Sie i* R'6Coader (itte au6 Ber(inden J es sollte in der Status(o% eine Geldung ers.heinen KEonne.ted to R'6 EontrolL. +enn au.h das ge8la99t hat; 8>nnen Sie na.hde* Sie die /nleitung -uende gelesen ha(en *it den Beis9iel9rogra** an6angen: +enn das 4is9la) ni.hts oder nur -wei Reihen 8o*9lett dun8le @=st.hen an-eigen sollte; a(er die C04s (lin8en und das Ber(inden *it de* R'6Coa, der 8la99t; *3ssen Sie den @ontrast des 4is9la)s einstellen (oder Sie ha(en ein anderes 4is9la) verwendet und die /ns.hluss(elegung ist 6als.h... . 4as geht *it 'oti R16 au6 der 'latine. 4as 'oti 8>nnen Sie *it eine* 8leinen S.hlit-, s.hrau(endreher verstellen. @reu-s.hlit- geht au.h; 8la99t dann a(er *it vielen S.hrau(endre, hern ni.ht; weil diese 8einen guten 7alt i* 'oti 6inden... 4a*it das 'oti (esser errei.h(ar ist; 8>nnen Sie das 4is9la) wieder loss.hrau(en (oder es erst gar ni.ht 6ests.hrau(en (evor es ni.ht 8orre8t eingestellt ist . 4er Ste, .8er *uss da(ei a(er anges.hlossen (lei(en: 4ann 8>nnen Sie *it eine* S.hrau(en, dreher a* 'oti drehen; w=hrend der Ro(oter einges.haltet ist. Fder Sie lassen das 4is9la) ein6a.h 6estges.hrau(t und neh*en einen 8leinen S.hrau, (endreher da63r wie au6 de* $oto ge-eigt. 3")ei un)edingt d"r"u. "$*ten ,eine <"uteile und Bont",te "u. der Pl"tine mit dem /$*r"u)endre*er (u )er7*ren5 /* (esten erst den Ro(oter 8ur- auss.halten; dann den S.hrau(endreher in 'osition (ringen; den Ro(oter wieder ans.halten und s.hlieNli.h den @ontrast einstellen...

3! RP6 CONTROL Li)r"r0


+ie 63r den Ro(oter sel(st; gi(t es au.h 63r das R'6 EFNTRFC G3# eine $un8tions(i, (liothe8 *it vielen hil6rei.hen $un8tionen; die es 0insteigern (edeutend ein6a.her *a, .hen. 4ie Bi(liothe8 heisst R'6EontrolCi(rar) oder 83r-er R'6EontrolCi(. 4ie Sto9, wat.h; 4ela); A/RT und 5RE,Bus $un8tionen sind identis.h *it denen der nor*alen R'6Ci(rar). 0s werden 63r A/RT und 5RE,Bus sogar die identis.hen 4ateien verwen, det. 4iese liegen in der R'6Ci(rar) i* Anterordner R'6.o**on. /lso werden wir die, se hier ni.ht no.h*al (es.hrei(en J s.hauen Sie si.h (itte das ents9re.hende @a9itel in der R'6 Bedienungsanleitung und die Beis9iel9rogra**e an: 7ier (es.hrei(en wir nur $un8tionen; die es nur 63r das R'6Eontrol gi(t; oder die etwas anders 6un8tionie, ren als in der R'6Ci(. Trot- der vielen vorge6ertigten $un8tionen; ist die R'6EontrolCi( nur eine <rundlage: 'er6e8t ist au.h diese Ci(rar) (ei weite* no.h ni.ht. Gan 8ann no.h vieles ver(essern und hin-u63gen: 7ier sind 5hre eigenen 'rogra**ier6=hig8eiten ge6ordert:
, 11 ,

RP6 RO<OT /=/TEM - 3! RP6 CONTROL Li)r"r0

3!>!>! Mi,ro$ontroller initi"lisieren


void initRP6Control(void)

+ie s.hon von der R'6Ci( (e8annt; *uss diese $un8tion 5GG0R als erstes in der Gain $un8tion au6geru6en werden: Sie heisst hier nur etwas anders... 4ie $un8tion initialisiert die 7ardware*odule des Gi8ro.ontrollers au6 de* R'6,G3#. Nur wenn Sie diese $un8tion als erstes au6ru6en; wird der Gi8ro.ontroller 8orre8t ar, (eiten: 0in Teil wird -war s.hon vo* Bootloader initialisiert; a(er ni.ht alles. Beis9iel:
1 2 3 4 5 6 7 8 9 10 11 #include "RP6Control ib.h" int!6"t main(void) # init !6"ontrol()$ // #nitiali$ierun% & #''( // 1...2 !ro%rammco3e... while(true)$ return 0$ % // (n3lo$$chleife

)*+ ( +,(+ )-. -.(/0

Hedes Progr"mm .7r d"s RP6 CONTROL M32 muss mindestens so "uss$*"uen5 3ie Endloss$*lei.e in ;eile I ist notwendig6 um ein de.iniertes Ende des Progr"mms (u g"r"ntieren5 Fhne diese S.hlei6e 8>nnte si.h das 'rogra** anders verhalten wie erwartet: Genau 1ie mit em =ontro))er au% em Main(oar 7

3!>!2! /t"tus LE3s 4ie C04s lassen si.h =hnli.h wie au6 de* Gain(oard steuern; allerdings sind nur vier C04s ver63g(ar und die Be-ei.hnungen sind etwas anders; da die C04s an eine* e%, ternen S.hie(eregister anges.hlossen sind; wel.hes au.h glei.h-eitig das CE,4is9la) *it ansteuert. 4as 8,Bit S.hie(eregister wird als K0%ternal 'ortL (e-ei.hnet. /u.h 63r das R'6,G3# gi(t es die $un8tion KsetC04sL:
void &et '(&(uint)"t led&)

Beis9iel:
$et*(4$506000078 $et*(4$506000178 $et*(4$506001078 $et*(4$506010078 $et*(4$506101078 // // // // 4ie$er 9efehl $chaltet alle *(4$ au$. -n3 3ie$er $chaltet *(41 an un3 alle an3eren au$. *(42 *(43 // *(44 un3 *(42

0ine alternative G>gli.h8eit ist 6olgendes:


external!ort.*(41 : true8 // *(41 im ;(xternal !ort< e%i$ter a=ti>ieren external!ort.*(42 : fal$e8 // *(42 im ;(xternal !ort< e%i$ter 3ea=ti>ieren output(xt578 // ?n3erun%en @6ernehmen0 // 'it 3er .un=tion output(xt57 wir3 3er #nhalt 3er Aaria6len external!ort // an 3a$ +chie6ere%i$ter %e$en3et & analo% Bu up3ate*(4$57 au$ 3er !6*i6. // Cier wer3en aller3in%$ auch ?n3erun%en 3er *"4 4atenleitun%en mit%e$en3et.

, 1# ,

RP6 RO<OT /=/TEM - 3! RP6 CONTROL Li)r"r0

3!>!3! T"ster /nders als -.B. die Bu*9er; sind die " Taster au6 de* R'6,G3# an einen /4E @anal anges.hlossen. 4as hat den Borteil; das nur ein 'in 63r alle " Taster (en>tigt wird. 4er Na.hteil ist allerdings; dass (ei der ein6a.hen S.haltung *it " glei.hen +iderst=nden (s. S.halt9lan au6 der E4,RFG die wir hier verwenden nur ein Taster glei.h-eitig ge, dr3.8t werden 8ann. 4as rei.ht 63r Bedientaster a(er v>llig aus:
uint)"t *etPre&&ed+e,-umber(void)

4iese $un8tion er*ittelt wel.her Taster gerade gedr3.8t ist. 4a-u wird der /4E ausgelesen und *it einigen voreingestellten S.hwellwerten vergli.hen. 4iese S.hwell, werte *uss *an evtl. in der Ci(rar) an9assen da*it es au6 de* eigenen R'6,G3# 8orre8t 6un8tioniert: 4er ge*essene /4E +ert 8ann n=*li.h au6grund der 3(li.hen $ertigungstoleran- von +iderst=nden a(wei.hen. 4ie S.hwellwerte sind dire8t in der $un8tion get'ressed@e)Nu*(er -u 6inden.
uint)"t chec.Pre&&ed+e,'vent(void)

4iese $un8tion 9r36t o( ein Taster gedr3.8t worden ist und gi(t dann ein ein-iges *al die Tastennu**er -ur3.8 J i* <egensat- -u get'ressed@e)Nu*(er; wo die Tasten, nu**er st=ndig -ur3.8gege(en wird. 4as ist n3t-li.h u* in der 7au9ts.hlei6e die Tasten a(-u6ragen ohne den 'rogra**6luss -u unter(re.hen. Shnli.h ist es au.h *it der $un8tion:
uint)"t chec.Relea&ed+e,'vent(void)

7ier wird allerdings der Tastenwert erst dann genau ein*al -ur3.8gege(en wenn die Taste gedr3.8t und dana.h au.h wieder losgelassen wurde. /u.h diese $un8tion (lo, .8iert den nor*alen 'rogra**6luss ni.ht J *an *uss ni.ht *it einer S.hlei6e darau6 warten (is die Taste wieder losgelassen wurde. 3!>!D! <ee&er 4er Signalge(er au6 de* R'6,G3# 8ann *it der $un8tion
void beep(uint)"t pitch/ uint!6"t time)

gesteuert werden. /llerdings ist diese $un8tion ni.ht (lo.8ierend J d.h. Sie set-t nur die Tonh>he und die Zeits9anne 63r die dieser Ton er-eugt werden soll; und wird dann verlassen. 4er Bee9er wird na.h der vorgege(enen Zeits9anne auto*atis.h a(ge, s.haltet. /llerdings 3(ers.hrei(t 2eder weitere /u6ru6 dieser $un8tion die 0instellun, gen. A* Gelodien oder ein-elne T>ne -u er-eugen ist es daher *eist ein6a.her; das Ga8ro
&ound(pitch/ time/ dela,)

-u verwenden. 7ier 8>nnen Tonh>he; Zeits9anne und 'ause na.h de* Ton angege(en werden. 0s wird *Slee9 verwendet u* die 'ausen -u er-eugen J also dauert es ti*e+dela) Gillise8unden (is das 'rogra** 6ort6=hrt. +enn *an gar 8eine 'ause oder Tondauer einstellen will; 8ann *an *it
void &et0eeperPitch(uint)"t pitch)

nur die Tonh>he einstellen. 4as ist 63r 8ontinuierli.he Ton6olgen (-.B. Sirenenger=us.h o.=. n3t-li.h. /.htung: Bei allen Bee9er $un8tionen liegt der -ul=ssige Berei.h von K9it.hL -wis.hen 0 und #""; wo(ei #"" die *a%i*ale $reOuen- ist.
, 13 ,

RP6 RO<OT /=/TEM - 3! RP6 CONTROL Li)r"r0

3!>!E! Mi,ro.onsensor 4as R'6 EFNTRFC 8ann ni.ht nur S.hall er-eugen; sondern au.h darau6 reagieren. Zwar ni.ht au6 die Tonh>he; a(er au6 die Cautst=r8e. Gan 8ann -.B. den Ro(oter (ei lauten <er=us.hen los6ahren lassen. 4ie S.haltung ist als K'ea8 4ete8torL ausgelegt. 0s wird 3(er einen varia(len Zeit, rau* die /*9litude des Gi8ro6onsignals ge*essen und der Ga%i*alwert gehalten. 4ann 8ann der Gi8ro.ontroller *it eine* /4E den Ga%i*alwert *essen und dana.h l>s.hen. 4er Ga%i*alwert wird ein6a.h 8ur- in eine* 8leinen @ondensator ges9ei.hert und -u* KC>s.henL des Ga%i*alwerts wird dieser @ondensator wieder entladen. Git der $un8tion
void di&char*ePea.(etector(void)

*uss *an den @ondensator -un=.hst entladen. 4ana.h 8ann *an in 6esten 5nterval, len *it der $un8tion
uint!6"t *et1icrophonePea.(void)

den a8tuell ge*essenen Ga%i*alwert er*itteln. 4ie $un8tion ru6t na.hde* der +ert ge*essen wurde dire8t dis.harge'ea84ete.tor( au6. 5n eine* der Beis9iel9rogra**e sieht *an wie *an das anwenden 8ann.

3!>!6! LC-3is&l"0 4as CE,4is9la) ist ideal u* Sensorwerte und Status*eldungen aus-uge(en; w=hrend der Ro(oter ni.ht a* Re.hner anges.hlossen ist. 4ie /usga(e au6 das CE,4is9la) 6un8tioniert =hnli.h wie (ei der seriellen S.hnittstelle J a(er nat3rli.h gi(t es ein 9aar 8leine Besonderheiten. S.hauen Sie si.h a* (esten die Beis9iel9rogra**e an; dann wird s.hnell 8lar wie *an das CE4 verwenden 8ann.
void init C((void)

4iese $un8tion *uss i**er -u Beginn des 'rogra**s au6geru6en werden; u* das CE4 -u initialisieren.
void &et C(((uint)"t lcdd)

4iese $un8tion (und write!BitCE44ata (en>tigen Sie nor*alerweise ni.ht J wir (e, s.hrei(en Sie hier nur u* 8ur- -u erl=utern wie das 4is9la) angesteuert wird. 4as CE4 wird i* !,Bit Godus (etrie(en. 0s werden daher nur vier 4atenleitungen und -wei Steuerleitungen (en>tigt (0na(le (0N und Register Sele.t (RS ; Read?+rite (R?+ ist dauerha6t au6 Gasse ges.haltet wodur.h das CE4 auss.hlieNli.h (es.hrie(en werden 8ann. Cesen ist ni.ht *>gli.h und au.h ni.ht notwendig . 4ie vier 4atenleitun, gen sind wie die C04s a* S.hie(eregister anges.hlossen; u* 'orts -u s9aren. /nalog -ur setC04s $un8tion; set-t setCE44 die 4atenleitungen des CE4s. /llerdings set-t diese $un8tion au.h 8ur- das 0na(le Signal; da*it das CE4 die 4aten 3(erni**t.
void write20it C((ata(uint)"t data)

4a wir de* CE4 eigentli.h 8 Bit Be6ehle und 4aten senden *3ssen; *3ssen die -u 3(ertragenden B)tes au6geteilt werden. 4ie $un8tion write!BitCE44ata 3(erni**t genau das J 8 Bit 4aten werden in -wei ! Bit KNi((lesL au6geteilt und 3(ertragen.
, 1! ,

RP6 RO<OT /=/TEM - 3! RP6 CONTROL Li)r"r0 void write C(Command(uint)"t cmd)

4iese $un8tion ru6t write!BitCE44ata au6; set-t allerdings die RS Ceitung au6 low; u* einen Be6ehl an das CE4 -u senden.
void clear C((void)

Sendet den Be6ehl -u* C>s.hen des 4is9la) 5nhalts an das CE4.
void clearPo& C((uint)"t line/ uint)"t po&/ uint)"t len*th)

C>s.ht einen (esti**ten Berei.h des 4is9la)s. 4ie 'ara*eter sind: Zeile; Start9ositi, on in der Zeile und C=nge des -u l>s.henden Berei.hs. Beis9iel:
clear!o$*"450D10D578 // lE$cht in 3er er$ten Feile 3e$ 4i$plaG$ // 3ie letBten 5 Feichen0

void &etCur&orPo& C((uint)"t line/ uint)"t po&)

Set-t den Te%t.ursor an eine (esti**te 'osition au6 de* 4is9la). 4er 'ara*eter line 8ann 0 63r die o(ere; oder 1 63r die untere Zeile sein. 4er 'ara*ter 9os dar6 i* Be, rei.h von 0 (is 1" liegen.
void writeChar C((uint)"t ch)

Sendet ein ein-elnes Zei.hen an das CE4 J das 6un8tioniert analog -ur writeEhar $un8tion 63r die serielle S.hnittstelle. /llerdings *uss *an hier -un=.hst si.herstellen das der Eursor des 4is9la)s an der ri.htigen 'osition ist; denn sonst sieht *an den Te%t ni.ht: Beis9iel:
$et"ur$or!o$*"451D578 write"har*"45H H78 write"har*"45H!H78 write"har*"45H6H78 // po$itioniere "ur$or in 3er Bweiten FeileD Feichen 5. // IetBt wir3 ; !6< au$%e6enD un3 Bwar // 6e%innen3 an 3er "ur$orpo$ition0

void write3trin* C((char 4&trin*)

/nalog -ur ents9re.henden $un8tion 63r die serielle S.hnittstelle; sendet write, StringCE4 eine nullter*inierte Zei.hen8ette aus de* SR/G an das CE4. /lso sollten Sie diese $un8tion nur verwenden; wenn der Te%t au.h wir8li.h i* R/G liegt und ni.ht nur 6est vorde6iniert ist. 4a-u ist das Ga8ro:
write3trin* C("P(35R6-7)

(esser geeignet; da hier der Te%t dire8t aus de* $lashs9ei.her gelesen wird; ohne den A*weg 3(er den /r(eitss9ei.her.
void write3trin* en*th C((char 4&trin*/ uint)"t len*th/ uint)"t o88&et)

Git dieser $un8tion 8ann ein Te%t *it einer (esti**ten C=nge au6 de* CE4 ausgege, (en werden. 4ie 'ara*ter sind identis.h -u denen der ents9re.henden $un8tion 63r die serielle S.hnittstelle.
&how3creen C(( 6-'!/ 6-'9)

A* die Te%tausga(e au6 de* CE4 etwas -u verein6a.hen; 8ann *an *it dieser $un8ti,
, 1" ,

RP6 RO<OT /=/TEM - 3! RP6 CONTROL Li)r"r0

on (eide Zeilen des CE4s *it nur eine* /u6ru6 (es.hrei(en. 4er Eursor wird auto*a, tis.h ri.htig 9lat-iert und der 5nhalt des 4is9la)s vorher gel>s.ht. Beis9iel:
$how+creen*"45J*"4 Feile 1JD J*"4 Feile 2J78 void write6nte*er C((int!6"t number/ uint)"t ba&e)

4ie s.hon von der seriellen S.hnittstelle (e8annte $un8tion u* Zahlen in den $or*a, ten B5N; FET; 40E oder 701 au6 de* CE4 aus-uge(en.
void write6nte*er en*th C((int!6"t number/ uint)"t ba&e/ uint)"t len*th)

/u.h write5ntegerCengthCE4 ist (is au6 den Na*en identis.h -ur (ereits (e8annten $un8tion 63r die seriellen S.hnittstelle.

3!>!7! /P% <us und /P% EEPROM /* S'5 (QSerial 'eri9heral 5nter6a.e Bus sind das 00'RFG und das 8,Bit S.hie(ere, gister anges.hlossen. 0in So.8el 63r ein weiteres /T#"#"6 8o*9ati(les 00'RFG (-.B. ST GI"#"6 i* 8 9oligen 45' <eh=use 8ann o9tional au6gel>tet werden J und *an 8>nnte au.h andere S'5 5Es ansteuern und no.h ein S.hie(eregister *it de* au6 de* Board vorhandenen 8as8adieren J das sollte *an a(er nur dann *a.hen wenn *an eine s9e-ielle /nwendung da63r hat und ni.ht den 5RE,Bus verwenden 8ann: 4a es 63r das 00'RFG und das S.hie(eregister s9e-ielle $un8tionen gi(t; *uss *an eigentli.h gar ni.ht dire8t aus de* eigenen 'rogra** au6 den S'5 Bus -ugrei6en. +enn das denno.h er6orderli.h ist; 8>nnen 6olgende $un8tionen verwendet werden.
void write3P6(uint)"t data)

P(ertr=gt ein 4aten()te 3(er den S'5 Bus.


write:ord3P6(uint!6"t data)

P(ertr=gt -wei 4aten()tes die in einer 16 Bit Baria(len 3(erge(en werden 3(er den S'5 Bus; wo(ei das 7igh B)te -uerst gesendet wird.
void write0u88er3P6(uint)"t 4bu88er/ uint)"t len*th)

P(ertr=gt (is -u #"" B)tes 3(er den S'5 Bus aus eine* ents9re.hend groNen /rra). 4ie /n-ahl der -u 3(ertragenden B)tes i* /rra) K(u66erL wird *it de* 'ara*eter KlengthL angege(en.
uint)"t read3P6(void)

Ciest ein 4aten()te vo* S'5 Bus.


uint!6"t read:ord3P6(void)

Ciest -wei B)tes vo* S'5 Bus und gi(t diese als 16 Bit Baria(le -ur3.8. 4as -uerst ge, lesene B)te ist da(ei das 7igh B)te.
void read0u88er3P6(uint)"t 4bu88er/ uint)"t len*th)

Ciest (is -u #"" B)tes vo* S'5 Bus in ein ents9re.hend groNes /rra).

, 16 ,

RP6 RO<OT /=/TEM - 3! RP6 CONTROL Li)r"r0

+ie gesagt J nor*alerweise (en>tigen Sie die S'5 $un8tionen ni.ht. 4iese werden a(er von den i* $olgenden (es.hrie(enen $un8tionen verwendet; u* au6 das a* S'5 Bus anges.hlossene 00'RFG -u-ugrei6en.
uint)"t 3P6"''PR;1"read0,te(uint!6"t mem<ddr)

Ciest ein ein-elnes B)te an /dresse K*e*/ddrL aus de* 00'RFG aus. 4ie /ddresse dar6 (ei unsere* 3# @B groNen 00'RFG i* Berei.h von 0 (is 3#H6H liegen. Beis9iel:
// Kir le$en in 3er fol%en3en Feile ein 9Gte >on )3re$$e 13860 au$ 3em ((! L': uint8Mt 3ata : +!#M((! L'Mrea39Gte51386078 void 3P6"''PR;1"read0,te&(uint!6"t &tart<ddr/ uint)"t 4bu88er/ uint)"t len*th)

Ciest (eginnend (ei /dresse Kstart/drL (is -u #"" B)tes (length in ein ents9re.hend groNes /rra) ((u66er .
void 3P6"''PR;1"write0,te(uint!6"t mem<ddr/ uint)"t data)

S9ei.hert ein B)te (data an einer (esti**ten /dresse (*e*/ddr i* 00'RFG.


void 3P6"''PR;1"write0,te&(uint!6"t &tart<ddr/ uint)"t 4bu88er/ uint)"t len*th)

S9ei.hert (is -u 6! B)tes (length 00'RFG.

i* /rra) K(u66erL (eginnend (ei Kstart/ddrL i*

Bitte (ea.hten Sie; dass nur 6! B)tes au6 ein*al ges.hrie(en werden 8>nnen. 6! B)tes ist die Seitengr>Ne ('agesi-e des 00'RFGs und *ehr 8ann es ni.ht -wis.hens9ei.hern (evor es die 4aten s.hrei(t. /usserde* *3ssen die 4aten die hintereinander ges.hrie(en werden sollen i**er innerhal( einer Seite liegen; also -.B. -wis.hen 0 und 63; 6! und 1#H; 1#8 und 1I1 ...: Bei 3(ers.hreiten der Seitengr>Ne; 3(er, s.hrei(t das 00'RFG sonst wieder die 4aten -u (eginn der 2eweiligen Seite. Sie 8>nnen nat3rli.h -.B. (ei /dresse "0 *it de* S.hrei(en (e, ginnen; a(er wenn *ehr als 1! B)tes ges.hrie(en werden; (eginnt der /dress-=hler wieder (ei 0 und 3(ers.hrei(t die dort i* Zwis.hens9ei, .her (ereits vorhandenen 4aten. Bei* Cesen von 4aten aus de* 00'RFG *3ssen Sie die Seitengr>Ne 3(rigens ni.ht (ea.hten und 8>nnen theoretis.h au.h das 8o*9lette 00'RFG au6 ein*al auslesen. 4as 00'RFG (en>tigt "*s u* die 4aten -u s.hrei(en. 5n dieser Zeit 8ann *an ni.ht au6 das 00'RFG -ugrei6en. A* den a8tuellen Status a(-u6ragen 8ann die $un8tion
uint)"t 3P6"''PR;1"*et3tatu&(void)$

verwendet werden. Gan 8ann dann -.B. *it


if505+!#M((! L'M%et+tatu$57 N +!#M((! L'M+,),MK#!77 O // ... P

a(6ragen o( das 00'RFG ni.ht *ehr *it de* S.hrei(en von 4aten (es.h=6tigt ist. 4as *a.hen die $un8tionen o(en a(er au.h s.hon sel(st; also (en>tigt *an das nur; wenn *an in der Zeit no.h andere 4inge erledigen *uss:
, 1H ,

RP6 RO<OT /=/TEM - 3! RP6 CONTROL Li)r"r0

3!>!A! A3Cs 4ie /4E @an=le lassen si.h *it der s.hon von der R'6Ci( (e8annten $un8tion:
uint!6"t read<(C(uint)"t channel)

auslesen. 0ine auto*atis.he Bariante die der Reihe na.h die /4E @an=le i* 7inter, grund ausliest gi(t es 63r das R'6,G3# (no.h ni.ht. 4ie @an=le sind nat3rli.h anders (e-ei.hnet als in der R'6Ci( J 6olgende @an=le sind ver63g(ar:
)4"M7 )4"M6 )4"M5 )4"M4 )4"M3 )4"M2 )4"MS(T!)4 )4"M'#" QQR )4" Sanal 7 & auf 3em 10 poli%en Kannen$tec=er ;)4"< >erf@%6ar0 QQR )4" Sanal 6 ...

QQR )4" Sanal 2 QQR Cier $in3 3ie ,a$ter an%e$chlo$$en QQR -n3 hier 3a$ 'i=rofon.

3!>!I! %@O Ports 4a au6 de* R'6 EFNTRFC insgesa*t 1! 6reie 5?F 'orts ver63g(ar sind; (es.hrei(en wir hier no.h 8ur- wie *an allge*ein au6 5?F 'orts eines /BRs -ugrei6en 8ann. 4er /TG0</3# hat ! 5?F 'orts -u 2e 8 Bit. Meder 'ort wird 3(er 3 Register gesteuert. 0in Register 63r die KRi.htungL der 5?F 'ins (44R% ; also o( ein 'in als 0ingang oder /usgang ges.haltet ist; ein Register -u* S.hrei(en ('FRT% und ein Register -u* Ce, sen ('5N% . +enn *an einen 5?F 'in als /usgang verwenden will; u* -.B. eine C04 -u s.halten; *uss *an das ents9re.hende Bit i* 44R% Register au6 1 set-en.
9ei$piel: 44 " U: #LM!"78 // !"7 i$t nun )u$%an% 44 " : #LM!"7 U #LM!"6 U #LM!"58 // !"5D !"6D !"7 $in3 nun )u$%an%D // alle an3eren !in$ $in3 (in%Vn%e0

4ann 8ann *an 3(er das 'FRT% Register den /usgang au6 high oder low 9egel s.hal, ten.
9ei$piel: !L ," U: #LM!"78 // Ci%h !L ," N: W#LM!"78 // *ow

5st ein Bit i* 44R% Register 0; so ist der -ugeh>rige 'in als 0ingang 8on6iguriert.
9ei$piel: 44 " N: W#LM!"68 // !"6 i$t nun (in%an%

4ann 8ann *an 3(er das '5N% Register den Zustand des 'ins auslesen; also o( high oder low 'egel a* 'in anliegt.
if5!#/" N #LM!"67 write+trin%M!5J!"6 i$ C#XC0YnJ78 el$e write+trin%M!5J!"6 i$ *LK0YnJ78

, 18 ,

RP6 RO<OT /=/TEM - 3! RP6 CONTROL Li)r"r0

Gan 8ann weiterhin die i* Gi8ro.ontroller integrierten 'ullu9 +iderst=nde a8tivieren inde* *an die Bits i* 'FRT% Register set-t. 4as ist -.B. 63r Tastsensoren oder =hnli, .he Sensoren sinnvoll. $olgende 5?F 'ins sind au6 de* R'6 EFNTRFC G3# 6rei ver63g(ar (genaue 4e6inition 6inden Sie in der 7eader 4atei R'6Eontrol.h :
#LM!"7 #LM!"6 #LM!"5 #LM!"4 #LM!"3 #LM!"2 #LM!46 #LM!45

4ie /4E @an=le 8>nnen e(en6alls als 5?F 'ins verwendet werden: Bitte (ea.hten Sie die unters.hiedli.hen S.hrei(weisen vergli.hen *it den Be-ei.hnungen o(en (/4ETH vs. /4EH :
)4"7 )4"6 )4"5 )4"4 )4"3 )4"2

8i$*tiger 'inweis2 4ie 5?F 'orts sind 63r einen *a%i*alen Stro* von #0*/ ausge, legt. 5nsgesa*t dar6 ein 'ort ni.ht *it *ehr als 100*/ (elastet werden: +enn Sie also gr>Nere Ber(rau.her s.halten wollen; *3ssen Sie dies 3(er e%terne Transistoren tun: $3r genauere 5n6or*ationen *3ssen wir hier au6 das 4aten(latt des G0</3# verwei, sen; das au6 der E4,RFG -u 6inden ist:

, 1I ,

RP6 RO<OT /=/TEM - D! <eis&iel&rogr"mme

D! <eis&iel&rogr"mme
/u6 der E4 6inden Sie einige Beis9iel9rogra**e. 4iese Beis9iel9rogra**e de*ons, trieren die grundlegenden $un8tionen des R'6 EFNTRFC G3#. <enau wie s.hon (ei* Ro(oter stellen sie 8eines6alls die o9ti*ale C>sung dar und verstehen si.h als /us, gangs9un8t 63r eigene 'rogra**e. 4as ist a(si.htli.h so; da*it 5hnen au.h no.h et, was -u tun (lei(t J w=re 2a langweilig ein6a.h nur vorge6ertige 'rogra**e aus-u9ro, (ieren... Sie 8>nnen 5hre eigenen 'rogra**e sel(stverst=ndli.h *it anderen /nwendern 3(er das 5nternet austaus.hen. 4ie R'6EontrolCi( und alle Beis9iel9rogra**e stehen unter der F9en Sour.e Ci-en- K<'CL (<eneral 'u(li. Ci.ense und daher sind Sie (ere.htigt; die 'rogra**e unter den Bedingungen der <'C -u *odi6i-ieren; -u ver>66entli.hen und anderen /nwendern -ur Ber63gung -u stellen. /llge*ein gi(t es 63r den G0</3# s.hon sehr viele Bes9iel9rogra**e i* 5nternet; da die Eontroller aus der /BR Eontroller6a*ilie (ei 7o(() /nwendern sehr (elie(t sind. /llerdings *uss *an hier i**er darau6 a.hten; andere Beis9iel9rogra**e au.h an die 7ardware des R'6 EFNTRFC und die R'6EontrolCi( an-u9assen J sonst wird es o6t ni.ht 6un8tionieren (die o66ensi.htli.hsten 'ro(le*e sind andere 'in(elegungen; Ber, wendung von (ereits anderweitig verwendeten 7ardware*odulen wie Ti*ern; andere Ta8t6reOuen-; et.. 99. :

0ei&piel !: =>ello :orld?@Pro*ramm mit C( 5extau&*abe und '( Aerzeichni&: BRP6'xample&CDRP6Control'xample&D'xample"E!" C(D (atei: RP6Control" C(.c

au8licht

(a& Pro*ramm erzeu*t <u&*aben au8 der &eriellen 3chnitt&telle und au8 dem C@ (i&pla,/ &ie &ollten den Roboter al&o an den PC an&chlieFen und &ich die <u&*a@ ben im 5erminal der RP6 oader 3o8tware an&ehenG ;ptional .Hnnen 3ie auch da& C@(i&pla, an&chlieFenG (er Roboter bewe*t &ich in die&em 0ei&pielpro*ramm nicht sofern Sie nur das IC-Bus Slave Programm in den Controller auf dem Mainboard geladen haben G 3ie .Hnnen ihn al&o z.0. au8 einen 5i&ch neben dem Computer &tellen.

4ieses Beis9iel9rogra** gi(t einen 8ur-en K7ello +orldL Te%t 3(er die serielle S.hnittstelle aus; und ans.hlieNend wird ein Cau6li.ht ausge63hrt. Zus=t-li.h wird au6 de* CE4 -un=.hst ein statis.her Te%t ausgege(en und s9=ter ein si.h (ewegender K7ello +orldL Te%t J die (eiden +>rter K70CCFL und K+FRC4L (ewegen si.h langsa* hin und her. Na.h etwa 16 Se8unden wird eine 8ur-e 'ause ge*a.ht und dies *it -wei 8ur-en 'ie9sern signalisiert. Na.h 8 Se8unden wird weiterge*a.ht J e(en6alls si, gnalisiert dur.h -wei 8ur-e 'ie9ser.

, #0 ,

RP6 RO<OT /=/TEM - D! <eis&iel&rogr"mme 0ei&piel 9: 5a&ter und 3ound Aerzeichni&: BRP6'xample&CDRP6Control'xample&D'xample"E9"0utton&D (atei: RP6Control"0utton&.c (a& Pro*ramm erzeu*t <u&*aben au8 der &eriellen 3chnitt&telle und au8 dem (i&pla,G (er Roboter bewe*t &ich in die&em 0ei&pielpro*ramm nicht! C@

4ieses Beis9iel9rogra** de*onstriert die Berwendung der " Taster au6 de* R'6 EFNTRFC. Bei 2ede* Tastendru.8 wird die Tastennu**er i* 4is9la) ange-eigt und eine Ton6olge *it de* 'ie-o ausgege(en (/.htung: /u6 T! -u dr3.8en 8ann gan- s.h>n nervig werden U, .

0ei&piel I: 1i.ro8on&en&or Aerzeichni&: BRP6'xample&CDRP6Control'xample&D'xample"EI"1icrophoneD (atei: RP6Control"1icrophone.c (a& Pro*ramm erzeu*t <u&*aben au8 der &eriellen 3chnitt&telle und au8 dem (i&pla,G (er Roboter bewe*t &ich in die&em 0ei&pielpro*ramm nicht! C@

4er Gi8ro6onsensor 8ann -u* 4ete8tieren lauter <er=us.he verwendet werden. 4ie, ses 'rogra** stellt die ge*essene Cautst=r8e als Bal8en dar. Sowohl au6 de* CE4 als au.h *it den C04s. 4a(ei wird au.h der ge*essene +ert ange-eigt. Ti99en Sie *al *it de* $inger au6 das Gi8ro6on; u* -u testen o( es 8orre8t 6un8tioniert. @lat, s.hen Sie au.h *al in die 7=nde oder =hnli.hes und s.hauen Sie si.h die Rea8tion au6 de* 4is9la) und den C04s an.

0ei&piel 2: 'xterne& ''PR;1 Aerzeichni&: BRP6'xample&CDRP6Control'xample&D'xample"E2"''PR;1D (atei: RP6Control"E2"''PR;1.c (a& Pro*ramm erzeu*t <u&*aben au8 der &eriellen 3chnitt&telle und au8 dem (i&pla,G (er Roboter bewe*t &ich in die&em 0ei&pielpro*ramm nicht! C@

+ie *an grundlegend au6 das e%terne 00'RFG s.hrei(end und lesend -ugrei6en 8ann; wird in diese* Beis9iel9rogra** de*onstriert. Zun=.hst werden die ersten -wei K'a, gesL (QSeiten -u 2e 6! B)te ausgelesen und ausgege(en. /ls 4e*onstration; dass das 00'RFG seinen 5nhalt au.h na.h de* /uss.halten des Ro(oters (eh=lt; s.halten Sie den Ro(oter na.h /us63hrung des 'rogra**s (itte ein6a.h *al aus und wieder an: 4ie -ulet-t ges.hrie(enen 4aten (lei(en da(ei i* 00'RFG erhalten und werden -u Beginn wieder ausgege(en.
, #1 ,

RP6 RO<OT /=/TEM - D! <eis&iel&rogr"mme

4ann wird i* 'rogra** die erste 'age *it 6! B)tes (es.hrie(en und dana.h wieder die ersten 1#8 B)tes gelesen; u* -u veri6i-ieren; dass die B)tes au.h nur in der ers, ten 'age ges.hrie(en wurden und der Rest des 00'RFGs ni.ht ver=ndert wurde (dann ist der 5nhalt 2eder S9ei.her-elle #"" . /u.h ein-elne B)tes 8>nnen ges.hrie(en und gelesen werden; was i* /ns.hluss de*onstriert wird. 0s wird die S9ei.her-elle *it /dresse ! *it 1#8 (es.hrie(en und dana.h wieder die ersten (eiden 'ages ausgelesen J dies*al allerdings B)te 63r B)te J was nat3rli.h langsa*er ist als eine 'age 8o*9lett -u lesen. +enn alles erledigt ist; wird no.h ein 8leines Cau6li.ht ausge63hrt.

0ei&piel J: <nalo* (i*ital :andler und 6/; Port& Aerzeichni&: BRP6'xample&CDRP6Control'xample&D'xample"EJ"6;"<(CD (atei: RP6Control"EJ"6;"<(C.c (a& Pro*ramm erzeu*t <u&*aben au8 der &eriellen 3chnitt&telle und au8 dem (i&pla,G (er Roboter bewe*t &ich in die&em 0ei&pielpro*ramm nicht! C@

0s 6un8tioniert -war eigentli.h genau wie au6 de* Ro(oter J a(er weil es vor alle* (ei diese* 0rweiterungs*odul sehr h=u6ig (en>tigt wird; de*onstriert dieses Beis9iel9ro, gra** no.h 8ur- wie die 6reien /4Es und 5?Fs ausgewertet werden 8>nnen. 4ie /4Es und 5?Fs ha(en i* 'rogra** 6olgende Be-ei.hnungen:
)4"7 )4"6 )4"5 )4"4 )4"3 )4"2 #LM!"7 #LM!"6 #LM!"5 #LM!"4 #LM!"3 #LM!"2 #LM!46 #LM!45 51 51 51 51 51 51 51 51 51 51 51 51 51 51 ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ ZZ !#/)77 // )4" Sanal 7 Q auch al$ normaler #/L !in >erwen36ar !#/)67 // Sanal 6 ... !#/)57 !#/)47 !#/)37 !#/)27 // Sanal 2. 4ie SanVle 0 un3 1 $in3 mit ,a$tatur un3 'i=rophon 6ele%t. !#/"77 !#/"67 !#/"57 !#/"47 !#/"37 !#/"27 !#/467 !#/457 // #/L !in 7 >on !L ," // !in 6 ...

// #/L !in 2 >on !L ," // #/L !in 6 >on !L ,4 // #/L !in 5 >on !L ,4

(aus der 4atei R'6Eontrol.h 4as 'rogra** tut ni.hts wir8li.h sinnvolles J also (rau.hen Sie es ni.ht un(edingt aus-u9ro(ieren. /n den 5?F 'ins ist ni.hts anges.hlossen; daher *a.ht es erst Sinn etwas da*it an-u6angen; wenn *an eigene 7ardware *it den 5?Fs steuern will.

, ## ,

RP6 RO<OT /=/TEM - D! <eis&iel&rogr"mme 0ei&piel 6: 6KC 0u& 6nter8ace L 1a&ter 1odu& Aerzeichni&: BRP6'xample&CDRP6Control'xample&D'xample"E6"69C1a&terD (atei: RP6Control"E6"69C1a&ter.c (ie&e& Pro*ramm demon&triert wie man den 1a&ter 1odu& de& 6KC 0u&&e& verwenden .ann. (er Controller au8 dem Roboter 1ainboard mu&& da& 69C 3lave 0ei&pielpro@ *ramm *eladen habenG

4ieses 'rogra** -eigt; wie *an den Eontroller au6 de* Gain(oard i* Slave Godus steuern 8ann. 4as 8la99t nat3rli.h nur dann; wenn au.h das 5RE Slave Beis9iel9ro, gra** aus den R'6Base Beis9ielen in den Eontroller au6 de* Gain(oard geladen ist... 4er Zugri66 au6 den 5RE Bus 6un8tioniert 6ast genau wie au6 de* Eontroller au6 de* Gain(oard au.h J es sind diesel(en $un8tionen. 5n diese* Beis9iel9rogra** 8ann *an vers.hiedene 5RE Bus @o**andos an den *it de* Slave Beis9iel9rogra** 9rogra**ierten Eontroller au6 de* Gain(oard s.hi.8en; inde* *an au6 einen der " Taster dr3.8t. Taster T1 erh>ht einen Z=hler u* eins und sendet dann den setC04s Be6ehl an den Slave *it diese* Z=hlerwert. So wird *it den 6 Status C04s au6 de* Gain(oard ein Bin=r-=hler ange-eigt. Git eine* 4ru.8 au6 Taster T# werden alle Register gelesen und 3(er die serielle S.hnittstelle ausgege(en. Git T3 hingegen; werden nur die +erte der Ci.htsensoren ausgelesen und au.h au6 de* CE,4is9la) ange-eigt. Git T! und T" wird der KRotateL Be6ehl gesendet und der Ro(oter dreht si.h ein 8lei, nes St3.8.hen na.h lin8s oder re.hts (*an 8ann au.h *ehr*als au6 den Taster dr3.8en; dann dreht er si.h weiter... . 4as 'rogra** 8ann J wie alle anderen au.h J nat3rli.h (elie(ig ver=ndert werden und eignet si.h sehr gut -u* Testen neuer 5RE <er=te oder $un8tionen die *an de* Slave Beis9iel9rogra** hin-u63gt.
0ei&piel M: 6KC 0u& 6nter8ace L 1a&ter 1odu& @ au8 6nterrupt& rea*ieren Aerzeichni&: BRP6'xample&CDRP6Control'xample&D'xample"EM"69C1a&terD (atei: RP6Control"EM"69C1a&ter.c (ie&e& Pro*ramm demon&triert wie man den 1a&ter 1odu& de& 6KC 0u&&e& verwenden .ann. (er Controller au8 dem Roboter 1ainboard mu&& da& 69C 3lave 0ei&pielpro@ *ramm *eladen habenG

Biellei.ht sind 5hnen s.hon die 5nterru9t Signale au6 den 1BAS /ns.hl3ssen des R'6 au6ge6allenV 4iese 8ann *an nut-en u* ohne st=ndiges /(6ragen der Slaves au6 Sen, sor=nderungen -u reagieren. Meder Bus-ugri66 8ostet s.hlieNli.h Zeit. 0in gutes Beis9iel da63r ist das /ES au6 de* Ro(oter. 4er Sensor-ustand =ndert si.h hier nur re)ati' selten und es w=re ni.ht (esonders e66e8tiv; st=ndig 3(er den Bus a(, -u6ragen o( si.h etwas ge=ndert hat. So(ald si.h der Status des /ES =ndert; wird vo* Slave Beis9iel9rogra** das 5NT1 Signal au6 7igh 'egel geset-t. 4a 5NT1 an den 5nterru9t 0ingang 0 vo* G0</3# au6 de* R'6 EFNTRFC G3# gelegt wurde; 8ann der Eontroller dire8t au6 dieses 0reignis reagieren und den Status des Eontrollers au6 de* Gain(oard a(6ragen. +ir nut-en in den Beis9iel9rogra**en allerdings @05N0 5nterru9t Routinen u* au6 das 0reignis -u reagieren; sondern 6ragen den Zustand des 'ins (ei 2ede* 4ur.hlau6 der 7au9ts.hlei6e a(. 4a die 5#E Bus Trans6ers sel(st au.h 5nterru9tgesteuert a(lau, 6en; 8>nnte innerhal( der 5nterru9t Routine 8eine neue P(ertragung statt6inden. 0s
, #3 ,

RP6 RO<OT /=/TEM - D! <eis&iel&rogr"mme

*uss in der 7au9ts.hlei6e i**er die tas8T5#ET+5( $un8tion au6geru6en werden; die den /(lau6 der 5#E Trans6ers regelt. 4aher h=tte es 8einen groNen Borteil eine 5nter, ru9t Routine -u verwenden. A* genau -u sein; w3rde es sogar 'ro(le*e (ereiten; denn so 8>nnten (ereits lau6ende 5#E Bus P(ertragungen unter(ro.hen werden. /lso wird nur die $un8tion tas8T.he.85NT0( verwendet u* st=ndig das 5nterru9t Signal aus-uwerten und gg6. eine /(6rage -u starten. So(ald das Statusregister 0 des Slaves gelesen wird; wird das 5nterru9t Signal -ur3.8geset-t. P(er die ersten drei Register des Slaves 8ann *an heraus6inden; was den 5nterru9t ausgel>st hat. <enau das *a.ht dieses Beis9iel9rogra** au.h. Resultat ist; dass der a8tuelle Zu, stand des /ES 3(er die ! C04s; das CE4; die serielle S.hnittstelle und den Bee9er au6 de* R'6 EFNTRFC ange-eigt und h>r(ar ge*a.ht wird. Zu Beginn des 'rogra**s wird no.h die Sendeleistung des /ES 3(er den 5RE Bus ein, gestellt. Ne(en de* /ES reagiert das 'rogra** au.h au6 die Bu*9er und au6 eventu, ell gesendete RE" P(ertragungen von einer $ern(edienung oder anderen Ro(otern. 4as 8ann *an so =hnli.h nat3rli.h au.h *it allen anderen Sensoren des Ro(oters handha(en. /u.h *it evtl. -u83n6tig erh=ltli.hen 0rweiterungs*odulen *it weiteren Sensoren. 0in weiteres 4etail des 'rogra**s ist die K7eart(eatL /n-eige. /lso K7er-s.hlagL /n, -eige. 4ie tas8TCE47eart(eat( $un8tion sorgt da63r; dass au6 de* CE4 st=ndig das Zei.hen WXW *it einer $reOuen- von 17- (lin8t. 4as ist sehr hil6rei.h u* 6est-ustellen o( si.h das 'rogra** 8o*9lett au6gehangen hat; oder o( nur ein (esti**ter Teil der So6tware 6ehlerha6t ist. +enn Sie eigene 'rogra**e s.hrei(en und si.h das 'ro, gra** dann ans.heinend 8o*9lett au6h=ngt; 8ann das sehr hil6rei.h sein u* die $eh, lerOuelle ein-ugren-en. 4as si.h das 'rogra** au6h=ngt; 8ann w=hrend der 0ntwi.8, lung dur.haus *al 9assieren... 4eshal( ist i* 5RE Slave Beis9iel9rogra** 63r den Eontroller au6 de* Gain(oard au.h eine KSo6tware +at.hdogL $un8tion einge(aut. Reagiert der Gaster innerhal( einer 6estgelegten Zeit ni.ht au6 ein 5nterru9t 0reignis (inde* Register 0 gelesen wird ; werden alle S)ste*e der Ro(oter Basiseinheit ausges.haltet und das 'rogra** ge, sto99t. Bor alle* werden die Gotoren ausges.haltet: 4enn sollte si.h der Gaster Eon, troller au6h=ngen; a(er vorher no.h den Be6ehl *it 10.*?s vorw=rts -u 6ahren sen, den; 6=hrt der Ro(oter unge(re*st vor das n=.hste 7indernis und sto99t au.h ni.ht (ei einer @ollision ... 4er So6tware +at.hdog Ti*er ist -un=.hst dea8tiviert. Gan *uss vorher no.h einen Be6ehl 3(er den 5RE Bus senden u* den +at.hdog -u a8tivieren. 0s ist au.h *>gli.h den +at.hdog so -u 8on6igurieren; dass dieser alle "00*s ein 5nterru9t 0reignis aus, l>st u* -u 3(er9r36en o( der Gaster.ontroller no.h darau6 reagiert. 4as werden wir i* n=.hsten Beis9iel verwenden...

, #! ,

RP6 RO<OT /=/TEM - D! <eis&iel&rogr"mme 0ei&piel ): 6KC 0u& 6nter8ace L .leine RP6 ibrar, Aerzeichni&: BRP6'xample&CDRP6Control'xample&D'xample"E)"69C1a&terD (atei: RP6Control"E)"69C1a&ter.c (ie&e& Pro*ramm demon&triert wie man den 1a&ter 1odu& de& 6KC 0u&&e& verwenden .ann. (er Controller au8 dem Roboter 1ainboard mu&& da& 69C 3lave 0ei&pielpro@ *ramm *eladen habenG

4a 'rogra**e s.hnell etwas un3(ersi.htli.h werden 8>nnen; wenn *an soviel in eine 4atei rein9a.8t; wird 2et-t das Beis9iel H in -wei E 4ateien au6geteilt und no.h etwas erg=n-t. 4a(ei wurde es glei.h so angelegt; das *an eine 8leine Bi(liothe8 -ur Steue, rung des Ro(oters 3(er den 5RE Bus hat; die si.h 6ast wie die nor*ale R'6Ci( 63r den Eontroller au6 de* Gain(oard verwenden l=sst. Biele $un8tionen und Baria(len sind identis.h -ur R'6Ci( (enannt. 4as verein6a.ht es; Teile von 'rogra**en 63r die R'6Ci( au.h *it der R'6EontrolCi( weiter-uverwenden. /u.h die (e8annten 0vent 7andler 63r /ES; 5REFGG und Bu*9er sind wieder ver63g(ar. Neu sind 0vent 7andler 63r niedrigen /88ulade-ustand und die +at.hdog ReOuests. 5* n=.hsten Beis9iel wer, den no.h die $un8tionen 63r die Bewegungssteuerung hin-uge63gt. 4as 'rogra** ist ansonsten =hnli.h -u Beis9iel H. Neu hin-uge8o**en sind nur wie s.hon erw=hnt der weitere +at.hdog Ti*er dessen ReOuests au.h au6 de* CE,4is9la) dargestellt werden und es werden alle Sensorregister ausgelesen und 3(er die serielle S.hnittstelle ausgege(en. +ie geha(t werden au.h weiterhin /ES; Bu*9er und RE" 0vents dargestellt.

0ei&piel N: 6KC 0u& 6nter8ace L 0ewe*un*&8un.tionen Aerzeichni&: BRP6'xample&CDRP6Control'xample&D'xample"EN"1oveD (atei: RP6Control"EN"1ove.c (ie&e& Pro*ramm demon&triert wie man den 1a&ter 1odu& de& 6KC 0u&&e& verwenden .ann. (er Controller au8 dem Roboter 1ainboard mu&& da& 69C 3lave 0ei&pielpro@ *ramm *eladen habenG <C>5O-7: (er Roboter bewe*t &ich in die&em 0ei&pielpro*rammG

Met-t 63gen wir der neuen Ci(rar) ein 9aar der (ereits von der R'6Ci( (e8annten Be, wegungs6un8tionen hin-u: *ove; rotate; *ove/tS9eed; .hange4ire.tion und sto9. 4ie $un8tionen 8>nnen identis.h -u denen in der R'6Ci( (enut-t werden. 5n diese* Bei, s9iel ha(en wir alles aus den vorherigen Beis9ielen (is au6 die /n-eige 63r den +at.h, dog wieder ent6ernt; da*it es 3(ersi.htli.her ist und ausserde* der (lo.8ierende Go, dus der Bewegungs6un8tionen verwendet wird (dann w3rden ein 9aar Sa.hen wie die 7eart(eat /n-eige ohnehin ni.ht 6un8tionieren . 4er Ro(oter (ewegt si.h in diese* Beis9iel hin und her und dreht si.h da(ei u* etwa 180Y , genau wie in Beis9iel H -ur R'6Ci( (KR'6BaseTGoveT0#..L .

, #" ,

RP6 RO<OT /=/TEM - D! <eis&iel&rogr"mme 0ei&piel !E: 6KC 0u& 6nter8ace L Aerhalten&ba&ierter Roboter Aerzeichni&: BRP6'xample&CDRP6Control'xample&D'xample"!E"1ove9D (atei: RP6Control"!E"1ove9.c (ie&e& Pro*ramm demon&triert wie man den 1a&ter 1odu& de& 6KC 0u&&e& verwenden .ann. (er Controller au8 dem Roboter 1ainboard mu&& da& 69C 3lave 0ei&pielpro@ *ramm *eladen habenG <C>5O-7: (er Roboter bewe*t &ich in die&em 0ei&pielpro*rammG

Git der neuen Ci(rar) 8ann *an 2et-t s.hon 6ast 1:1 die Beis9iel9rogra**e -u* Ber, haltens(asierten Ro(oter 3(erneh*en. <enau das wurde hier *it Beis9iel9rogra** R'6BaseT0"TGoveT0" getan. 0s waren nur 8leinere Snderungen notwendig J u.a. *3ssen die C04s au6 de* Gain(oard 3(er die $un8tion setR'6C04s gesteuert wer, den; da setC04s s.hon 63r die C04s au6 de* R'6,G3# reserviert ist... /nsonsten ist das 'rogra** nahe-u identis.h -u* (ereits (e8annten 'rogra** J der Ro(oter 6=hrt heru* und wei.ht da(ei 7indernissen aus. Nur das er dies*al vo* R'6, G3# gesteuert wird. Neu hin-uge8o**en ist die 4arstellung des a8tuell a8tiven Berhaltens au6 de* CE, 4is9la) und *it den C04s. So 8ann *an dire8t sehen wel.hes Berhalten gerade a8tiv ist. 4a-u gi(t es eine 8leine 7il6s6un8tion die si.herstellt; dass der Te%t i**er nur ein, *al an das CE,4is9la) gesendet wird. Sonst w3rde der Te%t au6 de* 4is9la) 6li*, *ern. +=hrend das Berhalten KEruiseL a8tiv ist; wird *it den ! Roten Status C04s ein 8leines Cau6li.ht ausge63hrt. 0s wird au.h der /88u-ustand 3(erwa.ht. +enn der Cade-ustand sehr niedrig ist; wird der Ro(oter angehalten. 4as dauert (ei 6ris.h au6geladenen /88us allerdings eine +eile... +eiterhin wartet das 'rogra** -u (eginn au6 drei laute <er=us.he (dann steht +/5T in der -weiten 4is9la)-eile; dane(en der Eounter 63r die lauten <er=us.he J -.B. drei*al in die 7=nde 8lats.hen. /lternativ 8ann *an au.h einen (elie(igen Taster au6 de* R'6,G3# dr3.8en. /u.h das wurde *it eine* weiteren Berhalten realisiert.

Damit sin 1ir auch am En e ieser ")einen >usat$an)eitun! an!e)an!t* ?et$t "@nnen 3ie +hre ei!ene Areati'it0t 1a)ten )assen: neue Pro!ramme schrei(en un neue 3ensoren am RP6 an(rin!en ie 3ie mit em RP6-M32 steuern "@nnen o er et1as !an$ an eres amit anste))en*

, #6 ,

RP6 RO<OT /=/TEM -

AN'AN-

AN'ANA J Ans$*luss)elegungen
5n diese* /(s.hnitt 6inden Sie die /ns.hluss(elegungen der wi.htigsten Ste.8er und C>t9ads. 4er /ns.hluss der seriellen S.hnittstelle hat genau die glei.he 'in(elegung wie au6 de* Gain(oard. 4as gilt nat3rli.h au.h 63r 1BAS und ASRBAS /ns.hl3sse: %@O Ports2 /* /ns.hluss 5?F sind alle 6reien 5?F 'orts und die Be, trie(ss9annung ver63g(ar. 'E#; 'E3; 'E!; 'E"; 'E6; 'EH; '4" und '46. /E7TAN<: Ber(inden Sie lie(er ni.ht die Betrie(ss9an, nungs9ins eines anderen 0rweiterungs*oduls (-.B. eines 0%9eri*entier*oduls *it den Betrie(ss9annungs9ins an diesen Ste.8ern; u* Gasses.hlei6en und =hnli.hes -u ver, *eiden.

A3C B"n+le2 4ie 6 6reien /4E @an=le (die nat3rli.h au.h als 5?F 'ins verwend(ar sind sind a* 10 9oligen /4E Ste.8er ver63g, (ar. 0(en6alls -usa**en *it der Betrie(ss9annung. Zwei der /4Es sind au.h au6 -wei un(e, st3.8e /ns.hl3sse wie au6 de* Gain(oard gelegt. 4aran 8ann *an eigene Ste.8er i* #."!** Raster anl>ten. /(er vorsi.htig sein und ni.hts K8a9uttl>tenL: 4as sollte *an nur *a.hen wenn *an s.hon etwas C>ter6ahrung hat. Sie 8>nnen an die /ns.hl3sse -wei (elie(ige analoge oder au.h digitale Sensoren an, s.hlieNen (/usgangss9annung der Sensoren 8ann i* Berei.h von 0 (is "B liegen und *it "B Betrie(ss9annung versorgen. 0ventuell sollte *an no.h den groNen 0l8o (e, st3.8en J ##0 (is !H0Z$ (*ehr ni.ht: eignet si.h gut 63r die *eisten /nwendungen. 4as ist a(er nur dann n>tig; wenn Sensoren *it hohe* S9it-enstro* eingeset-t wer, den J wie -.B. die (elie(ten Shar9 5R /(standssensoren. /((lo.88ondensatoren (100n$ au6 de* Gain(oard; eignen si.h nur 63r sehr 8ur-e Zuleitungen J (ei l=ngeren Ceitungen sollten diese dire8t an die Sensoren angel>tet werden (was a(er au.h s.hon (ei 8ur-en Ceitungen sehr -u e*96ehlen ist: .
, #H ,

RP6 RO<OT /=/TEM -

AN'AN-

LC3 Ans$*luss2 +enn Sie ni.ht das Standard CE4 einset-en *>.hten; 8>nnen Sie anhand der ne(enstehenden /ns.hluss(elegung ein eige, nes @a(el 63r das CE4 -usa**en(auen. 4ie Ceitungen 40; 41; 4# ;43; R+ sind 6est *it <N4 ver(un, den; da wir das CE4 nur i* ! Bit Godus (etrei(en und ni.ht davon lesen (rau.hen. A$*ten /ie un)edingt "u. ,orre,te Ans$*luss)elegung und d"r"u. den /te$,er ni$*t /&iegel1er,e*rt "n(us$*lieKen5 4ie Be-ei.hnungen der ein-elnen 'ins 8>nnen 2e na.h 7ersteller au.h anders sein; a(er nor*alerweise sind die Be-ei.hnungen *it denen hier verwendeten identis.h und Sie 8>nnen die 'ins 1:1 *it de* 4is9la) ver(inden:

, #8 ,

Das könnte Ihnen auch gefallen