Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: SRF08 Kategorie: Sensoren (von André H. - 10.04.2004 15:15)
Als Antwort auf SRF08 von Floyd - 5.04.2004 22:59
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT_V2, OSOPT V3.0
Hallo Floyd,

> Daher nun meine Frage, ob jemand schon diese Sensoren zufriedenstellend zum laufen
> bekommen hat?!

Ich mache zwar nichts mit Ultraschall-Sensoren, jedoch kann ich Dir ein paar
Hinweise zur Verwendeung des I²C-Busses geben:

> Ich verwende folgenden Quellcode:
>
> byte buffer[2];
> int range;
> string s;
>
> i2c.init();


Den I²C-Bus mu�t Du nicht initialisieren, da dies beim Start der VM automatisch gemacht wird.

> lcdext.init();
>
> loop
> {
> i2c.start(0xE0);


Benutze immer i2c.cstart() , falls Du auf den I²C-Bus aus mehreren Threads zugreifen willst.

> i2c.write(0);
> i2c.write(0x51);


0x51 scheint als Kommando für cm zu stimmen.

> i2c.stop();
>
> sleep 70;
>
> i2c.start(0xE0);


auch hier wieder cstart() :-)

> i2c.write(2);
> i2c.start(0xE1);
> buffer[0]=i2c.readlast();
> i2c.stop();
>
> i2c.start(0xE0);
> i2c.write(3);
> i2c.start(0xE1);
> buffer[1]=i2c.readlast();
> i2c.stop();


Du mu�t I²C-Bus-Bausteine i.d.R nicht erneut Adressieren, wenn Du zwei Bytes
hintereinander lesen willst.

>

> range = mem.getint(buffer,0);
>
> lcdext.clear();
> s="";
> str.putint(s,range);
>
> lcdext.print(s);

Die Ausgabe auf das LCD geht auch einfacher.


Hier ein etwas abgeänderter Quellcode:



thread main
{
 lcdext.init();
 lcdext.goto(1,6);
 lcdext.print("cm");
 loop
 {
  i2c.cstart(0xE0);
  i2c.write(0);
  i2c.write(0x51);
  i2c.stop();

  sleep 100; // vielleicht hilft eine etwas höhere Pause :-)

  i2c.cstart(0xE0);
  i2c.write(2);
  i2c.start(0xE1);
  lcdext.line(1);
  lcdext.zahl((i2c.read() shl 8) or i2c.readlast());
  i2c.stop();
 }
}


MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: