PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Projekt für Robby RP5



JanPeter
27.12.2003, 23:31
Hallo RP 5 – Fans!

Damit Robby so Richtig was wird, schlage ich vor , wir machen daraus ein Projekt!

So nun mal meine ersten Vorschläge:
0. Aufgaben Katalog
1. Was soll Robby alles machen?
2. Was soll Er können?
3. Mit welchen Programmen?
4. Mit welcher Hardware?

Zu 0.
1. Solarzellenbetrieb
2. DCF-Signal empfangen ( da bin ich gerade dran)

Zu 1.1. Sich über die Sonne selbst aufladen (Ausrichten nach hellstem Punk)
2. Sich seine Systemuhr stellen , nach DCF
3. Nachdem er die Systemuhr gestellt hat, kann er uns nun Morgens wecken.

u.s.w.

Wer noch Ideen hat meldet sich .

Claus
27.12.2003, 23:35
Hi JP,

Kaffee kochen, Broetchen holen und natuerlich mit dem Hund "Gassi gehen".
:lol: :lol:

Ansonsten bin ich zu muede, den ganzen Tag Robby genervt und viel gelernt.

JanPeter
28.12.2003, 00:06
Hi Claus !
Das mach ich auch den ganzen Tag ,3 mal gassi gehen mit dem Hund ,
weil meine Frau Krank ist , und der Hund neben mir jault, weil er beschäftigt werden will!
Deshalb wollte ich keinen lebenden Hund vor 9 Jahren , sondern lieber
einen Roboterhund , wie EIBO, den hätte ich dann , den Akku entfernt,
und ich hätte meine Ruhe.
Aber meine Frau wollte einen Dobermann ( Doberfrau)
Nun geh ich Gassi , und überleg mir dabei Neue Programme für Robby.

JanPeter
28.12.2003, 00:15
Hallo Claus !
So nun bekommen wir gleich wieder ärger mit Frank!
Er hat ja auch recht, man sollte nicht vom Thema abweichen, aber das ist nun mal so bei den Menschen und bei den Tieren, hat man einmal was geschnuppert, dann legt man eine andere Fährte ein!
So nun wirds wieder ernst mit dem Projekt!
Ich erwarte Eure Vorschlage und Neuerungen!

MeisterM
28.12.2003, 01:05
Hallo RP 5 – Fans!

Damit Robby so Richtig was wird, schlage ich vor , wir machen daraus ein Projekt!

So nun mal meine ersten Vorschläge:
0. Aufgaben Katalog
1. Was soll Robby alles machen?
2. Was soll Er können?
3. Mit welchen Programmen?
4. Mit welcher Hardware?

Zu 0.
1. Solarzellenbetrieb
2. DCF-Signal empfangen ( da bin ich gerade dran)

Zu 1.1. Sich über die Sonne selbst aufladen (Ausrichten nach hellstem Punk)
2. Sich seine Systemuhr stellen , nach DCF
3. Nachdem er die Systemuhr gestellt hat, kann er uns nun Morgens wecken.

u.s.w.

Wer noch Ideen hat meldet sich .

1. Er soll aus einem Speziell gabauten CD Ständer CDs holen können.
2. Er muss also mit einem (ich will ihn Pneumatisch) Arm die CDs Greifen können.
3. Mit meinen *g* (Aber Computerunterstüzt, damit Robby weiß welche CD ich benötige)
4. Mit der Basiserweiterung, Magnetventilen, Einem Mini-Kompressor und Pneumatikzylindern

Claus
28.12.2003, 10:46
Moin zusammen,

als absoluter "Newbie" wollte ich natuerlich gerne selbst mal einen Robby bauen. Da dazu aber gewisse technische Voraussetzungen gehoeren, die ich so nicht habe (nur im buero,:lol:) habe ich mir Robby gekauft.

Zu Beginn:

folgen einer Linie,
erkunden eines labyrinths,
datenausgabe ueber IR von acs, nav, speed, etc. zur messwerterfassung,
video-uebertragung,
IR-Barken abfahren,
anschluss von U-Schall (mehrere),

naja, mehr faellt mir nicht ein...

djfoxi
29.12.2003, 13:16
1.einen Raum Reihe für Reihe abfahren (an den Wänden immer U-Turn) (so könnte man ihn als Staubsauger einsetzen :-) )
2. Wenn die Batterie leer wird zu seiner Ladestadion über den direkten Weg zurück kehren (glaube das ist am schwierigsten) und sich mit Ladeprog. aufladen
3. Optional zum hellsten Punkt im Raum fahren (solarzelle)
4. Kurskorrektur beim Geradeausfahren

Claus
29.12.2003, 18:32
Hi,

eine Kurskorrektur zum Geradeausfahren waere gut, dazu muesste man aber ne bessere Aufloesung erlangen, bei mir habe ich 3,6 cm gemessen pro Impuls. Wenn man vor der Anfahrt kurz einige msec den Antrieb in die gewuenschte Richtung vorlaufen laesst ohne dass sich Robby bewegt, muesste man doch den Schlupf raushaben ?

MeisterM
29.12.2003, 18:56
is ja klar, denn das Wegstreckenbeispiel hört nach 100 Einheiten (Angeblich 3 Meter)) auf zu zählen und stoppt den Robby.

djfoxi
29.12.2003, 19:38
Wie unter Geradeauslauf geschrieben habe ich mir ein Prog geschrieben das er automatisch eine"kurskorrektur" vornimmt wenn er auf die Schiefe Bahn geräht...um schnellstmögliche korrekturzeiten zu erreichen gehört es natürlich von den Werten her an die Toleranz der Robbys individuell ein wenig angepaßt...

Matthias
30.12.2003, 10:09
Ich hätte noch nen vorschlag: Wiederstände sortieren.
Ich habe bei mir im Zimmer so in etwa 2000 unsortierte Wiederstände und da das meiner kleinen Schwester auch keinen Spass mehr macht brauch ich nen neuen Dummen der das für mich macht. Ich habe in einem Elektronikshop sone ccd-Rheie(sonen Scannerteil im IC-Format[8DIP]) gesehen, vielleicht könnte man damit was anfangen...

HM
01.01.2004, 19:50
Hallo,

ist ne gute Sache mit dem Projek.
Ich habe schon Solarzellen bestellt, durch den Jahreswechsel aber noch keine bekommen.
Ihr solltet monokristaline Solarzellen verwenden, denn sie haben einen besseren Wirkungsgrad.
Die Möglichkeit Abtastzeilen von Scannern zu verwenden hatte ich auch schon mal, weiß aber nicht, wie sie angeschlossen und programmiert werden.
Leider werde ich aus Zeitgründen nicht immer teilnehmen können.
Die größeren probleme wird es später dann bestimmt mit der CC2 -Programmierung geben.
Allen noch ein gesundes neues Jahr wünscht HM. :lol:

Matthias
02.01.2004, 11:18
Hallo HM
Ich meinte einen sensor den ich in nem Robotershop gesehen hab. Der hatte 128 nebeneinanderliegende ccd "pixel" schön verpackt in nem durchsichtigem 8pol dip Gehäuse...

JanPeter
03.01.2004, 21:35
Hallo Projektmirglieder!
Danke für die vielen Anwendungshinweise!
Es können noch viel mehr kommen!
Ich werde die Ideen von Euch zusammenfassen, und wir werden daraus ein richtiges Projekt machen, wie Ihr es wollt!
Wir müssen nun die Ideen auseinanderklamüsern, und verteilen.
So ist es nun mal in einem Projekt!
Nun meine Frage wer programmiert, und wen bringt Ideen ein, die realisierbar sind , für Robby?

JanPeter
11.01.2004, 00:41
Neue Idee fürs Projekt!
-Porterweiterung über I2C
-Neuen Treiber in maschinensprache
-Neue Sensoren

JanPeter
11.01.2004, 00:44
Anfrage!
Wer programmiert in maschinensprache für C-Control?
Wir brachen einen Neuen Treiber für I2C!
der im System eingebunden wird, von RP5 Robby!

Frank
11.01.2004, 10:38
So weit ich gehört habe ist nahezu kein Platz mehr für Assemblerprogramme vorhanden. VOn daher sieht es schlecht aus. Ansonsten hab ich ja schon erwähnt das im Download Bereich ein I2C Treiber liegt. Aber wird wohl nicht mehr rein passen. Notfalls müsste man Basic Routine nehmen

JanPeter
11.01.2004, 14:07
Hallo Frank!
Man hat schon Platz , wenn man einen Neuen Treiber schreiben will.
Denn die Befehle ROTR, ROTL,REV und FWD kann man streichen, denn die kann man durch die Befehle REVR,REVL,FWDR und FWDL ausführen.

bewild
11.01.2004, 20:24
Hallo,
nachdem ich schon ein paar Tage hier rein geschaut habe und jetzt auch stolzer Besitzer eines RP5 bin hier meine Ideen:
Also als erstes natürlich nur ein bischen rumfahen und vielleicht zusätzliche Bumper installieren.
Dann soll er bei mir mein Wohnzimmer kehren, am Ende dann vielleicht Huckepack mit einem Akkustaubsauger auch noch saugen.

Viel Spass
Bernd

Frank
11.01.2004, 20:27
Hi Bernd

Befürchte das die Motoren und Getriebe zu schwach sind um noch viel Gewicht zu transportieren . Und neben Sauger bräuchtest Du dann mehr/größere Akkus!

<JanPeter:> Wieviel byte wären denn dann noch für Assemblerprogramm frei?

JanPeter
11.01.2004, 21:00
Hallo Frank!
Ich brache für ein I2C-Treiber in maschinensprache 58 Byte.
Dur das entfernen sind aber nur 16 Byte frei.
Ich habe mir jetzt die Muhe gamacht , und den Treiber p5driv.s19 disassembliert, per Hand .
Es sieht bis jetzt noch nicht gut aus , aber schaun wir mal!

thille
11.01.2004, 21:00
Hallo Frank,

in der Beschreibung der C-Control steht, daß 256 Byte für eigene Assemblerprogrammierung zur Verfügung stehen, der Treiber rp5driv12.s19 hat aber schon 252 Byte...

Entweder man disassembliert diesen Treiber, oder besser bekommt den Originalen, und wirft das raus, wovon man überzeugt ist es nicht zu brauchen, und ergänzt das was man braucht, aber viel Platz wird dann trotzdem nicht frei., oder man gibt es einfach auf.

Gruß

Torsten

JanPeter
11.01.2004, 22:49
Hallo Positive Nachricht!
Um ein I2C Treiber im Treiber von p5driv.s19 benötigt man 51 Byte !
Wenn man auf ROTR,ROTL,REV,FWD( sind so wieso nur Sprungbefehle) ,ACS_LO,ACS_HI,SEND_SPEEDR,SEND_SPEEDL,
und SEND_SYSSTAT verzichtet, hat man 54 Byte frei.

thille
11.01.2004, 23:14
Woher hast Du diese Info? Hast Du den originalen Code bekommen, oder das Ding Disassembliert? Wenn ich auf das Datum schaue, wann dieser Treiber entstanden ist, dann ist er entstanden, bevor die veröffentlichten Schaltpläne enstanden sind, vielleicht sind dort noch Schätze vergraben, von denen man nichts ahnt.

Gruß

Torsten

EDIT:

Habe Deinen anderen Beitrag erst danach gelesen, also keine Schätze...

Gruß

Torsten

JanPeter
11.01.2004, 23:19
Hallo Torsten !
Ich habe meinen Sonntag geopfert, und den Treiber per Hand disassembliert.( Mit Code-Tabelle und Anleitung , wie .S19 aufgebaut ist)
Das war gar nicht so einfach, aber das schult das Gehirn.
Denn ich hab mich mit maschinensprache das letzte mal vor 3 Jahren beschäftigt.

Frank
11.01.2004, 23:21
Hallo Ihr,
das ist alles ein bisschen sehr knapp! Der I2C Treiber den ich benutze hat 96 Byte, wobei der schon viele Betriebsystem Routinen nutzt. Er verwendet den internen I2C Bus, braucht somit keine Zusatzports!
Und ob man mit dem alles ansteuern kann, das ist auch die Frage. Manche Bausteine sollen ja etwas unterschiedliche Ansteuerungen erfordern.

Ich frag mich nur was Du da alles raus wirfst - ob das dann alles noch klappt :-)

JanPeter
11.01.2004, 23:27
So nun zum Projekt!
Wozu braucht man einen PCF8574?
Es ist ein IC der 8 I/O- Ports hat .
Rrobby wird komplett umgebaut.
Was vorher hinten war , wird vorne.
Wenn Ihr wisst was ich meine.
Robby soll hinten 2 SHARP Sensoren bekommen.
Analoge.
Da werdet Ihr Fragen wozu braucht man digitale Ports, wo doch der SHARP- Sensor analog ist .
Die sensoren werden auch analog abgefragt, aber über den PCF werde ich die möglichkeit bekommen, die Sensoren umzuschalten u.s.w

Frank
11.01.2004, 23:32
Es gibt auch I2C Bausteine die analoge Ports haben! Das wäre einfacher, da kannst du 8 analoge Sharp dran hängen.

Ich hab nochmal in das ASM File im DOwnload Bereich geschaut! Das nutzt schon internen I2C Bus. Du hast dich beim Port verguckt - das ist der interne Port A!

Gruß Frank

JanPeter
11.01.2004, 23:35
Hallo Frank !
Ich hab mich verkuckt, Du hast recht es ist PA0 und PA1 am interne I2C.
Das Programm was ich gefunden habe ist nur 51 Byte lang.

JanPeter
13.01.2004, 23:14
Hallo Frank!
Du schreibst:
Ich frag mich nur was Du da alles raus wirfst - ob das dann alles noch klappt


Und wie es klappen wird, den die ganzen ersten Befehle sind nur Bitsetzbefehle, mit zusätzlichem setzen von Flags , die überhauptnicht ausgenutzt werden.
Ich bin schon sehr nahe dran , und dann gibt es einen neuen Treiber für I2C.

Frank
13.01.2004, 23:18
Hi JanPeter
Na da bin ich aber gespannt! Kannst mal bei Gelegenheit j amal den I2C Assemblercode hier posten. Würde ich mir gern auch mal anschaun.

Gruß Frank

JanPeter
14.01.2004, 19:46
Hallo !
Hier das Beispiel, das man die Systemroutinen für den Antrieb nicht benötigt!


' EINFACHES BEISPIEL ZUR BENUTZUNG VON ANTRIEB OHNE SYS-Befehle

' ---------------------------------------------------------------------
' FUNKTION DES PROGRAMMS
'----------------------------------------------------------------------
' ACHTUNG:
' Der erste Schritt in der Initialisierung ihres Programms sollte immer die Zeile

' REV_L=on:REV_R=on:SYS PLM_SLOW

' enthalten. Diese Zeile initialisiert die Ports für die Richtungsumschaltung
' des Antriebs und die PLM Frequenz.

' DER BETRIEB DER MOTOREN OHNE DIESE INITIALISIERUNG FÜHRT UNWEIGERLICH ZUR ZERSTÖRUNG
' DER ANTRIEBSELEKTRONIK !!
'-----------------------------------------------------------------------------------


' Für dieses Beispiel sind folgende SYSTEMROUTINEN relevant:
'
' POWER:
' gosub SUBSYS_PWR_ON ;Schaltet die Subsysteme EIN/AUS
' gosub SUBSYS_PWR_OFF

' AUSGABEN:
' gosub LED1ON ;zum Ein/Ausschalten der LED1 analog auch
' gosub LED1OFF ;LED 2bis 4
' gosub LEDSOFF ;schaltet alle LEDS aus
'
' ACS:
' gosub NO_ACS_INT ;Interruptbetrieb abgeschaltet
' SYS ACS_HI ;ACS HI POWER (SEHBEREICH ca. 60cm)
' SYS ACS_LO ;ACS LO POWER (SEHBEREICH ca. 30cm)
' SYS ACS_MAX ;ACS MAX POWER(SEHBEREICH ca. 100cm)
' SYS COMNAV_STATUS ;Abfrage des ACS
'-------------------------------------------------------------------
' ANTRIEB Neu
'
' GOSUB REVR ;Kette rückwärts laufen lassen R/L
' GOSUB REVL

' GOSUB FWDR ;Kette vorwärts laufen lassen R/L
' GOSUB FWDL

' GOSUB FWD ;beide Ketten vorwärts
' GOSUB REV ;beide Ketten rückwärts

' GOSUB ROTR ;Auf der Stelle nach R/L drehen
' GOSUB ROTL
'----------------------------------------------------------------
'--------------------------
'------ I/O PORTS ---------
'--------------------------
'- INTERFACE LCD/EXTPORT --
define sdio port[1]
define sclio port[3]
define strobe port[4]
'-- INTERFACE COM/NAV -----
define DATALINE port[1]
define CLOCKLINE port[2]
'--------------------------
'------ SENSORS ---------
'--------------------------
define LIGHT_L ad[7]
define LIGHT_R ad[6]
define SYS_VOLTS ad[3]
define CHRG_CURRENT ad[2]
define SYS_CURRENT ad[1]
define MIC ad[4]
define TOUCH ad[5]
'---------------------------
'------ DRIVE -------------
'---------------------------
define SPEED_L da[1]
define SPEED_R da[2]
define REV_L port[6]
define REV_R port[5]
'--------------------------
'---- SYSTEM MEMORY -------
'--------------------------
'--- INTERFACE BUFFER ----
define LBYTE byte[1]
define HBYTE byte[2]
define SUBCMD byte[3]
'---- OPERATION DATA ------
define EXTPORT byte[4]
define LED1_F bit[29]
define LED2_F bit[30]
define LED3_F bit[31]
define LED4_F bit[32]
define SYSTEM_STATUS byte[5]
define ACSL_F bit[33]
define ACSR_F bit[34]
define IR_F bit[35]
'--------------------------
'---- USER MEMORY -------
'--------------------------
define TIM byte[6]
define PGM byte[7]
'--- SYSTEMROUTINEN -----------
define PLM_SLOW &H01C4
define SYSTEM &H01C9
define COMNAV &H0154
'- ERWEITERTE SYSTEM ROUTINEN -
'-------------------------------------------------------------------
define COMNAV_STATUS &H0125 'UPDATED ALLE FLAGS IM STATUS-REGISTER
define ACS_LO &H01E1 'ACS POWER LO
define ACS_HI &H01E9 '
define ACS_MAX &H01F1 '
define SEND_TLM &H014A 'SENDET TELEMETRIE (CH=HBYTE,DATEN=LBYTE)
define SEND_SPEEDR &H0134 'SENDET TLM KANAL 8,PLM RECHTS
define SEND_SPEEDL &H013A 'SENDET TLM KANAL 7,PLM LINKS
define SEND_SYSSTAT &H0144 'SENDET TLM KANAL 0,SYSTEM STATUS
'(FLAGS für ACS,FWD/REV, ACS_LO/HI/MAX)

'---------- INIT---------------
gosub SUBSYS_PWR_ON
beep 368,10,50
'---- SYSTEM OPERATION MODE (NO INTERRUPT) ----
gosub NO_ACS_INT:beep 368,10,0:SYS ACS_MAX
'------------ ANTRIEB -------------------------
REV_L=on:REV_R=on:SYS PLM_SLOW

'--------------------------------------------
'--- DEMO ANTRIEB ---
'--------------------------------------------
#loop
pause 5:SYS COMNAV_STATUS
'--------- LEDs ansteuern --------------------
if ACSL_F=on then gosub LED4ON else gosub LED4OFF
if ACSR_F=on then gosub LED1ON else gosub LED1OFF
'--------- AUSWEICHMANÖVER EINLEITEN ---------
if (ACSL_F and ACSR_F)=on then goto rotate
if ACSL_F=on then goto move_right
if ACSR_F=on then goto move_left
'SYS FWD:SPEED_L=85:SPEED_R=85:goto loop
gosub FWD:SPEED_L=85:SPEED_R=85:goto loop

'-------- AUSWEICHEN NACH RECHTS -------------
#move_right
SPEED_R=70:SPEED_L=85:goto loop
'-------- AUSWEICHEN NACH LINKS -------------
#move_left
SPEED_L=70:SPEED_R=85:goto loop
'---------- ROTIEREN --------------------
#rotate
SPEED_L=85:SPEED_R=85:gosub ROTR:goto loop
'----------------------------------------------



'IIIIIIIIII Neue ANTRIEBSROUTINEN IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
' Damit im Treiber Platz wird, kann auch mit altem Treiber p5driv.s19
' benutzt werden ,bringt aber dann nichts !-)

#REVR 'ANTRIEB RECHTS RÜCKWÄRTS
REV_R=off
return
#REVL 'ANTRIEB LINKS RÜCKWÄRTS
REV_L=off
return
#FWDR 'ANTRIEG RECHTS VORWÄRTS
REV_R=on
return
#FWDL 'ANTRIEB LINKS VORWÄRTS
REV_L=on
return
#ROTR 'RECHTS DREHEN
gosub FWDL
gosub REVR
return
#ROTL 'LINKS DREHEN
gosub FWDR
gosub REVL
return
#REV 'RÜCKWÄRTS
gosub REVL
gosub REVR
return
#FWD 'VORWÄRTS
gosub FWDL
gosub FWDR
return
'-------------------------------------------------------------------

'IIIIIIIIIII LED DRIVER IIIIIIIIIIIIIIIII
#LED1ON
LED1_F=on:goto EXTPORT_WRITE
#LED1OFF
LED1_F=off :goto EXTPORT_WRITE
#LED2ON
LED2_F=on:goto EXTPORT_WRITE
#LED2OFF
LED2_F=off:goto EXTPORT_WRITE
#LED3ON
LED3_F=on:goto EXTPORT_WRITE
#LED3OFF
LED3_F=off:goto EXTPORT_WRITE
#LED4ON
LED4_F=on:goto EXTPORT_WRITE
#LED4OFF
LED4_F=off:goto EXTPORT_WRITE
#LEDSOFF
EXTPORT=EXTPORT and &H0F:goto EXTPORT_WRITE
#EXTPORT_WRITE
SYS SYSTEM:pulse STROBE:RETURN

'IIIIII SYSTEMROUTINEN COMM/NAV SYSTEM IIIII

#GET_IRDATA
SUBCMD=1:sys COMNAV:return
#SEND_IRDATA
SUBCMD=0:sys COMNAV:return
#RC5
SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFC
HBYTE=00:SUBCMD=2:sys COMNAV:return
#RC5_INT
SUBCMD=4:sys COMNAV:LBYTE= (HBYTE and &HFE)or 2
HBYTE=00:SUBCMD=2:sys COMNAV:return
#REC80
SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H01)and&HFD
HBYTE=00:SUBCMD=2:sys COMNAV:return
#REC80_INT
SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H03)
HBYTE=00:SUBCMD=2:sys COMNAV:return

'IIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIII
#NO_ACS_INT
SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFB
HBYTE=00:SUBCMD=2:sys COMNAV:return
#ACS_INT_200
SUBCMD=4:sys COMNAV:LBYTE= HBYTE or &H04
HBYTE=50:SUBCMD=2:sys COMNAV:return
#SUBSYS_PWR_ON
sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE)or 8
sys SYSTEM:return
#SUBSYS_PWR_OFF
EXTPORT=(EXTPORT and &HF7)or 1:sys SYSTEM
deact sdio:deact sclio:return
#CLR_DISTANCE
SUBCMD=3:sys COMNAV:return
#L_DISTANCE
SUBCMD=6:sys COMNAV:return
#R_DISTANCE
SUBCMD=7:sys COMNAV:return
'---------COM/NAV GERÄTEREIBER -------------
'syscode "p5driv.s19"

JanPeter
14.01.2004, 20:42
Hallo Frank !
Hier mal ein kürzerer Treiber für I2C. ( Ist aber nicht von mir)


;Ansteuerung eines PCF8574 über SDA und SCL
;Verwendung des vorhandenen I2C-Bus

.org $101
;EEPROM vom Bus abmelden
jsr $08BB ;I2C_ReadLast
;Schreibzugriff auf PCF8574
ldx $0A1 ;Adresse PCF8574 lesen
jsr $083C ;I2C_Start
ldx $0A2 ;Daten lesen
jsr $0846 ;I2C_Write
jsr $08E5 ;I2C_Stop
;Lesezugriff auf PCF8574
ldx $0A1 ;Adresse lesen
incx ;Lesebit setzen
jsr $083C ;I2C_Start
jsr $086F ;I2C_Read
sta $0A2 ;Daten speichern
jsr $08BB ;I2C_ReadLast
;EEPROM wieder anmelden
ldx #$0A0 ;Adresse 24C65, write
jsr $083C ;I2C_Start
ldx $066 ;AdrCounter Hi
jsr $0846 ;I2C_Write
ldx $067 ;AdrCounter Lo
jsr $0846 ;I2C_Write
ldx #$0A1 ;Adresse 24C65, read
jsr $083C ;I2C_Start
rts
.end

Frank
14.01.2004, 20:56
Hi
Das Programm ist dem im Download-Bereich sehr ähnlich, nutzt nur eine Sytemroutine mehr! Muß man halt mal testen!

JanPeter
14.01.2004, 22:06
Hallo Frank !
Nein 2!
I2C-Write
und
I2C-Start

JanPeter
14.01.2004, 22:08
Hallo Frank !
Ich habe den neuen Treiber mit dieser I2C-Routine für Robbi fertig.
Muß ich nur noch Testen, schätze mal am Wochenende kann ich mehr sagen. :D

jörg
15.01.2004, 11:49
Hallo janpeter,
könntest Du bitte Dein Dis-Assemblat irgendwie verfügbar machen?
mfg jörg

JanPeter
15.01.2004, 18:21
Hallo Jörg!
Erst mal muß ich testen ob alles funktioniert!

jörg
15.01.2004, 19:18
OK, und danke im Voraus.
PS: wenn ich Dir dabei helfen kann: melde Dich (seit gestern abend habe ich auch so einen Robby - hat mich schon die erste Nacht gekostet, ist aber witzig!)

jörg
17.01.2004, 16:56
Jetzt war ich doch zu ungeduldig, und deshalb habe ich den P5DRIV auch disassembliert. Ich habe ihn im Thread "Frage an DIE HARD gibt es den..." beigefügt - vielleicht spart sich jemand unnötige Mühen.
PS: ich bin mir nicht sicher, dass alles stimmt, sieht aber plausibel aus.

JanPeter
17.01.2004, 19:21
Hallo jörg!
Das ist ja Super , diese Info hätte ich vor einer Woche gebraucht. :D
Aber es ging auch so.
In meinem neuen Treiber p5drivi2c.s19 mußte ich auf den LED_DRIVE
verzichten. ( wegen Platzmangel)
Ich hatte nur noch 7 Byte frei. :cry:
Gibt es eine Möglichkeit in BASIC , auf der Erweiterungsplatine die 8 LED anzusteuern?

JanPeter
17.01.2004, 19:25
Hallo !
Hier ist der Treiber für I2C!
Getestet und läuft.

JanPeter
17.01.2004, 19:36
Hallo !
Da ich hier keine .S19 Datei ablegen kann , habe ich daraus .txt gemacht.
Ihr müßt also die Endung in .S19 ändern.

jörg
17.01.2004, 19:50
Hallo Jan-Peter,
muss jetzt leider weg,
aber LED_DRIVE und SYSTEM sind fast gleich, und ausserdem müsstest du eigentlich jede Menge assembler aus den originaltreibern rausnehmen können, hab die Teile im Posting markiert, aber noch nicht probiert (oder hast du die schon raus und getestet?).
Und vielen Dank für die Treiber; bin gespannt!

jörg
17.01.2004, 20:15
Hallo JanPeter,
bin doch noch nicht weg, und hab mir's angeschaut.
Du hast doch SYSTEM drin, dann sollte LED_DRIVE auch gehen: Beide kopieren einfach alle bits aus dem cache rüber, unterschied ist nur ein index-wert von 2, und 5 bytes länger (wenn ich mich nicht verzählt hab).
So siehts im p5driv12 aus:

; ---------------------------------------------------------------------------
; SYSTEM: copy EXTPORT to external port
;
; read : a,x
; write: a,x,$1(%00000101)
;
; called from $01e6,$01ee,$01f2
; ---------------------------------------------------------------------------

01c7 : 5f clrx ; clear index register
01c8 2002 bra $01cc ; branch always to $01cc

; ---------------------------------------------------------------------------
; CCRP5-BE only: LED_DRIVE: show LEDs on BE
;
; read : a,x
; write: a,x,$1(%00000101)
;
; never called
; ---------------------------------------------------------------------------

01ca : ae02 ldx #$02 ; load index register with value #$02
01cc : a608 lda #$08 ; load accumulator with value #$08
01ce : 69a4 rol $a4,x ; rotate left through carry at $a4 + x-reg.
01d0 1101 bclr #0,$01 ; clear bit #0 at memory address $01
01d2 2402 bhs $01d6 ; branch if accu is higher or same (C clear)
01d4 1001 bset #0,$01 ; set bit #0 at memory address $01
01d6 : 1501 bclr #2,$01 ; clear bit #2 at memory address $01
01d8 1401 bset #2,$01 ; set bit #2 at memory address $01
01da 4a deca ; decrement accumulator
01db 26f1 bne $01ce ; branch if not equal (Z is clear)
01dd 69a4 rol $a4,x ; rotate left through carry at $a4 + x-reg.
01df 81 rts ; return from subroutine

; ---------------------------------------------------------------------------

Jetzt muss ich aber wirklich!

JanPeter
17.01.2004, 20:41
Danke jörg!
Ich schau es mir mal an!

JanPeter
17.01.2004, 21:18
Hallo jörg!
Ich habe p5driv.s19 zur änderung genommen, und da sieht System irgend wie anders aus!

jörg
18.01.2004, 02:06
Hallo JanPeter,
stimmt schon, aber: stimmt schon.
Wenn du den p5driv genommen hast, dann müsste SYSTEM auf 01c9 beginnen, wie in meinem dis-assembly. Im p5driv12 beginnt LED_DRIVE auf 01CA, und gleicht dem alten SYSTEM ab 01cc. Hauptunterschied ist der Zugriff auf die bits, nämlich alt: "rol $a4" und neu "rol $a4, x", also indiziert über das x-reg. Im neuen SYSTEM wird der Inhalt von x jetzt auf "0" gesetzt (damit wird $a4 = EXTPORT übertragen), und im LED_DRIVE ist x = "2" (damit wird $a4 + 2 = $a6 = LEDPORT übertragen).
Wenn du mir deinen p5-i2c asm source schickst, kann ich dir's reinbasteln.

JanPeter
18.01.2004, 12:17
Hallo jörg!
Ich kann Dir noch nicht den p5drivi2c.s19 in asm souce schicken.
Da ich nicht mit Assembler gearbeitet habe.
Ich habe den Treiber mit einem Textprogramm geschrieben. Also die .S19 Datei geändert.
Habe alles nur auf Papier.
Aber ich kann Dir schreiben was ich gemacht habe.
COMNAV-STATUS nach 013B verschoben
Ab 014A bis Ende bleibt alles beim alten
Ab 0101 bis 0133 I2C-Routine ( hatte ich oben im Beitrag :“Hier mal ein kürzerer Treiber für I2C“ reingestellt)
Änderung 0105 und 0112 auf A7 (Variable adressei2c)
010A und 011B auf A8 (Variable dateni2c)
0134 bis 013a NOP (7 Byte frei)

jörg
18.01.2004, 14:46
Hallo JanPeter:
OHA -- Das ist schon heftig, wenn man alles per Hand ausrechnen muss!
Ich hab Dir eine kleine Anleitung geschrieben, was Du machen könntest, habs aber nicht ausprobiert.
Viel Spass dabei!

JanPeter
18.01.2004, 23:57
Hallo jörg!
Danke für die Hinweise.
Die Sprungweite ist falsch berechnet, es sind nur 93.
Aber das Programm läuft so nicht.
Es bleibt im LED_DRIVE hängen!
Muß jetzt schluß machen, den ich muß Morgen arbeiten.

JanPeter
19.01.2004, 20:56
Danke für Deine Tips! :D
Ich habe mich in der Sprungweite auch verrechnet.( 1Tag umsonst)
Ich habe einen JMP genommen.

Aber hier ist der Neue Treiber für I2C und LED auf der Erweiterungsplatine. :lol:

Endung muß wieder von .txt in .S19 gewandelt werden!

Und ein Demo in BASIC.

JanPeter
19.01.2004, 21:26
Hallo jörg!
Problem mit der Sprungweite von BRA - Befehl erkannt.
Du hast Dich doch verrechnet. Es sind nur 93.
Und Ich hab mich geirrt, bei einem BRA-Befehl kann man nur
128 (80H) Schritte vorwärts Springen.
Aber mit einem JMP geht es.

jörg
20.01.2004, 01:57
Hallo JanPeter-
Gratuliere! Sobald ich meine Teile habe, werd ich's probieren!
(PS: Gemeinsam geht's anscheinend wirklich besser)

JanPeter
21.01.2004, 09:34
Danke jörg!

Hier noch der Stromlaufplan für I2CLED-demo1.bas.
(Eigentlich I2C.Demo)
Dateiendung von .txt in .doc ändern!

X1-Alpha
21.01.2004, 10:43
hei wenn ich hier euch so recht folgen kann habt ihr es geschafft einen Treiber für die I2C SChnittstelle zu basteln. Bloss wo ist die Schnittstelle auf der Platine des Robys überhaupt?? Danke

JanPeter
21.01.2004, 17:41
Hallo X1-Alpha!
Wenn Du die Erweiterungsplatine hast , dann schau Dir den Stromlaufplan an.

JanPeter
21.01.2004, 18:11
SDA
68HC05B6,PA0,Pin31/Grundplatine,Y79/Erweiterungspl.,Y136(C2),Y153(U2)/ Exp.-Pl,Y93(C2),Y127(U2),Y331
SCL
68HC05B6,PA1,Pin30/Grundplatine,Y78/Erweiterungspl.,Y135(C2),Y152(U2)/Exp.-
Pl,Y92(C2),Y126(U2),Y330

Ich hoffe ich konnte Dir helfen.

bewild
21.01.2004, 22:50
Hallo Jan Peter,
sind die SDA/SCL von der Spg schon konform mit I2C?
Ist der I2C dann kompatibel zu den I2C Bausteinen die es so gibt (SD20)?

Gruss
Bernd

JanPeter
22.01.2004, 17:44
Hallo Bewild!
Ja , nur noch je ein 1 K Ohm Widerstand gegen + 5 Volt.(siehe Stromlaufplan, oben im Beitrag von mir)
Ich habe es mit dem PCF8574 probiert.

bewild
25.01.2004, 09:09
Hallo JanPeter,

was machst du denn mit deinem PCF 8574?

Bernd

JanPeter
26.01.2004, 13:01
Hallo bewild!
Ich habe 8 digitale Ausgänge bzw. Eingänge.

Dafür habe ich das Projekt gegründet, jeder kann sich was ausdenken.
Ich will ja nicht alles vorgeben, was man damit machen muß.

jörg
07.02.2004, 15:59
Hallo JanPeter,
Wenn ich zusätzliche Hardware an den Robby anschliessen will, komme ich immer wieder ins Sinnieren, weil beim Robby Vcc (absichtlich) nicht "5V, stabilisiert" ist, sondern "ca. 7 V, unstabilisiert".

Für "normale" Logik-Gatter (NAND...) nehme ich deshalb die HCT - Typen, oder die HC-Typen: die sind auch auf dem Robby drauf, und deshalb geht es ja wohl.

Was mache ich bei PCF (für den I2C-Bus)?

Ich hab jetzt erst Dein Bild (oben) genauer angeschaut, und da sehe ich, dass Du das PCF an der Experimentierplatine an "Y170 = +5 V" angeschlossen hast.
Was mich jetzt wundert: OK, das PCF läuft mit +5V stabilisiert, aber die SCL und SCA Leitungen zur CC1 liegen ja nach wie vor auf +7V -- ist das OK?

JanPeter
07.02.2004, 19:18
Hallo jörg!
Ja den PCF hab ich an die 5 Volt (Y170) und das mit der Ansteuerung klappt.

JanPeter
11.02.2004, 21:58
Hallo so nun zurück zum Projekt!
Ich hab mir eine eigene Erweiterungsplatine gebaut.
Hinten sind jetzt zwei SHARP Sensoren drauf.
Was hinten war ist jetzt vorne!
Und bin ebend auf meiner Versuchsstrecke (1,5 M * 2,0 M, Oval)
mit 6 NiMH-Akkus , 57 Minuten durch die Strecke gedüst, ohne die Styroporabgrenzung zu durchbrechen!
Und Hindernisse in den Weg gestellt,Robby ist ausgewichen.
Robby ist schon wie eine Ameise, er weicht den Hindernissen aus, und das 57 Minuten lang.
Es gibt aber noch was zu programmieren, wenn er zwei Hindernisse erkennt , läuft er hin und her.

bewild
12.02.2004, 21:12
Hallo JanPeter,

hast du auch Bilder von deiner Platine?
Bernd

JanPeter
12.02.2004, 22:50
Hallo Bernd!
Ja

jörg
13.02.2004, 00:46
Geil!

jörg
15.02.2004, 19:54
Uff, endlich bin ich auch so weit:
Meine Erweiterungsplatine geht (with a little help von JP), I2C geht, und ich benutze es zur Ansteuerung meines LCD.

Allerdings musste ich den/die Assembler-Treiber ziemlich radikal umbauen: enthält jetzt nur noch COMNAV, SYSTEM mit PLM_SLOW, LEDPORT (noch), und neu I2C und I2C-LCD Routinen (inklusive Ausgabe über PRINT). Parallel dazu musste ich einiges an Basic-Treiber tun. Habs hier unter "RP5, Erweiterungsboard und altes C-Control1" reingeschrieben.

Aber mein armer Robby kommt schon seit Tagen nicht mehr in Fahrt, steht nur noch auf dem Tisch rum und erträgt geduldig die Lasten von Boards, Mini-Boards, Steckbrettern und Kabeln - kein schönes Leben für einen MOBILE robot...

19.03.2004, 21:59
hello robot fans

my german is not so good, I does it but in english

I have also bought the rp5
but I don't now where I can receive my "print" instructions on my pc

greetings aart mulder NL.

19.03.2004, 22:25
I have also bought the rp5
but I don't now where I can receive my "print" instructions on my pc


You will recieve the output of your print commands in a terminal programm on your PC.


You can either use "Hyperterminal" thats delivered with Windows or you can use "Miniterm" thats delivered with your RP5 Software.
(C:\Program Files\CCRP5\CCE\Miniterm.exe)

For example:
C:\Program Files\CCRP5\CCE > miniterm 1
if you use Com-Port 1
or
C:\Program Files\CCRP5\CCE > miniterm 2
if you use Com-Port 2

While using Miniterm or Hyperterminal you must shut down your CRP-Software, because otherwise it will block the Com-Port.

JanPeter
20.03.2004, 21:11
Hallo !
So nun läuft Robby über I2c - Erweiterung (System-Bus)
Die Sharp Sensoren reagieren viel schneller als über AD-Eingang.
Das haben wir jörg zu verdanken, er hat in Assembler einen sehr guten Treiber geschrieben!

23.03.2004, 19:45
hello gast

thank you for your help
it will luck now

aart mulder

28.03.2004, 19:19
hallo rp5 freunde

ich habe probleme mit der gateway auf cc2 und deren plm ausgängen.
wie funtioniert die plm programmierung für servos 0,9ms-2ms
bitte helft mir!

vossy
mail:www.vossybarg@aol.com

28.05.2004, 12:43
Können die NiCd -Akkus durch NiMH ersetzt werden?


MfGr

Alex

Dirk
28.05.2004, 21:39
Hallo JanPeter und alle,

ich hätte da ein einfaches Projekt "ALPHA" für den Anfang, was auch nicht so teuer ist:

1. AUFGABEN:
1.1. Konstante Anzeige der DCF-Uhrzeit, des DCF-Datums und der Akku-Spannung (SYS_VOLTS) auf dem LC-Display.
1.2. "Überleben" über einen Zeitraum von 4 Wochen mit Solarladung in einem (ruhigen!) Zimmer mit Süd- oder Westfenster.

2. BEDINGUNGEN:
2.1. Hardware:
- Robby RP5 mit Erweiterungsplatine, Experimentierplatine und LC-Display
- 6x Mignon-Akkus (NiMH oder NiCd) 1700 bis 2300 mAh
- 1x Solarzelle ASI3Oo07/122/115 von RWE Solar (CONRAD 112240)
- 1x DCF-Modul (CONRAD 641138)
2.2. Software:
Treiber: "P5DRIV12.S19". Sonst völlig freigestellt.

3. ERKLÄRUNGEN:
Zu 1.1.:
Die Anzeige muß ständig erfolgen, eine DCF-Synchronisation wird 4x/Tag erzwungen. Innerhalb 1 Stunde muß eine gültige Anzeige wieder erreicht werden, ansonsten erfolgt Programmabbruch: SCHEITERN DER AUFGABE!
Zu 1.2.:
Zur Ladung darf nur das angegebene Solarmodul verwendet werden. Eine Zusatzladung durch andere Energiequellen darf nicht erfolgen. Wenn die Akkuspannung unter 7,0 Volt sinkt (Digital: 179), erfolgt Programmabbruch: SCHEITERN DER AUFGABE!
Zu 2.1.:
Das Solarpanel muß fest auf dem Robby montiert werden. Die Neigung kann selbst gewählt werden.
Das DCF-Modul muß ebenfalls fest auf der Experimentierplatine montiert werden, der Abstand größer als 5 cm sein. Die Antenne muß rechtwinklig zum Roboter-Körper angebracht werden.
Es dürfen KEINE weiteren Bauteile zur Energiegewinnung oder zur DCF-Empfangsverbesserung verwendet werden.
Sonstige aktive und passive Bauteile können beliebig eingebaut werden, dies gilt auch für Sensoren. Somit kann eine umfangreiche Ladeschaltung oder Sensorik entwickelt werden.
Die Kapazität der Akkus ist nicht wesentlich relevant, da ein Überleben über 4 Wochen ohne Zuladung auch mit hohen Kapazitäten nicht gelingt.
Eine Hardwareänderung ist nach dem Start der 4 Wochen NICHT mehr erlaubt. Falls eine Hardwareänderung erfolgen soll, beginnt die Zeit von vorn.
Zu 2.2.:
Die Herausforderung des Projekts ALPHA ist die Entwicklung der KI. Der Robby kann im Zimmer umherfahren oder sich drehen, um DCF-Empfang zu erreichen oder das Solarpanel ins Licht auszurichten. Oder er kann das eben auch NICHT tun, weil der Antrieb viel Strom braucht. Alles eine Sache des Programms. Ohne KI wird es nicht gehen, weil das Solarpanel kein besonderes "Powerpaket" ist, sondern nur eine Ergänzungsladung ermöglicht. Daher muß sich die KI etwas einfallen lassen!
Auf jeden Fall müssen folgende Aufgaben von der Software geleistet werden: Anzeige von gültiger DCF-Uhrzeit u. -Datum sowie Akkuspannung (V) im LC-Display, Erzwingen einer DCF-Synchronisation alle 6 Stunden durch einen von der DCF-Zeit unabhängigen Zähler, Überwachen der Akkuspannung und Programmabbruch, wenn SYS_VOLTS < 179 ist; ebenfalls Programmabbruch, wenn nach 1 Stunde kein DCF-Empfang gelingt (4x/Tag!).
Eine Softwareänderung ist während des 4-Wochen-Zeitraums ERLAUBT. Der Robby muß aber nach Upload der Software sofort wieder auf seine alte Position im Zimmer gestellt werden und darf natürlich NICHT nachgeladen werden.

---------------------------------------------------------------------------------

Was haltet ihr von dem Projekt?

Ich hätte Lust, bald anzufangen!

Gruß Dirk

Manf
28.05.2004, 22:57
Die Regeln sind zum Teil sehr präzise aber andererseits steht nicht drin, ob der Kandidat eine Lampe einschalten darf, was im Sinn der bestehenden Regeln eine große Erleichterung wäre.
Ich habe also die Zielsetzung noch nicht verstanden(, oder gerade doch?).
Manfred

JanPeter
28.05.2004, 23:08
Hallo Dirk!
Das Projekt hört sich gut an!
Ich würde in Deinem Projekt ,noch eine Erweiterung einbringen wollen,
das die Zeit und die Spannung noch angesagt wird!
Das macht es noch Interessanter!

JanPeter
28.05.2004, 23:13
Hallo Dirk!
Das Projekt ist gut, aber ohne Die Bedingung, das man eine Erweiterungsplaine von C.... benutzen muss!
Ich würde vorschlagen eine Erweiterungsplatine nach jedem seinem ermessen!

JanPeter
28.05.2004, 23:17
Hallo Dirk!
Und ohne vorgabe des Treibers P5DRIV12.S19
Denn sonst kommt es nicht zu einer Weiterentwicklung.

JanPeter
28.05.2004, 23:46
Hallo Dirk!
Denn wir sind hier schon ein bisschen weiter , als Du
Wir haben schon eine Erweiterung über I2C über Systembus.
Mit Ports AD, DA ,Sprachausgabe über I2C mit Spannungsansage, Menüpunktansage.
Abschaltung bei Unterspannung u.s.w
Speichererweierung auf 32kBEEPROM für BASIC-Programm.
Die Idee ist aber sehr gut , das es endlich einen Vergleich gibt.
Die Frage ist bloss wie ?
Entweder wird alle mechanik gleich verwendet.(Das ist nicht sehr gut)
Oder jeder baut seine eigenes Fahrgestell.
Denn meine Gleitlager sind seit Dezember 2003 so ausgelutscht, das sie ein Spiel haben von 1 mm , und an den Radkasten schleifen.
Folge , Distancecounter kann nicht ausgewertet werden!
Die DCF-Antenne bekommt so viel einstreüunengen von der Hauptplatine , das nach einer Stunde immer noch kein Signal empfangen wird!

Dirk
29.05.2004, 07:09
Hallo JanPeter, hallo Leute,

war wohl ein bißchen naiv, das Projekt. [-(
Werde 'mal allein anfangen, da ich hardwaremäßig noch nicht soweit wie ihr bin!
Grundsätzlich könnte ich mir aber so etwas Einfaches auch mit eurer Hardware vorstellen.
Der Reiz wäre nicht ein optimales Solarpanel und eine Super-DCF-Aktivantenne, sondern eben genau die schlechteren Teile, so daß nur die KI gewinnen kann.
... und von wegen Lampe einschalten: Natürlich soll es nur mit Sonnenlicht gehen, abends könnte man natürlich in dem Zimmer Lampen anmachen, allerdings nicht einen starken Strahler extra für Robby in Bodennähe aufstellen.

Gruß Dirk

JanPeter
01.06.2004, 00:05
Hallo Dirk!
Wie kann KI gewinnen, wenn der Körper nicht mit macht?????

recycle
01.06.2004, 02:21
@Dirk


Der Reiz wäre nicht ein optimales Solarpanel und eine Super-DCF-Aktivantenne, sondern eben genau die schlechteren Teile, so daß nur die KI gewinnen kann.

Wenn wir jetzt einfach mal so tun als seien wir alle keine Wissenschaftler sondern ganz gewöhnliche Spielkinder, könnte man dein Projekt vielleicht auch einfach als "Programmierwettbewerb" deklarieren.

Man nehme Robby CRP, überlege sich gemeinsam eine Aufgabe und versuche eine Programm zu schreiben, dass diese Aufgabe möglichst gut erfüllt.

Wenn man da sowohl die Stärken und Schwächen von Robby als auch die Stärken und Schwächen der meisten Menschen einbezieht, könnte das auch gleich für viel mehr Leute recht interessant sein.

Robbys Schwäche:
- er ist ein bischen zu laut und auch mechanisch nicht besonders gut geeignet um Tage- oder Wochen ununterbrochen durch die Wohnung zu cruisen
Robbys Stärke:
- er ist im Orignalzustand schon fähig eine ganze Reihe aufgaben zu erfüllen, d.h. wenn man ihn nimmt wie er ist, hätten mehrere Leute dieselben Randbedingungen wenn es darum geht das beste Programm zu schreiben.

Menschliche Schwächen:
- viele Leute haben nicht die Geduld 4 Wochen zu warten ob ihr Programm die Aufgabe erfüllt.
- manche Leute tendieren dazu ihre Wohnung innerhalb von 4 Wochen hin und wieder mal aufzuräumen, umzuräumen und zu säubern, was Robby bei der Ausführung seiner Aufgabe behindern könnte.
- manche Leute wollen mit ihren Robby auch etwas mehr erleben als ihm 4 Wochen lang bei der Arbeit zuzusehen.
- manche Leute wohnen nicht in Südlage ;-)

Würde man eine Aufgabe definieren für die keine zusätzliche Hardware erforderlich ist, könnten sich viel mehr Leute an so einem Projekt beteiligen und bei gleicher Hardware würde auch tatsächlich das beste Programm (oder von mir aus auch die beste KI) entscheiden.

Wenn man dann noch eine Aufgabe definiert die nicht gleich 4 Wochen dauert, hätten vermutlich auch mehr Leute Spass dran.

Man könnte doch z.B. auch einfach einen Parcour definieren den Robby möglichst schnell und sinnvoll abfahren muss oder irgenwas in diesem Umfang.
Da hätten dann alle (ausser JanPeter) gleiche Bedingungen, die Spielkinder hätten etwas mehr Action, die Hausfrauen wären nicht so sehr ausgebremst, die restlichen Familienmitglieder könnten Nachts in Ruhe durchschlafen und es würde tatsächlich die beste "KI" und nicht das dickste Solarpanel bzw. die sonnigste Südlage entscheiden.

Dirk
01.06.2004, 23:12
Hallo recycle,


Wenn wir jetzt einfach mal so tun als seien wir alle keine Wissenschaftler sondern ganz gewöhnliche Spielkinder,...

... du hast ja Recht!
Wir sind WISSENSCHAFTLER und KEINE Spielkinder!!!!! Deshalb nehme ich alles zurück und schlage nichts mehr vor (auch wegen der vielen Hausfrauen, denen der Robby dann bei der Zimmerreinigung um den Staubsauger herum fahren würde, wegen der nächtlichen Ruhestörung und wegen dem Gedulds- und Südlageproblem).


Hallo JanPeter,

sicher ist der "Körper" des Robby eher das Problem, als die KI.
Aber wie gesagt: Man müßte über so ein einfaches Projekt noch 'mal nachdenken!

Gruß Dirk

02.06.2004, 04:04
Hallo Dirk


... du hast ja Recht!
Wir sind WISSENSCHAFTLER und KEINE Spielkinder!!!!! Deshalb nehme ich alles zurück und schlage nichts mehr vor

So war mein Posting eigentlich überhaupt nicht gemeint.
Ich finde deinen Vorschlag an sich doch interessant, nur halt etwas ungünstig verpackt.
Ich glaube einige Leute haben sich den Robby CRP gekauft, weil sie programmieren und nicht unbedingt an der Hardware basteln möchten.
Andere möchten vielleicht schon irgendwann auch an der Hardware basteln, aber noch nicht solange er neu ist. Wieder andere möchten sich auch einfach kein Solarpanel und DCF Modul kaufen.

So wie du deinen Vorschlag beschrieben hast, soll es auch nicht auf besonders ausgeklügelte Hardware, sondern auf geschickte Programmierung ankommen.
Deswegen finde ich, man könnte eventuell komplett auf zusätzliche Hardware verzichten und dadurch viel mehr Robby Besitzern ermöglichen an dem Projekt teilzunehmen.
Ich glaube schon, dass es hier einige Robby Besitzer gibt, die es ganz interessant fänden gemeinsam an einem Programm zu tüfteln das irgendeine vorher definierte Aufgabe möglichst gut erfüllt.
Interessanter als sich selber irgendwelche Aufgaben auszudenken und dann ohne Vergleich selber auszudenken ob die Aufgabe gut erfüllt wurde finde ich das auf jeden Fall.



wegen der vielen Hausfrauen, denen der Robby dann bei der Zimmerreinigung um den Staubsauger herum fahren würde, wegen der nächtlichen Ruhestörung und wegen dem Gedulds- und Südlageproblem

Das habe ich sicher etwas übertrieben formuliert, aber dass besonders viele Leute die Möglichkeit und die Geduld haben ihren Robby ein 4 Wochen dauerndes Programm abzuspulen kann ich mir wirklich nicht vorstellen.

Dass du Softwareänderungen während dieser Zeit erlauben willst habe ich beim ersten Mal überlesen.
Dass ändert natürlich schon etwas, weil der Besitzer dann während der 4 Wochen nicht ganz zum passiven Zuschauer gemacht wird.
Andererseits würde es aber auch das Ergebnis verfälschen -
Ich könnte z.B. nur Abends an meinem Robby rumprogrammieren, brauche dann immer eine besondes helle Schreibtischlampe und meine serielle Schnittstelle ist höllisch langsam ;-)

Einige Elemente aus deinem Projektvorschlag lassen sich leicht abgewandelt vielleicht auch ohne Zusatzhardware realisieren.
- Lichtquellen suchen müsste z.B. auch über den vorhandenen Sensor möglich sein.
- statt auf ein DCF Signal könnte er sich vielleicht auf das IR Signal irgendeiner Fernbedienung ausrichten
- den sparsamen Umgang mit den Energieresourcen könnte man eventuell über die Wegstreckensensoren kontrollieren

Smi
02.06.2004, 19:01
Hab das remote programm geändert da die acs bei kontackt ein unterprogramm starten das ihn solang in die entgegengesetzte richtung dreht bis er keinen kontackt hat und weiter forwärtz fährt
Ist erst ne beta version sozusagen ist aber funktional und er schafft winkel über 100 Grad. OK Ruckelig siehtz noch aus aber ich arbeite an einem vergleich der sensoren und 3 verschiedenen Kurvenprogrammen je nach anschlagf und Reichweite

Jogibär
08.11.2005, 10:23
Hallo,

habe jetzt alle Beiträge gelesen betreffende DCF für den RP5 aber immer noch keine Antwort gefunden auf die Frage "Wie kann ich per Programm erkennen, dass der DCF Empfang 1. ok ist und 2. die Uhrzeit aktualisiert wurde ?"

Hintergrund ist, habe den RP5 als Wecker "umgebaut" und möchte jetzt nur sicher gehen, dass die Zeit stimmt.

Gruß

Jogibär

Dirk
08.11.2005, 19:33
Hallo Jogibär,


"Wie kann ich per Programm erkennen, dass der DCF Empfang 1. ok ist und 2. die Uhrzeit aktualisiert wurde ?"

In meinen CC1-Progs stelle ich das Jahr auf 97 (Startjahr der CC1 nach dem Booten) zurück, wenn ich wissen will, ob DCF aktiv ist. Sobald das Jahr dann <> 97 ist, ist der DCF-Empfang wieder o.k.
(Das funktioniert nur bis 2096, aber dann sehe ich mir die Radieschen eh von unten an). O:)

Gruß Dirk

Jogibär
08.11.2005, 20:33
Hallo Dirk,

die von dir vorgeschlagene Lösung habe ich auch schon eingebaut.
Sie hat nur den Nachteil, dass es nur beim Start funktioniert. Läuft das System längere Zeit oder möchte ich den Empfang automatisch optimieren - den RP5 drehen z.B. - benötige ich eine Information über das Signal. Des weiteren weiß ich von meiner C-Control Einheit - gleicher Prozessor innen drin - dass es eine DCF Anzeige gibt. Gibt es vielleicht Informationen wie der DCF Empfang intern verarbeitet wird um daraus z.B. ein Sync Signal abzuleiten ?

Dank im voraus auch für Hinweise wo ich Infos über den Prozessor finden kann.

gruß

Jogibär

Dirk
09.11.2005, 17:55
Hallo Jogibär,


Des weiteren weiß ich von meiner C-Control Einheit - gleicher Prozessor innen drin - dass es eine DCF Anzeige gibt. Gibt es vielleicht Informationen wie der DCF Empfang intern verarbeitet wird um daraus z.B. ein Sync Signal abzuleiten ?

Es ist richtig, dass die C-Control I Unit eine DCF-Anzeige hat, die über eine LED ausgegeben wurde.
Das ginge mit dem Robby genau so, allerdings muss man sich da Zugang zu PA4 verschaffen. Der Pin 27 der CC1 ist aber beim Robby nicht nach außen geführt. Du must ihn also am Prozessor abgreifen. Da kannst Du dann eine LED mit Vorwiderstand als DCF-Anzeige anschließen.
Viel Spass beim Basteln!

Gruß Dirk

P.S.: Das mit dem Jahr funktioniert nicht nur beim Start, sondern jederzeit! Mit year=97 kann man immer das Jahr zurücksetzen. Es wird dann durch DCF aktualisiert, sobald ein Empfang da ist. Sobald year <> 97 wird, war der DCF-Empfang erfolgreich.
Ich mache es so: Das Jahr per DCF empfangen, in eine andere Variable geben. year = 97 setzen. In einer Schleife year abfragen. Sobald der Wert <> 97 wird, kann man die frische Uhrzeit ausgeben.
Das ist natürlich keine Anzeige der Empfangsstärke! Das ist mit der CC1 sowieso nicht möglich!