PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Robby RP5 Ladeprogramm für erweiterungs Platine .



cedra
23.08.2005, 00:38
Hallo.

Ich habe zu meinem Robby zusätzlich die erweiterungs Platine und LCD angeschafft um die ausgabe Möglichkeiten von visuelen und Wert-Anzeigen zu erhöhen.
Ich war mir nicht ganz sicher ob diese auch funktionieren ohne C-Control 2, wo ich aber auch niergnens eine gegenteilige Meldung stehen sah . Jedenfalls funktionieren die Beispiel Programme ohne cc2 tadel los.
(ich muss halt den anderen Sys treiber mit loaden lassen)

Ich will als erstes ein Programm schreiben was den Lade status der Akkus mit den auf der Erweiterungs Platine enthaltenen 8 Led's anzeigt.

Das hab ich den auch getan :



'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIII
'IIIIIIIIII MOBILE ROBOT EVALUATION PROGRAM IIIIIIIIIIII
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIII
' Erweitertes PROGRAMM ZUR ÜBERWACHUNG DES LADEVORGANGS
' Dieses Programm ist für den Robby RP5 mit erweiterungs Platine.
' Basis Program war das CHARGE TOOL von Robby .
' Frei für benutzung für alle, erweiterung , weitergeben natürlich auch frei :O)
' Aber haftbarkeit für etwelche Schäden werden abgelehnt.
' Status NICHT funktional . :O(
' Version 0.2
' ACHTUNG:
' Wenn Sie den Akku des Roboters laden, MUSS der Schalter so geschaltet sein,
' dass der Roboter in Betrieb ist !!!
' Andernfalls würde eine zu hohe Ladespannung leicht zur Zerstörung der
' empfindlichen Elektronik führen.
' Starten Sie das Programm BEVOR sie das Ladegerät anstecken, weil
' beim Start eine Calibrierung durchgeführt wird und dabei kein Ladestrom
' fliessen darf.
' ---------------------------------------------------------------------
' FUNKTION DES PROGRAMMS
'----------------------------------------------------------------------
' Der Bezeichner SYS_VOLTS ist der A/D-Wandler, der die Akkuspannung misst.
' Ein Digit entspricht dabei 39,2 mV, der Messbereich geht bis 10 V
' Die Akkuspannung wird als Balkenanzeige mit den Leuchtdioden angezeigt.
' Die Schwellen sind folgendermassen eingestellt:
' LED 1 - blinkend:7,1736 V / LED 1 - leuchtend:7,3304 V
' LED 2 - blinkend:7,4872 V / LED 2 - leuchtend:7,6440 V
' LED 3 - blinkend:7,8008 V / LED 3 - leuchtend:7,9576 V
' LED 4 - blinkend:8,1144 V / LED 4 - leuchtend:8,2712 V
' LED 5 - blinkend:8,4280 V / LED 5 - leuchtend:8,5848 V
' LED 6 - blinkend:8,6632 V / LED 6 - leuchtend:8,7808 V
' LED 7 - blinkend:8,8592 V / LED 7 - leuchtend:8,9376 V
' LED 8 - blinkend:8,9768 V / LED 8 - leuchtend:9,0160 V
' Wenn alle Leuchtdioden dauernd leuchten, ist die Ladung beendet und
' wird mit dem Beeper gemeldet.
'--------------------------
'------ I/O PORTS ---------
'--------------------------
'- INTERFACE LCD/EXTPORT --
define sdio port[1]
define sclio port[3]
define strobe port[4]
define LSTROBE port[7] ' Hier hab ich erweitert .......
'-- 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 LEDPORT byte[6] ' Hier hab ich erweitert .......
define L1_F bit[41] ' Hier hab ich erweitert .......
define L2_F bit[42] ' Hier hab ich erweitert .......
define L3_F bit[43] ' Hier hab ich erweitert .......
define L4_F bit[44] ' Hier hab ich erweitert .......
define L5_F bit[45] ' Hier hab ich erweitert .......
define L6_F bit[46] ' Hier hab ich erweitert .......
define L7_F bit[47] ' Hier hab ich erweitert .......
define L8_F bit[48] ' Hier hab ich erweitert .......
'--------------------------
'---- USER MEMORY -------
'--------------------------
define OFFSET byte[6]

'--- SYSTEMROUTINEN -----------
define PLM_SLOW &H01C4
define SYSTEM &H01C9
define LED_DRIVE &H01CA ' Hier hab ich erweitert .......
define COMNAV &H0154
'---------- INIT---------------
gosub SUBSYS_PWR_ON:REV_L=off:REV_R=off
LSTROBE=off:beep 368,10,0:pause 50 ' Hier hab ich erweitert ....... LSTROBE
if SYS_VOLTS>=CHRG_CURRENT then goto WATCH_AKKU
OFFSET=CHRG_CURRENT-SYS_VOLTS
'--------------------------------------------
'--- LADEÜBERWACHUNG FÜR DEN AKKU ---
'--------------------------------------------
#WATCH_AKKU
beep 0,1,0
if SYS_VOLTS > 230 then goto LED8ON
if SYS_VOLTS > 229 then goto LED8BLINK
if SYS_VOLTS > 228 then goto LED7ON
if SYS_VOLTS > 226 then goto LED7BLINK
if SYS_VOLTS > 224 then goto LED6ON
if SYS_VOLTS > 221 then goto LED6BLINK
if SYS_VOLTS > 219 then goto LED5ON
if SYS_VOLTS > 215 then goto LED5BLINK
if SYS_VOLTS > 211 then goto LED4ON
if SYS_VOLTS > 207 then goto LED4BLINK
if SYS_VOLTS > 203 then goto LED3ON
if SYS_VOLTS > 199 then goto LED3BLINK
if SYS_VOLTS > 195 then goto LED2ON
if SYS_VOLTS > 191 then goto LED2BLINK
if SYS_VOLTS > 187 then goto LED1ON
if SYS_VOLTS > 183 then goto LED1BLINK
goto WATCH_AKKU
#e
gosub LOFF:goto WATCH_AKKU
#LED8ON
gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:gosub L8ON:goto WATCH_AKKU
#LED8BLINK
gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:gosub L8ON:pause 20:gosub L8OFF:pause 20:goto WATCH_AKKU
#LED7ON
gosub L8OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:goto WATCH_AKKU
#LED7BLINK
gosub L8OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:pause 20:gosub L7OFF:pause 20:goto WATCH_AKKU
#LED6ON
gosub L8OFF:gosub L7OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:goto WATCH_AKKU
#LED6BLINK
gosub L8OFF:gosub L7OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:pause 20:gosub L6OFF:pause 20:goto WATCH_AKKU
#LED5ON
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:goto WATCH_AKKU
#LED5BLINK
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:pause 20:gosub L5OFF:pause 20:goto WATCH_AKKU
#LED4ON
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:goto WATCH_AKKU
#LED4BLINK
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:pause 20:gosub L4OFF:pause 20:goto WATCH_AKKU
#LED3ON
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L1ON:gosub L2ON:gosub L3ON:goto WATCH_AKKU
#LED3BLINK
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L1ON:gosub L2ON:gosub L3ON:pause 20:gosub L3OFF:pause 20:goto WATCH_AKKU
#LED2ON
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L1ON:gosub L2ON:goto WATCH_AKKU
#LED2BLINK
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L1ON:gosub L2ON:pause 20:gosub L2OFF:pause 20:goto WATCH_AKKU
#LED1ON
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L2OFF:gosub L1ON:goto WATCH_AKKU
#LED1BLINK
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L2OFF:gosub L1ON:pause 20:gosub L1OFF:pause 20:goto WATCH_AKKU
'--- LEDS AUF DER BASIS ERWEITERUNG ------
#L1ON
L1_F=on:goto LEDPORT_WRITE
#L1OFF
L1_F=off :goto LEDPORT_WRITE
#L2ON
L2_F=on:goto LEDPORT_WRITE
#L2OFF
L2_F=off :goto LEDPORT_WRITE
#L3ON
L3_F=on:goto LEDPORT_WRITE
#L3OFF
L3_F=off :goto LEDPORT_WRITE
#L4ON
L4_F=on:goto LEDPORT_WRITE
#L4OFF
L4_F=off :goto LEDPORT_WRITE
#L5ON
L5_F=on:goto LEDPORT_WRITE
#L5OFF
L5_F=off :goto LEDPORT_WRITE
#L6ON
L6_F=on:goto LEDPORT_WRITE
#L6OFF
L6_F=off :goto LEDPORT_WRITE
#L7ON
L7_F=on:goto LEDPORT_WRITE
#L7OFF
L7_F=off :goto LEDPORT_WRITE
#L8ON
L8_F=on:goto LEDPORT_WRITE
#L8OFF
L8_F=off :goto LEDPORT_WRITE
#LOFF
LEDPORT=0
#LEDPORT_WRITE
SYS LED_DRIVE:pulse LSTROBE:RETURN
'IIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIII
#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
'---------COM/NAV GERÄTEREIBER -------------
syscode "p5driv12.s19"

Leider funktioniert das Programm nicht , beim compilern meldet es keine fehler.
Starte ich das Programm löscht es die 8 Leds wie gewollt , doch dan beginnen sie alle miteinander einfach zu leuchten und der Pipser pipst ab und zu.
Ich frage mich der weilen an was es liegen könnte , denn ich habe den code nun schon 10mal mit dem des Led beispieles (für die erweiterungs Platine) verglichen und habe keine "übertragungs lücken" entdecken können . :-s

Ich habe für die bessere übersicht auch noch die kommentar zeilen "' Hier hab ich erweitert ......." eingefügt bei den System initalisierungen und System rutienen .

Weiss jehmand vieleicht woran die "nicht funktion" liegen könnte ?

Ich währe mega froh wen mir jehamnd helfen könnte :-b

Dirk
24.08.2005, 18:43
Hallo cedra,

was mir auffällt:

1. byte[6] ist 2-fach belegt (OFFSET und LEDPORT). Dürfte aber hier nicht der Fehler sein, weil in der Schleife nicht genutzt. Wozu nutzt du OFFSET überhaupt?
2. In deiner Hauptschleife erfolgt die LED-Anzeige fortlaufend ohne Pause und ohne Löschen der LEDs vor einer neuen Messung, weil das Prog nie zum Label #e kommen kann. Du müßtest VOR jeder neuen Messung (d.h. vor dem "if SYS_VOLTS ..."-Block das Löschen der LEDs einfügen. Nach der Anzeige würde ich auch eine Pause einlegen, um die Anzeige etwas "stabiler" zu machen.
3. Wenn du bei der SYS_VOLTS-Abfrage immer mit "if SYS_VOLTS > ..." arbeitest, dann wird ja mehrfach gemessen. Für deine Anzeige bedeutet das stark schwankende Werte. Ich würde am Anfang nur 1x messen (UBATT=SYS_VOLTS) und dann UBATT testen.

Gruß Dirk

Da gab es auch 'mal ein funktionierendes Prog.
Guckst du hier:

'---------- INIT---------------
' Basiserweiterung initialisieren:
LSTROBE=off 'LEDPORT-Zugriff ermöglichen
CC2POWER=on 'PWR und +5V (für CC2 und Experimentierplatine) einschalten
' Subsysteme einschalten:
gosub SUBSYS_PWR_ON
' LC-Display initialisieren:
'gosub LCD_INIT

beep 368,10,0:pause 50
gosub LEDSOFF 'Alle LEDs auf Robby aus
gosub LOFF 'Alle LEDs auf Basiserweiterung aus
' ACS initialisieren:
'gosub NO_ACS_INT:beep 368,10,0:SYS ACS_HI 'Kein Interrupt, Power HI
'------------ ANTRIEB -------------------------
REV_L=on:REV_R=on:SYS PLM_SLOW
'----------------------------------------------------------------------
' PROGRAMM:
if SYS_VOLTS>=CHRG_CURRENT then goto WATCH_AKKU
OFFSET=CHRG_CURRENT-SYS_VOLTS
'--------------------------------------------
'--- LADEÜBERWACHUNG FÜR DEN AKKU ---
'--------------------------------------------
#WATCH_AKKU
if TOUCH >10 then goto WATCH_CURRENT
beep 0,1,0
if SYS_VOLTS > 230 then goto L4_ON
if SYS_VOLTS > 227 then goto L4BLINK
if SYS_VOLTS > 222 then goto L3_ON
if SYS_VOLTS > 214 then goto L3BLINK
if SYS_VOLTS > 206 then goto L2_ON
if SYS_VOLTS > 199 then goto L2BLINK
if SYS_VOLTS > 191 then goto L1_ON
if SYS_VOLTS > 183 then goto L1BLINK
goto WATCH_AKKU
'--------------------------------------------
'--- STROMANZEIGE ----
'--------------------------------------------
#WATCH_CURRENT
beep 368,0,0
if CHRG_CURRENT<= SYS_VOLTS then goto e
if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 12 then goto L4_ON
if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 8 then goto L4BLINK
if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 5 then goto L3_ON
if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 4 then goto L3BLINK
if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 3 then goto L2_ON
if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 2 then goto L2BLINK
if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 1 then goto L1_ON
if (CHRG_CURRENT-SYS_VOLTS-OFFSET) > 0 then goto L1BLINK
#e
gosub LEDSOFF:goto WATCH_AKKU
#L4_ON
gosub LED1ON:gosub LED2ON:gosub LED3ON
gosub LED4ON:beep 386,20,1:pause 20:goto WATCH_AKKU
#L4BLINK
gosub LED1ON:gosub LED2ON:gosub LED3ON
gosub LED4ON:pause 20:gosub LED4OFF:pause 20:goto WATCH_AKKU
#L3_ON
gosub LED1ON:gosub LED2ON:gosub LED4OFF
gosub LED3ON:goto WATCH_AKKU
#L3BLINK
gosub LED1ON:gosub LED2ON:gosub LED4OFF
gosub LED3ON:pause 20:gosub LED3OFF:pause 20:goto WATCH_AKKU
#L2_ON
gosub LED4OFF:gosub LED3OFF
gosub LED1ON:gosub LED2ON:goto WATCH_AKKU
#L2BLINK
gosub LED1ON:gosub LED4OFF:gosub LED3OFF
gosub LED2ON:pause 20:gosub LED2OFF:pause 20:goto WATCH_AKKU
#L1_ON
gosub LED4OFF:gosub LED3OFF:gosub LED2OFF
gosub LED1ON:goto WATCH_AKKU
#L1BLINK
gosub LED4OFF:gosub LED3OFF:gosub LED2OFF
gosub LED1ON:pause 20:gosub LED1OFF:pause 20:goto WATCH_AKKU

cedra
24.08.2005, 22:47
Hallo Dirk .

Vilen dank !! genau da liegt der Hund ahnscheinend begraben . :O)

Frag lieber nicht wozu ich was brauche , ich bin mich gerade in das Basic von Robby am einarbeiten und habe wahrscheindlich noch einige define's drin die es gar nicht braucht . :-b

Das mit den mess werten ist wierklich eine gute feststellung . Ich werde mir dazu noch eine lösung überlegen (naja eben 1 mal messen in ne Variable übertragen den wert und den diese nach den listen werten abfragen .. so in etwa ) .

Ich werde erst mal das Programm nun umschreiben (brocht ja ned viel ) und austesten , wen es in dieser form mal funktioniert , werde ich das mit der 1 mal messung realisieren (guter Vorschlag ! ;O) ) und wen das auch klappt wollte ich das Programm auch auf die Lade ströme erweitern noch so das diese auch via 8 Led's angezeigt werden ..

Ganz toll währe natürlich die Werte auf dem LCD auszu geben aber man kann ja nich gleich "Version 10" auf anhib coden .. ^^

Ich lasse von mir hören wen es geht und ich auch ne neuere, (hoffentlich) funktionierende Version vom Erweiterungs 1 Loader posten kann .

aber so weit sehr gut !!! =D>
cu

edit :

so gesagt getan :



'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIII
'IIIIIIIIII MOBILE ROBOT EVALUATION PROGRAM IIIIIIIIIIII
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIII
' Erweitertes PROGRAMM ZUR ÜBERWACHUNG DES LADEVORGANGS
' Dieses Programm ist für den Robby RP5 mit erweiterungs Platine.
' Basis Program war das CHARGE TOOL von Robby .
' Frei für benutzung für alle, erweiterung , weitergeben natürlich auch frei :O)
' Aber haftbarkeit für etwelche Schäden werden abgelehnt.
' Status funktional . :O) ( mit hielfe von Dirk @ https://www.roboternetz.de/ )
' Version 0.4
' ACHTUNG:
' Wenn Sie den Akku des Roboters laden, MUSS der Schalter so geschaltet sein,
' dass der Roboter in Betrieb ist !!!
' Andernfalls würde eine zu hohe Ladespannung leicht zur Zerstörung der
' empfindlichen Elektronik führen.
' Starten Sie das Programm BEVOR sie das Ladegerät anstecken, weil
' beim Start eine Calibrierung durchgeführt wird und dabei kein Ladestrom
' fliessen darf.
' ---------------------------------------------------------------------
' FUNKTION DES PROGRAMMS
'----------------------------------------------------------------------
' Der Bezeichner SYS_VOLTS ist der A/D-Wandler, der die Akkuspannung misst.
' Ein Digit entspricht dabei 39,2 mV, der Messbereich geht bis 10 V
' Die Akkuspannung wird als Balkenanzeige mit den Leuchtdioden angezeigt.
' Die Schwellen sind folgendermassen eingestellt:
' LED 1 - blinkend:7,1736 V / LED 1 - leuchend:7,3304 V
' LED 2 - blinkend:7,4872 V / LED 2 - leuchend:7,6440 V
' LED 3 - blinkend:7,8008 V / LED 3 - leuchend:7,9576 V
' LED 4 - blinkend:8,1144 V / LED 4 - leuchend:8,2712 V
' LED 5 - blinkend:8,4280 V / LED 5 - leuchend:8,5848 V
' LED 6 - blinkend:8,6632 V / LED 6 - leuchend:8,7808 V
' LED 7 - blinkend:8,8592 V / LED 7 - leuchend:8,9376 V
' LED 8 - blinkend:8,9768 V / LED 8 - leuchend:9,0160 V
' Wenn alle Leuchtdioden dauernd leuchten, ist die Ladung beendet und
' wird mit dem Beeper gemeldet.
'--------------------------
'------ I/O PORTS ---------
'--------------------------
'- INTERFACE LCD/EXTPORT --
define sdio port[1]
define sclio port[3]
define strobe port[4]
define LSTROBE port[7] ' Hier hab ich erweitert .......
'-- 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 LEDPORT byte[6] ' Hier hab ich erweitert .......
define L1_F bit[41] ' Hier hab ich erweitert .......
define L2_F bit[42] ' Hier hab ich erweitert .......
define L3_F bit[43] ' Hier hab ich erweitert .......
define L4_F bit[44] ' Hier hab ich erweitert .......
define L5_F bit[45] ' Hier hab ich erweitert .......
define L6_F bit[46] ' Hier hab ich erweitert .......
define L7_F bit[47] ' Hier hab ich erweitert .......
define L8_F bit[48] ' Hier hab ich erweitert .......
'--- SYSTEMROUTINEN -----------
define PLM_SLOW &H01C4
define SYSTEM &H01C9
define LED_DRIVE &H01CA ' Hier hab ich erweitert .......
define COMNAV &H0154
'--------------------------
'---- USER MEMORY -------
'--------------------------
define OFFSET byte[6]
'---------- INIT---------------
gosub SUBSYS_PWR_ON:REV_L=off:REV_R=off
beep 368,10,0:pause 50
if SYS_VOLTS>=CHRG_CURRENT then goto WATCH_AKKU
OFFSET=CHRG_CURRENT-SYS_VOLTS
'--------------------------------------------
'--- LADEÜBERWACHUNG FÜR DEN AKKU ---
'--------------------------------------------
#WATCH_AKKU
pause 20
if SYS_VOLTS > 230 then goto LED8ON:gosub LOFF
if SYS_VOLTS > 229 then goto LED8BLINK:gosub LOFF
if SYS_VOLTS > 228 then goto LED7ON:gosub LOFF
if SYS_VOLTS > 226 then goto LED7BLINK:gosub LOFF
if SYS_VOLTS > 224 then goto LED6ON:gosub LOFF
if SYS_VOLTS > 221 then goto LED6BLINK:gosub LOFF
if SYS_VOLTS > 219 then goto LED5ON:gosub LOFF
if SYS_VOLTS > 215 then goto LED5BLINK:gosub LOFF
if SYS_VOLTS > 211 then goto LED4ON:gosub LOFF
if SYS_VOLTS > 207 then goto LED4BLINK:gosub LOFF
if SYS_VOLTS > 203 then goto LED3ON:gosub LOFF
if SYS_VOLTS > 199 then goto LED3BLINK:gosub LOFF
if SYS_VOLTS > 195 then goto LED2ON:gosub LOFF
if SYS_VOLTS > 191 then goto LED2BLINK:gosub LOFF
if SYS_VOLTS > 187 then goto LED1ON:gosub LOFF
if SYS_VOLTS > 183 then goto LED1BLINK:gosub LOFF
goto WATCH_AKKU
#LED8ON
gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:gosub L8ON:goto WATCH_AKKU
#LED8BLINK
gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:gosub L8ON:pause 20:gosub L8OFF:pause 20:goto WATCH_AKKU
#LED7ON
gosub L8OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:goto WATCH_AKKU
#LED7BLINK
gosub L8OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:gosub L7ON:pause 20:gosub L7OFF:pause 20:goto WATCH_AKKU
#LED6ON
gosub L8OFF:gosub L7OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:goto WATCH_AKKU
#LED6BLINK
gosub L8OFF:gosub L7OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:gosub L6ON:pause 20:gosub L6OFF:pause 20:goto WATCH_AKKU
#LED5ON
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:goto WATCH_AKKU
#LED5BLINK
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:gosub L5ON:pause 20:gosub L5OFF:pause 20:goto WATCH_AKKU
#LED4ON
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:goto WATCH_AKKU
#LED4BLINK
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L1ON:gosub L2ON:gosub L3ON:gosub L4ON:pause 20:gosub L4OFF:pause 20:goto WATCH_AKKU
#LED3ON
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L1ON:gosub L2ON:gosub L3ON:goto WATCH_AKKU
#LED3BLINK
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L1ON:gosub L2ON:gosub L3ON:pause 20:gosub L3OFF:pause 20:goto WATCH_AKKU
#LED2ON
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L1ON:gosub L2ON:goto WATCH_AKKU
#LED2BLINK
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L1ON:gosub L2ON:pause 20:gosub L2OFF:pause 20:goto WATCH_AKKU
#LED1ON
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L2OFF:gosub L1ON:goto WATCH_AKKU
#LED1BLINK
gosub L8OFF:gosub L7OFF:gosub L6OFF:gosub L5OFF:gosub L4OFF:gosub L3OFF:gosub L2OFF:gosub L1ON:pause 20:gosub L1OFF:pause 20:goto WATCH_AKKU
'--- LEDS AUF DER BASIS ERWEITERUNG ------
#L1ON
L1_F=on:goto LEDPORT_WRITE
#L1OFF
L1_F=off :goto LEDPORT_WRITE
#L2ON
L2_F=on:goto LEDPORT_WRITE
#L2OFF
L2_F=off :goto LEDPORT_WRITE
#L3ON
L3_F=on:goto LEDPORT_WRITE
#L3OFF
L3_F=off :goto LEDPORT_WRITE
#L4ON
L4_F=on:goto LEDPORT_WRITE
#L4OFF
L4_F=off :goto LEDPORT_WRITE
#L5ON
L5_F=on:goto LEDPORT_WRITE
#L5OFF
L5_F=off :goto LEDPORT_WRITE
#L6ON
L6_F=on:goto LEDPORT_WRITE
#L6OFF
L6_F=off :goto LEDPORT_WRITE
#L7ON
L7_F=on:goto LEDPORT_WRITE
#L7OFF
L7_F=off :goto LEDPORT_WRITE
#L8ON
L8_F=on:goto LEDPORT_WRITE
#L8OFF
L8_F=off :goto LEDPORT_WRITE
#LOFF
LEDPORT=0:RETURN
#LEDPORT_WRITE
SYS LED_DRIVE:pulse LSTROBE:RETURN
'IIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIII
#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
'---------COM/NAV GERÄTEREIBER -------------
syscode "p5driv12.s19"

Also so weit so gut !! ^^ *freui* ES funktioniert ! dank dir Dirk :O)

Aber wie ich bemerken muss leuchten nun immer die 4 Standart leds was es ja auch ned bringt , wenigstens ned wen da nicht die lade strom stärke angezeigt wird wenigstens .. ^^ ( dazu auch der OFFSET )

Ansonsten bleibt nur noch zu sagen das man die "p5driv12.s19" braucht um das Program ablaufen lassen zu können . Ich werde mir die Sache wegen den 4 Basis Leds mal angucken .

Brauchen den so Led's viel "strom" ? nicht das eine zu massige Anzeige zu massig Lade strom verbraucht ?!?

viracocha
25.08.2005, 11:15
Brauchen den so Led's viel "strom" ? nicht das eine zu massige Anzeige zu massig Lade strom verbraucht ?!?

Hi cedra,
da das Low-current-LEDs sind, braucht jede 2 bis 3 mA.

Gruß
viracocha

cedra
25.08.2005, 12:11
Hallo viracocha .

2-3 ma geht ja noch , hmm ? also 12 X 3 = 36 mA bei voll leuchten ..

Jo das geht ja noch :-k .

Sehr gut ! ^^

Fehlt noch der Beep im #L8ON musste ich bemerken , was ja als akustik signal sehr gut ist und die stromstärke des lade stroms geb ich nun so am besten auf den 4 Basis Led 's aus . Den sieht man immer wo er ist und mit wiviel der Robby geladen wird noch . (also mit den vier Leds )

Mal gucken , ich bin gerade an der 1 mal mess genauikeits verbesserung (siehe oben) , wen die klappt kommt die lade strom stärke und den dacht ich mir währe ganz toll wen man die daten auf dem LCD angucken könnte via touch sensor . Die liste von den messstufen wie mess ströme sind ja im Prgramm drin , nur weiss diese ja nich jeder so "frei händig". 8-[

Ich bin mir gerade am überlegen , wie ich den das Programm auch noch verbessern kann in sache verbrauch , sagen ma mal ob das Programm im Slow Mode mit veränderten Pausen nicht genau gleich ablaufen mag und so aber ladezeit eingespart werden kann . oder man via klatschen die Led anzeige "abschalten" lassen kann und nur noch das akustik siganal beim ende des ladens ausgegeben wird . (son "sporado mod" )

und genau betrachtet wen der Robby schon läuft könnte man über das ganze auch via clock, ladezeiten angaben noch ausgeben lassen :-k

viracocha
25.08.2005, 12:48
Die Sache mit dem LCD Display ist ne gute Idee. Ich zeige die Spannung auch auf dem LCD Display an allerdings während des Fahrbetriebs. Wenn die Akkus dem Ende zugehen geht dann eine LED an.
Um diverse Modi beim Roboter umzuschalten (LED-Anzeige an/aus etc.) benutze ich eine IR-Fernbedienung. Geht auch super zum fernsteuern.

Gruß
viracocha

Dirk
25.08.2005, 16:49
Hallo cedra,


und den dacht ich mir währe ganz toll wen man die daten auf dem LCD angucken könnte via touch sensor . Die liste von den messstufen wie mess ströme sind ja im Prgramm drin , nur weiss diese ja nich jeder so "frei händig".

Ich bin mir gerade am überlegen , wie ich den das Programm auch noch verbessern kann in sache verbrauch , sagen ma mal ob das Programm im Slow Mode mit veränderten Pausen nicht genau gleich ablaufen mag und so aber ladezeit eingespart werden kann . oder man via klatschen die Led anzeige "abschalten" lassen kann und nur noch das akustik siganal beim ende des ladens ausgegeben wird . (son "sporado mod" )

... dann mal los! Es ist alles möglich!

Viel Erfolg!

Zu deinem neuen Prog:
Sieht gut aus!
1. Das "gosub LOFF" brauchst du nicht hinter jeder if-Abfrage, sondern nur 1x hinter dem pause 20 am Anfang der Schleife.
2. Um die 4 LEDs des Robby auszuschalten, must du sie mit gosub LEDSOFF vor der Schleife ausschalten. Das Unterprogramm LEDSOFF steht in anderen Progs für den Robby, oder du nimmst für deine Experimente mein Prog LEERPROGRAMM_BE1.bas aus dem Downloadbereich. Da sind alle Definitionen und wichtige Unterprogramme für den Robby mit Basiserweiterung drin.

Gruß Dirk

P.S.: Ich habe 'mal den Stromverbrauch im Slow Mode gemessen: Bringt in kurzen Schleifen fast gar nichts!