<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.ccc-mannheim.de/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Firmware_yornbot</id>
	<title>Firmware yornbot - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://www.ccc-mannheim.de/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Firmware_yornbot"/>
	<link rel="alternate" type="text/html" href="https://www.ccc-mannheim.de/mediawiki/index.php?title=Firmware_yornbot&amp;action=history"/>
	<updated>2026-04-06T22:37:25Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in C3MAWiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://www.ccc-mannheim.de/mediawiki/index.php?title=Firmware_yornbot&amp;diff=161&amp;oldid=prev</id>
		<title>Yorn am 2. Dezember 2006 um 01:26 Uhr</title>
		<link rel="alternate" type="text/html" href="https://www.ccc-mannheim.de/mediawiki/index.php?title=Firmware_yornbot&amp;diff=161&amp;oldid=prev"/>
		<updated>2006-12-02T01:26:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Kategorie:Öffentlich]]&lt;br /&gt;
== Die erste vorzeigbare Version v0.1a! ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code qbasic&amp;gt;&lt;br /&gt;
Declare Sub Go()&lt;br /&gt;
Declare Sub Wenden()&lt;br /&gt;
Declare Function Tastenabfrage() As Byte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$regfile = &amp;quot;m32def.dat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dim I As Integer&lt;br /&gt;
Dim N As Integer&lt;br /&gt;
Dim Ton As Integer&lt;br /&gt;
Dim Wsen As Word&lt;br /&gt;
Dim Wbump As Word&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$crystal = 16000000                                         &amp;#039;Quarzfrequenz&lt;br /&gt;
$baud = 9600&lt;br /&gt;
&lt;br /&gt;
Config Adc = Single , Prescaler = Auto                      &amp;#039;Für Tastenabfrage und Spannungsmessung&lt;br /&gt;
&lt;br /&gt;
Config Pina.7 = Input                                       &amp;#039;Für Tastenabfrage&lt;br /&gt;
Porta.7 = 1                                                 &amp;#039;Pullup Widerstand ein&lt;br /&gt;
&lt;br /&gt;
Dim Taste As Byte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;Ports für linken Motor&lt;br /&gt;
Config Pinc.6 = Output                                      &amp;#039;Linker Motor Kanal 1&lt;br /&gt;
Config Pinc.7 = Output                                      &amp;#039;Linker Motor Kanal 2&lt;br /&gt;
Config Pind.4 = Output                                      &amp;#039;Linker Motor PWM&lt;br /&gt;
&amp;#039;Ports für rechten Motor&lt;br /&gt;
Config Pinb.0 = Output                                      &amp;#039;Rechter Motor Kanal 1&lt;br /&gt;
Config Pinb.1 = Output                                      &amp;#039;Rechter Motor Kanal 2&lt;br /&gt;
Config Pind.5 = Output                                      &amp;#039;Rechter Motor PWM&lt;br /&gt;
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down&lt;br /&gt;
Pwm1a = 0&lt;br /&gt;
Pwm1b = 0&lt;br /&gt;
Tccr1b = Tccr1b Or &amp;amp;H02                                     &amp;#039;Prescaler = 8&lt;br /&gt;
&lt;br /&gt;
Print&lt;br /&gt;
Print &amp;quot;yornbot v-0.1a&amp;quot;&lt;br /&gt;
Print&lt;br /&gt;
&lt;br /&gt;
Function Tastenabfrage() As Byte&lt;br /&gt;
Local Ws As Word&lt;br /&gt;
&lt;br /&gt;
   Tastenabfrage = 0&lt;br /&gt;
   Ton = 600&lt;br /&gt;
   Start Adc&lt;br /&gt;
   Ws = Getadc(7)&lt;br /&gt;
   If Ws &amp;lt; 500 Then&lt;br /&gt;
      Select Case Ws&lt;br /&gt;
         Case 400 To 450&lt;br /&gt;
            Tastenabfrage = 1&lt;br /&gt;
            Ton = 550&lt;br /&gt;
            Call Go&lt;br /&gt;
         Case 330 To 380&lt;br /&gt;
            Tastenabfrage = 2&lt;br /&gt;
            Ton = 500&lt;br /&gt;
            Call Wenden&lt;br /&gt;
         Case 260 To 305&lt;br /&gt;
            Tastenabfrage = 3&lt;br /&gt;
            Ton = 450&lt;br /&gt;
         Case 180 To 220&lt;br /&gt;
            Tastenabfrage = 4&lt;br /&gt;
            Ton = 400&lt;br /&gt;
         Case 90 To 130&lt;br /&gt;
            Tastenabfrage = 5&lt;br /&gt;
             Ton = 350&lt;br /&gt;
      End Select&lt;br /&gt;
      Sound Portd.7 , 400 , Ton                             &amp;#039;BEEP&lt;br /&gt;
Waitms 100&lt;br /&gt;
&lt;br /&gt;
End&lt;br /&gt;
   End If&lt;br /&gt;
End Function&lt;br /&gt;
&lt;br /&gt;
Sub Go()&lt;br /&gt;
Print &amp;quot;*GO*&amp;quot;&lt;br /&gt;
&amp;#039;Linker Motor ein&lt;br /&gt;
   Portc.6 = 1                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portc.7 = 0                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portd.4 = 1                                              &amp;#039;Linker Motor EIN&lt;br /&gt;
&lt;br /&gt;
   &amp;#039;Rechter Motor ein&lt;br /&gt;
   Portb.0 = 1                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portb.1 = 0                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portd.5 = 1                                              &amp;#039;rechter Motor EIN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   I = 200&lt;br /&gt;
   Do&lt;br /&gt;
      Pwm1a = I&lt;br /&gt;
      Pwm1b = I&lt;br /&gt;
      Waitms 20&lt;br /&gt;
      I = I + 20&lt;br /&gt;
   Loop Until I &amp;gt; 281&lt;br /&gt;
&lt;br /&gt;
 &amp;#039;  Do&lt;br /&gt;
&amp;#039;Wbump = Getadc(1)&lt;br /&gt;
&amp;#039;If Wbump &amp;gt; 500 Then&lt;br /&gt;
&amp;#039;Print &amp;quot;*WENDEN - I think we hit something!*&amp;quot;&lt;br /&gt;
&amp;#039;Call Wenden&lt;br /&gt;
&lt;br /&gt;
&amp;#039;End If&lt;br /&gt;
&lt;br /&gt;
Do&lt;br /&gt;
Wsen = Getadc(0)&lt;br /&gt;
&amp;#039;Print&lt;br /&gt;
&amp;#039;Print &amp;quot;**** Sharp Sensor Test *****&amp;quot;&lt;br /&gt;
&amp;#039;Print &amp;quot;**** ADC-Wert: &amp;quot; ; Wsen&lt;br /&gt;
&amp;#039;Waitms 100&lt;br /&gt;
If Wsen &amp;gt; 200 Then&lt;br /&gt;
Print &amp;quot;*WENDEN - Object in range!*&amp;quot;&lt;br /&gt;
Call Wenden&lt;br /&gt;
&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
Loop&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sub Wenden()&lt;br /&gt;
   &amp;#039;Linker Motor ein&lt;br /&gt;
   Portc.6 = 0                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portc.7 = 1                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portd.4 = 1                                              &amp;#039;Linker Motor EIN&lt;br /&gt;
&lt;br /&gt;
   &amp;#039;Rechter Motor ein&lt;br /&gt;
   Portb.0 = 0                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portb.1 = 1                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portd.5 = 1                                              &amp;#039;rechter Motor EIN&lt;br /&gt;
&lt;br /&gt;
   I = 200&lt;br /&gt;
   Do&lt;br /&gt;
      Pwm1a = I&lt;br /&gt;
      Pwm1b = I&lt;br /&gt;
      Waitms 20&lt;br /&gt;
      I = I + 20&lt;br /&gt;
   Loop Until I &amp;gt; 281&lt;br /&gt;
      Wait 1&lt;br /&gt;
      Pwm1a = 0&lt;br /&gt;
      Pwm1b = 0&lt;br /&gt;
&amp;#039;Linker Motor ein&lt;br /&gt;
   Portc.6 = 0                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portc.7 = 1                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portd.4 = 1                                              &amp;#039;Linker Motor EIN&lt;br /&gt;
&lt;br /&gt;
   &amp;#039;Rechter Motor ein&lt;br /&gt;
   Portb.0 = 1                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portb.1 = 0                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portd.5 = 1                                              &amp;#039;rechter Motor EIN&lt;br /&gt;
   I = 200&lt;br /&gt;
   Do&lt;br /&gt;
      Pwm1a = I&lt;br /&gt;
      Pwm1b = I&lt;br /&gt;
      Waitms 20&lt;br /&gt;
      I = I + 20&lt;br /&gt;
   Loop Until I &amp;gt; 281&lt;br /&gt;
      Wait 1&lt;br /&gt;
      Pwm1a = 0&lt;br /&gt;
      Pwm1b = 0&lt;br /&gt;
   Call Go&lt;br /&gt;
   End Sub&lt;br /&gt;
&amp;lt;/code&amp;gt;\\&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Die Version mit besserer Navigation v0.2a! ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code qbasic&amp;gt;&lt;br /&gt;
&amp;#039;v-0.2a&lt;br /&gt;
Declare Sub Go()&lt;br /&gt;
Declare Sub Wenden()&lt;br /&gt;
Declare Sub Links()&lt;br /&gt;
Declare Sub Rechts()&lt;br /&gt;
Declare Function Tastenabfrage() As Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m32def.dat&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim I As Integer&lt;br /&gt;
Dim I2 As Integer&lt;br /&gt;
Dim N As Integer&lt;br /&gt;
Dim Ton As Integer&lt;br /&gt;
Dim Wsen As Integer&lt;br /&gt;
Dim Wre As Integer&lt;br /&gt;
Dim Wli As Integer&lt;br /&gt;
Dim Wr As Integer&lt;br /&gt;
Dim Wl As Integer&lt;br /&gt;
Dim W0 As Integer&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
$crystal = 16000000                                         &amp;#039;Quarzfrequenz&lt;br /&gt;
$baud = 9600&lt;br /&gt;
 &lt;br /&gt;
Config Adc = Single , Prescaler = Auto                      &amp;#039;Für Tastenabfrage und Spannungsmessung&lt;br /&gt;
 &lt;br /&gt;
Config Pina.7 = Input                                       &amp;#039;Für Tastenabfrage&lt;br /&gt;
Porta.7 = 1                                                 &amp;#039;Pullup Widerstand ein&lt;br /&gt;
 &lt;br /&gt;
Dim Taste As Byte&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
&amp;#039;Ports für linken Motor&lt;br /&gt;
Config Pinc.6 = Output                                      &amp;#039;Linker Motor Kanal 1&lt;br /&gt;
Config Pinc.7 = Output                                      &amp;#039;Linker Motor Kanal 2&lt;br /&gt;
Config Pind.4 = Output                                      &amp;#039;Linker Motor PWM&lt;br /&gt;
&amp;#039;Ports für rechten Motor&lt;br /&gt;
Config Pinb.0 = Output                                      &amp;#039;Rechter Motor Kanal 1&lt;br /&gt;
Config Pinb.1 = Output                                      &amp;#039;Rechter Motor Kanal 2&lt;br /&gt;
Config Pind.5 = Output                                      &amp;#039;Rechter Motor PWM&lt;br /&gt;
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down&lt;br /&gt;
Pwm1a = 0&lt;br /&gt;
Pwm1b = 0&lt;br /&gt;
Tccr1b = Tccr1b Or &amp;amp;H02                                     &amp;#039;Prescaler = 8&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;yornbot v-0.2a&amp;quot;&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
Function Tastenabfrage() As Byte&lt;br /&gt;
Local Ws As Word&lt;br /&gt;
 &lt;br /&gt;
   Tastenabfrage = 0&lt;br /&gt;
   Ton = 600&lt;br /&gt;
   Start Adc&lt;br /&gt;
   Ws = Getadc(7)&lt;br /&gt;
   If Ws &amp;lt; 500 Then&lt;br /&gt;
      Select Case Ws&lt;br /&gt;
         Case 400 To 450&lt;br /&gt;
            Tastenabfrage = 1&lt;br /&gt;
            Ton = 550&lt;br /&gt;
            Call Go&lt;br /&gt;
         Case 330 To 380&lt;br /&gt;
            Tastenabfrage = 2&lt;br /&gt;
            Ton = 500&lt;br /&gt;
            Call Wenden&lt;br /&gt;
         Case 260 To 305&lt;br /&gt;
            Tastenabfrage = 3&lt;br /&gt;
            Ton = 450&lt;br /&gt;
         Case 180 To 220&lt;br /&gt;
            Tastenabfrage = 4&lt;br /&gt;
            Ton = 400&lt;br /&gt;
         Case 90 To 130&lt;br /&gt;
            Tastenabfrage = 5&lt;br /&gt;
             Ton = 350&lt;br /&gt;
      End Select&lt;br /&gt;
      Sound Portd.7 , 400 , Ton                             &amp;#039;BEEP&lt;br /&gt;
Waitms 100&lt;br /&gt;
 &lt;br /&gt;
End&lt;br /&gt;
   End If&lt;br /&gt;
End Function&lt;br /&gt;
 &lt;br /&gt;
Sub Go()&lt;br /&gt;
Print &amp;quot;*GO*&amp;quot;&lt;br /&gt;
&amp;#039;Linker Motor ein&lt;br /&gt;
   Portc.6 = 1                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portc.7 = 0                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portd.4 = 1                                              &amp;#039;Linker Motor EIN&lt;br /&gt;
 &lt;br /&gt;
   &amp;#039;Rechter Motor ein&lt;br /&gt;
   Portb.0 = 1                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portb.1 = 0                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portd.5 = 1                                              &amp;#039;rechter Motor EIN&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
   I = 200&lt;br /&gt;
   Do&lt;br /&gt;
      Pwm1a = I&lt;br /&gt;
      Pwm1b = I&lt;br /&gt;
      Waitms 20&lt;br /&gt;
      I = I + 20&lt;br /&gt;
   Loop Until I &amp;gt; 281&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Do&lt;br /&gt;
 &lt;br /&gt;
W0 = Getadc(0)&lt;br /&gt;
Wr = Getadc(1)&lt;br /&gt;
Wl = Getadc(2)&lt;br /&gt;
Wsen = W0 + Wr&lt;br /&gt;
Wsen = Wsen + Wl&lt;br /&gt;
Wre = W0 + Wr&lt;br /&gt;
Wli = W0 + Wl&lt;br /&gt;
If Wsen &amp;gt; 1000 Then&lt;br /&gt;
Print &amp;quot;*WENDEN - Blocked!*&amp;quot;&lt;br /&gt;
Call Wenden&lt;br /&gt;
End If&lt;br /&gt;
If Wre &amp;gt; 400 Then&lt;br /&gt;
Print &amp;quot;*HINDERNISS RECHTS- Ausweichen nach links!*&amp;quot;&lt;br /&gt;
Call Links&lt;br /&gt;
End If&lt;br /&gt;
If Wli &amp;gt; 400 Then&lt;br /&gt;
Print &amp;quot;*HINDERNISS LINKS- Ausweichen nach rechts!*&amp;quot;&lt;br /&gt;
Call Rechts&lt;br /&gt;
End If&lt;br /&gt;
 &lt;br /&gt;
Loop&lt;br /&gt;
End Sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Sub Links()&lt;br /&gt;
         &amp;#039;Linker Motor ein&lt;br /&gt;
   Portc.6 = 1                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portc.7 = 0                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portd.4 = 1                                              &amp;#039;Linker Motor EIN&lt;br /&gt;
 &lt;br /&gt;
   &amp;#039;Rechter Motor ein&lt;br /&gt;
   Portb.0 = 1                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portb.1 = 0                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portd.5 = 1                                              &amp;#039;rechter Motor EIN&lt;br /&gt;
 &lt;br /&gt;
   I = 281&lt;br /&gt;
   I2 = 101&lt;br /&gt;
      Pwm1a = I2&lt;br /&gt;
      Pwm1b = I&lt;br /&gt;
      Waitms 20&lt;br /&gt;
 &lt;br /&gt;
      Wait 1&lt;br /&gt;
      Pwm1a = 0&lt;br /&gt;
      Pwm1b = 0&lt;br /&gt;
   Call Go&lt;br /&gt;
   End Sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Sub Rechts()&lt;br /&gt;
         &amp;#039;Linker Motor ein&lt;br /&gt;
   Portc.6 = 1                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portc.7 = 0                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portd.4 = 1                                              &amp;#039;Linker Motor EIN&lt;br /&gt;
 &lt;br /&gt;
   &amp;#039;Rechter Motor ein&lt;br /&gt;
   Portb.0 = 1                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portb.1 = 0                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portd.5 = 1                                              &amp;#039;rechter Motor EIN&lt;br /&gt;
 &lt;br /&gt;
   I = 101&lt;br /&gt;
   I2 = 281&lt;br /&gt;
      Pwm1a = I2&lt;br /&gt;
      Pwm1b = I&lt;br /&gt;
      Waitms 20&lt;br /&gt;
 &lt;br /&gt;
      Wait 1&lt;br /&gt;
      Pwm1a = 0&lt;br /&gt;
      Pwm1b = 0&lt;br /&gt;
   Call Go&lt;br /&gt;
   End Sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Sub Wenden()&lt;br /&gt;
   &amp;#039;Linker Motor ein&lt;br /&gt;
   Portc.6 = 0                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portc.7 = 1                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portd.4 = 1                                              &amp;#039;Linker Motor EIN&lt;br /&gt;
 &lt;br /&gt;
   &amp;#039;Rechter Motor ein&lt;br /&gt;
   Portb.0 = 0                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portb.1 = 1                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portd.5 = 1                                              &amp;#039;rechter Motor EIN&lt;br /&gt;
 &lt;br /&gt;
   I = 200&lt;br /&gt;
   Do&lt;br /&gt;
      Pwm1a = I&lt;br /&gt;
      Pwm1b = I&lt;br /&gt;
      Waitms 20&lt;br /&gt;
      I = I + 20&lt;br /&gt;
   Loop Until I &amp;gt; 281&lt;br /&gt;
      Wait 1&lt;br /&gt;
      Pwm1a = 0&lt;br /&gt;
      Pwm1b = 0&lt;br /&gt;
&amp;#039;Linker Motor ein&lt;br /&gt;
   Portc.6 = 0                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portc.7 = 1                                              &amp;#039;bestimmt Richtung&lt;br /&gt;
   Portd.4 = 1                                              &amp;#039;Linker Motor EIN&lt;br /&gt;
 &lt;br /&gt;
   &amp;#039;Rechter Motor ein&lt;br /&gt;
   Portb.0 = 1                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portb.1 = 0                                              &amp;#039;bestimmt Richtung rechter Motor&lt;br /&gt;
   Portd.5 = 1                                              &amp;#039;rechter Motor EIN&lt;br /&gt;
   I = 200&lt;br /&gt;
   Do&lt;br /&gt;
      Pwm1a = I&lt;br /&gt;
      Pwm1b = I&lt;br /&gt;
      Waitms 20&lt;br /&gt;
      I = I + 20&lt;br /&gt;
   Loop Until I &amp;gt; 281&lt;br /&gt;
      Wait 1&lt;br /&gt;
      Pwm1a = 0&lt;br /&gt;
      Pwm1b = 0&lt;br /&gt;
   Call Go&lt;br /&gt;
   End Sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Yorn</name></author>
	</entry>
</feed>