<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>https://senzor.robotika.sk/sensorwiki/index.php?action=history&amp;feed=atom&amp;title=SRF_08_Sonar_Demo</id>
	<title>SRF 08 Sonar Demo - História úprav</title>
	<link rel="self" type="application/atom+xml" href="https://senzor.robotika.sk/sensorwiki/index.php?action=history&amp;feed=atom&amp;title=SRF_08_Sonar_Demo"/>
	<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=SRF_08_Sonar_Demo&amp;action=history"/>
	<updated>2026-04-30T18:00:27Z</updated>
	<subtitle>História úprav pre túto stránku na wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://senzor.robotika.sk/sensorwiki/index.php?title=SRF_08_Sonar_Demo&amp;diff=515&amp;oldid=prev</id>
		<title>Balogh: Nová stránka: Tento program meria vzdialenosť senzorom SRF08 a vypisuje hodnoty na sériový LCD displej a zároveň posiela cez USB/RS-232 do PC, kde sa dá zobraziť v terminálovom okne.  &#039;&#039;&#039;P...</title>
		<link rel="alternate" type="text/html" href="https://senzor.robotika.sk/sensorwiki/index.php?title=SRF_08_Sonar_Demo&amp;diff=515&amp;oldid=prev"/>
		<updated>2009-01-29T10:08:28Z</updated>

		<summary type="html">&lt;p&gt;Nová stránka: Tento program meria vzdialenosť senzorom SRF08 a vypisuje hodnoty na sériový LCD displej a zároveň posiela cez USB/RS-232 do PC, kde sa dá zobraziť v terminálovom okne.  &amp;#039;&amp;#039;&amp;#039;P...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Tento program meria vzdialenosť senzorom SRF08 a vypisuje hodnoty na&lt;br /&gt;
sériový LCD displej a zároveň posiela cez USB/RS-232 do PC, kde sa&lt;br /&gt;
dá zobraziť v terminálovom okne.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Pripojenie&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 SRF08: &lt;br /&gt;
      SCL      CON  9         &amp;#039; I2C clock&lt;br /&gt;
      SDA      CON  8         &amp;#039; I2C data&lt;br /&gt;
 LCD Backpack:&lt;br /&gt;
      LCD      CON  0         &amp;#039; LCD Serial Backapck Data Line&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;basic&amp;quot;&amp;gt;&lt;br /&gt;
&amp;#039;{$STAMP BS2}&lt;br /&gt;
&lt;br /&gt;
SCL      CON  9         &amp;#039; I2C clock&lt;br /&gt;
SDA      CON  8         &amp;#039; I2C data&lt;br /&gt;
LCD      CON  0         &amp;#039; LCD Serial Backapck Data Line&lt;br /&gt;
SDAin    VAR  IN8&lt;br /&gt;
SDAout   VAR  OUT8      &amp;#039; To change the pins used, alter these 5 lines&lt;br /&gt;
SDAdir   VAR  DIR8      &amp;#039; The 4 SDA numbers must be the same, of course&lt;br /&gt;
&lt;br /&gt;
loop     VAR  Byte      &amp;#039; just a looping counter&lt;br /&gt;
I2cBuf   VAR  Byte      &amp;#039; I2c read/write buffer&lt;br /&gt;
I2cAddr  VAR  Byte      &amp;#039; Address of I2C device&lt;br /&gt;
I2cReg   VAR  Byte      &amp;#039; Register number within I2C device&lt;br /&gt;
I2cData  VAR  Word      &amp;#039; Data to read/write&lt;br /&gt;
I2cAck   VAR  Bit       &amp;#039; Acknowledge bit&lt;br /&gt;
                        &amp;#039; LCD: Defining some useful constants for the Backpack.&lt;br /&gt;
N9600    CON  $4054     &amp;#039; Baudmode-9600 bps inverted.&lt;br /&gt;
    I    CON  254       &amp;#039; Instruction prefix value.&lt;br /&gt;
  CLR    CON  1         &amp;#039; LCD clear-screen instruction.&lt;br /&gt;
LINE2    CON  192       &amp;#039; Address of 1st char of 2nd line.&lt;br /&gt;
L1_C7    CON  135       &amp;#039; Address of line 1, character 7.&lt;br /&gt;
L2_C7    CON  199       &amp;#039; Address of line 1, character 7.&lt;br /&gt;
&lt;br /&gt;
  SEROUT 0,N9600,[I,CLR] &amp;#039; Clear the LCD screen.&lt;br /&gt;
  SEROUT 0,N9600,[&amp;quot;Range:&amp;quot;] &amp;#039; Print the label.&lt;br /&gt;
&lt;br /&gt;
Main:&lt;br /&gt;
&lt;br /&gt;
  I2cAddr = $e0&lt;br /&gt;
  I2cData = 81          &amp;#039; Rangeing command - 80 for inches, 81 for cm, 82 for uS&lt;br /&gt;
&lt;br /&gt;
  I2cReg  = 0&lt;br /&gt;
  GOSUB  I2cByteWrite&lt;br /&gt;
  PAUSE  70             &amp;#039; Wait for ranging to complete&lt;br /&gt;
&lt;br /&gt;
  I2cReg = 1            &amp;#039; Address of light sensor register&lt;br /&gt;
  GOSUB  I2cByteRead&lt;br /&gt;
  DEBUG  2,0,0, &amp;quot;Light Sensor    &amp;quot;, DEC3 I2cData, &amp;quot; u&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  I2cReg = 2        &amp;#039; address of first ranging result&lt;br /&gt;
  GOSUB  I2cWordRead&lt;br /&gt;
  DEBUG  2,0,1, &amp;quot;Range           &amp;quot;, DEC4  I2cData, &amp;quot; cm&amp;quot;&lt;br /&gt;
  SEROUT 0,N9600,[I,L1_C7]                                   &amp;#039; Move to line 1, character 7.&lt;br /&gt;
  SEROUT 0,N9600,[DEC4 I2cData, &amp;quot; cm&amp;quot;]                       &amp;#039; Print message.&lt;br /&gt;
&lt;br /&gt;
&amp;#039; --------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  I2cData = 82          &amp;#039; Rangeing command - 80 for inches, 81 for cm, 82 for uS&lt;br /&gt;
&lt;br /&gt;
  I2cReg  = 0&lt;br /&gt;
  GOSUB  I2cByteWrite&lt;br /&gt;
  PAUSE  70             &amp;#039; Wait for ranging to complete&lt;br /&gt;
&lt;br /&gt;
  I2cReg = 2            &amp;#039; address of first ranging result&lt;br /&gt;
  GOSUB  I2cWordRead&lt;br /&gt;
  DEBUG  2,0,2, &amp;quot;Range           &amp;quot;, DEC4  I2cData, &amp;quot; us&amp;quot;&lt;br /&gt;
  SEROUT 0,N9600,[I,L2_C7]                                   &amp;#039; Move to line 1, character 7.&lt;br /&gt;
  SEROUT 0,N9600,[DEC4 I2cData, &amp;quot; us&amp;quot;]                       &amp;#039; Print message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  GOTO  main&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;--------------------------------------------------------------------------------------------&lt;br /&gt;
&amp;#039; I2C subroutines follow&lt;br /&gt;
&amp;#039;--------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
I2cByteWrite:            &amp;#039; writes I2cData.lowbyte to I2cReg at I2cAddr&lt;br /&gt;
&lt;br /&gt;
  GOSUB  I2cStart&lt;br /&gt;
  I2cBuf = I2cAddr&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send device address&lt;br /&gt;
  I2cBuf = I2cReg&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send register number&lt;br /&gt;
  I2cBuf = I2cData.LOWBYTE&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send the data&lt;br /&gt;
  GOSUB  I2cStop&lt;br /&gt;
  RETURN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I2cWordWrite:            &amp;#039; writes I2cData to I2cReg at I2cAddr&lt;br /&gt;
&lt;br /&gt;
  GOSUB  I2cStart&lt;br /&gt;
  I2cBuf = I2cAddr&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send device address&lt;br /&gt;
  I2cBuf = I2cReg&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send register number&lt;br /&gt;
  I2cBuf = I2cData.HIGHBYTE&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send the data - high byte&lt;br /&gt;
  I2cBuf = I2cData.LOWBYTE&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send the data - low byte&lt;br /&gt;
  GOSUB  I2cStop&lt;br /&gt;
  RETURN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I2CByteRead:&lt;br /&gt;
  GOSUB  I2cStart&lt;br /&gt;
  I2cBuf = I2cAddr&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send device address&lt;br /&gt;
  I2cBuf = I2cReg&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send register number&lt;br /&gt;
  GOSUB  I2cStart      &amp;#039; repeated start&lt;br /&gt;
  I2cBuf = I2cAddr | 1&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send device address (with read set)&lt;br /&gt;
  I2cAck = 0        &amp;#039; send Nak&lt;br /&gt;
  GOSUB  I2cInByte&lt;br /&gt;
  I2cData.LOWBYTE = I2cBuf  &amp;#039; read the data&lt;br /&gt;
  I2cData.HIGHBYTE = 0&lt;br /&gt;
  GOSUB  I2cStop&lt;br /&gt;
  RETURN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I2CWordRead:&lt;br /&gt;
  GOSUB  I2cStart&lt;br /&gt;
  I2cBuf = I2cAddr&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send device address&lt;br /&gt;
  I2cBuf = I2cReg&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send register number&lt;br /&gt;
  GOSUB  I2cStart      &amp;#039; repeated start&lt;br /&gt;
  I2cBuf = I2cAddr | 1&lt;br /&gt;
  I2cAck = 1        &amp;#039; send Ack&lt;br /&gt;
  GOSUB  I2cOutByte      &amp;#039; send device address (with read set)&lt;br /&gt;
  GOSUB  I2cInByte&lt;br /&gt;
  I2cData.HIGHBYTE = I2cBuf  &amp;#039; read the data&lt;br /&gt;
  I2cAck = 0        &amp;#039; send Nak&lt;br /&gt;
  GOSUB  I2cInByte&lt;br /&gt;
  I2cData.LOWBYTE = I2cBuf&lt;br /&gt;
  GOSUB  I2cStop&lt;br /&gt;
  RETURN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I2cOutByte:&lt;br /&gt;
  SHIFTOUT SDA, SCL, MSBFIRST, [I2cBuf]&lt;br /&gt;
  INPUT  SDA&lt;br /&gt;
  HIGH  SCL          &amp;#039; clock in the ack&amp;#039; bit&lt;br /&gt;
  LOW  SCL&lt;br /&gt;
  RETURN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I2cInByte:&lt;br /&gt;
  SHIFTIN SDA, SCL, MSBPRE, [I2cBuf]&lt;br /&gt;
  SDAout = 0&lt;br /&gt;
  SDAdir = I2cAck&lt;br /&gt;
  HIGH  SCL          &amp;#039; clock out the ack&amp;#039; bit&lt;br /&gt;
  LOW   SCL&lt;br /&gt;
  INPUT  SDA&lt;br /&gt;
  RETURN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I2cStart            &amp;#039; I2C start bit sequence&lt;br /&gt;
  HIGH  SDA&lt;br /&gt;
  HIGH  SCL&lt;br /&gt;
  LOW  SDA&lt;br /&gt;
  LOW  SCL&lt;br /&gt;
  RETURN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I2cStop:            &amp;#039; I2C stop bit sequence&lt;br /&gt;
  LOW  SDA&lt;br /&gt;
  HIGH  SCL&lt;br /&gt;
  HIGH  SDA&lt;br /&gt;
  RETURN&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Balogh</name></author>
	</entry>
</feed>