1Wire

Moin Logger!

Tja, das ist in der Tat merkwürdig!

Hatte in deinem ersten Beispiel daran gedacht, dass du hinterher im Programm nur noch die Anzeige für den ersten Controller aktualisierst... aber nicht für den Zweiten.

Wenn ich mir das Bild von deinem neuen Beispiel ansehe, dann kann die Theorie wohl nicht stimmen. :hmmmm:


Allerdings steht es auch vergleichbar so im BASCOM-Beispielprogramm:

Code:
'------------------------------------------------------------------
'                          LCDCUSTOM4BITE2.BAS
'                 demo shows 4 bit LCD mode with 2 E lines
'------------------------------------------------------------------
$regfile = "2313def.dat"

' this is the custom LCD lib
$lib "Lcd4e2.lib"

$crystal = 4000000

'to use 2 E lines we need a way to make a distinct between them
[B]Dim ___lcde As Byte[/B]
[B]'___LCDE set to 0 will use E1, set to any other value will use E2[/B]

Dim S As String * 10
S = "Hello"

' write to the 2 first lines
___lcde = 0

Cls

Lcd "test"
Lcd S

___lcde = 1
'write to the 2 last lines
Lcd "test"
Lcd S

End


Gruß,
Cassio
 
Hallo !

Ach so.... damit das BASCOM-Beispiel von eben nicht falsch verstanden wird....

Es ging mir NUR um die Angabe mit dem Byte für ___lcdno (bzw. ___lcde) !

Leider funktioniert das obige BASCOM-Beispiel mit der zugehörigen LIB an dem Display nicht!



Ich verwende also auch diese Zeilen im Rumpf für das Display:
Code:
'---------------------------------------------------
Dim ___lcdno As Byte                                        ' LCD-Controller-Schalter


___lcdno = 0
Initlcd
Cursor Off
Cls

___lcdno = 1
Initlcd
Cursor Off
Cls
'---------------------------------------------------




Habe dann auch mal ein Bild gemacht. ;) (siehe unten)

Gruß,
Cassio


PS: Um den schönen Folienleiter nicht demontieren zu müssen, habe ich mir einen Adapter erstellt. (siehe Bilder)
 

Anhänge

  • IMG_0398 [800x600].JPG
    IMG_0398 [800x600].JPG
    79,8 KB · Aufrufe: 39
  • IMG_0392 [800x600].JPG
    IMG_0392 [800x600].JPG
    77,3 KB · Aufrufe: 28
  • IMG_0393 [800x600].JPG
    IMG_0393 [800x600].JPG
    89,5 KB · Aufrufe: 28
Hi Dino!

Da muss das Display eben durch, wenn man keine passende Folienleiter-Anschlussleiste hat. :D

Ist aber ganz praktisch, um mal eben die Displays anzuschließen und zu testen. ;)


Es müsste doch auch eigentlich diese Anschlussleisten zu kaufen geben.....
Habe auf die Schnelle nur noch keine passenden gefunden.
Wäre natürlich schöner, wenn man eine richtige Buchse dafür hätte.

Benötigte Polzahl: 21 ; Pinabstand: 1,27mm

Klingt doch nicht gerade außergewöhnlich!



Ups.... ich glaube, ich sollte die Beiträge zum Display hier abkoppeln und ein eigenes Thema erstellen!
Sonst findet die Info später keiner mehr wieder...... :rolleyes:

Kann ich ja nachher mal machen.... und noch evtl. noch etwas hinzufügen. ;)

Gruß,
Cassio
 
Hallo,

eine Info zum Digiscope,

ich habe im Elektor 3/2009 den Oskar names ATM18 gefunden. (ATM 18 Projekt)
Nun eine Mega 88 habe ich nicht, aber einige Mega 32.
Programmbeispiel auf MeG 32 geändert und in den Chip gebrannt, kleine Lochrasterplatine aufgebaut und die PC Programme installiert.

Erste Tests zeigen das es wunderbar funzt.

Endlich hat mein Uralt-Laptop wieder eine sinnvolle Beschäftigung.

Es ist wirklich hier ein Top Forum, ich kann die Angaben von Jogger nur bestätigen.

Gruß aus dem verregnetem Norddeutschland

Herbert
 
Hallo Cassio

Habe mal eine menge Programm Codes ausprobiert,mal mit >Dim ___lcdno As Bit<
und mal mit >Dim ___lcdno As Byte< , konnte keinen unterschied feststellen, ist beim Byte aber geblieben, sicher ist sicher. Danke für die Info. :adore:
Habe aber noch einen fehler in einem Code gefunden.:(
Fehler war das , daß Display beim ersten schreiben nur Hyroglyhpen anzeigte.
Im Programm fehlte das Initilalisieren des Displays.:mad:
Code:
___lcdno = 0                                                'Obere Displayhälfte initialisieren, für den ersten Controller
Initlcd

Gruß Ralf :D
 
Info zur Kabellänge 1wire

Hallo zusammen

Beim 1wire bus habe ich eine Kabellänge von 18m, mit DS1820 Temp.Sensor, in Betrieb und es Funktioniert Prima. :D :D :D
Kabeltyp: 5x0,25mm² Abgeschirmt mit Kupfergeflecht,einfach; länge 18,4m.

Gruß Ralf aus dem Sonnigen Dinslaken
 

Anhänge

  • Kabellaenge 18m 1wire.jpg
    Kabellaenge 18m 1wire.jpg
    227,8 KB · Aufrufe: 22
Hallo Ralf!

Ich hatte nur gemerkt, dass zu Beginn mit der Anzeige alles in Ordnung war und nach ein oder zwei Sekunden langsam Mist angezeigt wurde, oder die unteren beiden Zeilen "blinkten".... Hatte den Anschein, als würden die Daten aus den ersten beiden Zeilen immer in die letzten beiden Zeilen kopiert und dann wieder mit den richtigen Daten für Zeile 3 und 4 aktualisiert. :hmmmm:
Zwischendurch stimmte aber die Anzeige wieder mal und dann begann es von vorn.....

Mit dem "Dim ___lcdno As Byte" gab es diese Schwierigkeiten nicht.

Das "Initlcd" muss für JEDEN Display-Controller zu Beginn auch nur einmal ausgeführt werden!



Kabeltyp: 5x0,25mm² Abgeschirmt mit Kupfergeflecht

Interessantes Kabel......
Was für einen Typ hast du denn genau verwendet? LY(CW)....?
Allerdings bezweifle ich, dass es 0,25mm² hat.
Zumindest ist mir dieser Querschnitt nicht bekannt. :hmmmm:

Gruß,
Cassio
 
Hallo Cassio

Das Kabel ist ein altes Datenkabel der Firma Hartmann & Braun, auf den steckern die ich abgeschnitten habe stand der Typ, der querschnitt und wo für es war :RS485.
Da ich die Stecker entsorgt habe, kann ich dir den Typ nicht mehr sagen, meine aber es war etwas mit CW .... !
Auf dem Kabel selber steht leider nichts. :mad:
Diesen Typ kabel scheint es heute nicht mehr zu geben, wenn sind sie immer mit einer geraden Anzahl an Adern zu bekommen.

Zum Display:
In manchen beschreibungen für die Anzeigen mit 2 Kontrollern stand auch diese Code zeile
Code:
Dim ___lcde As Byte
du erwäntest sie bereits, habe damit aber keinen erfolg erzielt. :(
Einer von euch Moderatoren erwähnte mal etwas von einer Datenbank für solche fälle,
Glaube das wäre Sinnvoll, damit andere es einfacher haben beim suchen und experimentieren.

Gruß Ralf
 
Hallo Ralf!

Die Leitungen mit den ungeraden Aderzahlen gibt es heute auch noch.... ;)
Einige haben auch einen Geflechtschirm.
Allerdings wird bei diesen Leitungen nicht der Querschnitt, sondern der Aderdurchmesser oder eine AWG-Zahl angegeben.

Dumm ist natürlich, dass die Hersteller meist keine Infos auf die Leitungen drucken. So darf man hinterher immer rätseln welche Leitung es wohl sein könnte. :(
Tja und da es fast so viele Leitungs- und Kabeltypen wie Arten auf der Erde gibt, kann man meist die verwendete Type nur schätzen..... :hmmmm:



Was das Display betrifft.....
Ich bin schon dabei ein paar Beispiele zu erstellen.
Werde in den nächsten Tagen mal ein separates Thema für dieses und weitere Displays unter BASCOM beginnen.
Dort kann dann auch jeder weitere Beispiele von anderen Displays mit einstellen. ;)

Gruß,
Cassio
 
Lcd Wdc2704m

Hallo Cassio

Habe ein wenig Programmiert und mit dem LCD Experimentiert. :D
Dabei ist mir aufgefallen, das ein Batteriesymbol, mit dem LCD-Designer erstellt,
in den ersten beiden Zeilen einwandfrei dargestellt wird ( 1te Controller ) ;)
und in den Zeilen 3+4 ( 2te Controller ) nur mist anzeigt. :confused: :confused: :confused:
Siehe angehängte Bilder. Hast du oder jemand eine erklärung dafür ???

Hier ist mein Programm Code, wenn mal einer drüber schaut und mir sagt wie man in verbessern kann, würde mich das weiter bringen (Programmiertechnisch).

Code:
'**************************************************************************************************************************************
'*  DCF77 und Temperatur Version 1.1                                                                                                  *
'*  By Ralf Neubert Dinslaken                                                                                                         *
'*  31.03.2009                                                                                                                        *
'*  (c) Logger by www.Avr-praxis.de                                                                                                   *
'**************************************************************************************************************************************

$regfile = "m32def.dat"
$crystal = 3686400
$hwstack = 32
$swstack = 32
$framesize = 40
$lib "dcf77_4.lib"

$baud = 19200
Sda_port Alias Portd.1
Scl_port Alias Portd.0
'Const Lcd_testmodus = 1                                     ' Testmodus für LCD
'Const Dcf77_testmodus = 1                                   ' Testmodus für DCF77

'Config
Config Dcf77 = Pind.2 , Timer = 1 , Inverted = 0 , Check = 1 , Update = 1 , Updatetime = 20 , Timer1sec = 1 , Debug = 1 ,       'Gosub = Sectic
Enable Interrupts                                           ' Interrupts aktivieren
Config Date = Dmy , Separator = .                           ' Datumsformat einstellen

' ----- Konfiguration LCD Display -----
Ddrb = &HFF
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , E2 = Portb.2 , Rs = Portb.1
Config Lcd = 40 * 4

Deflcdchar 0 , 24 , 24 , 6 , 9 , 8 , 9 , 6 , 32             ' Grad Celsius

Deflcdchar 1 , 4 , 31 , 17 , 17 , 17 , 17 , 17 , 31         ' Akku   0%
Deflcdchar 2 , 4 , 31 , 17 , 17 , 17 , 17 , 31 , 31         ' Akku  20%
Deflcdchar 3 , 4 , 31 , 17 , 17 , 17 , 31 , 31 , 31         ' Akku  40%
Deflcdchar 4 , 4 , 31 , 17 , 17 , 31 , 31 , 31 , 31         ' Akku  60%
Deflcdchar 5 , 4 , 31 , 17 , 31 , 31 , 31 , 31 , 31         ' Akku  80%
Deflcdchar 6 , 4 , 31 , 31 , 31 , 31 , 31 , 31 , 31         ' Akku 100%


' Pin für 1wire Schnittstelle festlegen
Config 1wire = Portd.4

'Messen der Akkuspannung
Config Adc = Single , Prescaler = Auto , Reference = Internal_2.56       ' ADC für Akkuspannung
Config Pina.7 = Output

Dim Akku_spannung As Word
Dim Spannung As Word
Dim Spannung_alt As Word

'Akkumessung aktivieren
Akkumessung Alias Porta.7
'Akkumessung = 1

Dim ___lcdno As Byte
Dim T1 As Integer                                           'hilfs Variable für die berechnung Temp1
Dim T2 As Integer                                           'hilfs Variable für die berechnung Temp1
Dim T3 As Integer                                           'hilfs Variable für die berechnung Temp2
Dim T4 As Integer                                           'hilfs Variable für die berechnung Temp2
Dim T5 As String * 10                                       'Variable für Temp1 zur anzeige auf dem LCD
Dim T6 As String * 10                                       'Variable für Temp2 zur anzeige auf dem LCD
Dim T7 As Single                                            'hilfs Variable für die berechnung Temp1
Dim T8 As Single                                            'hilfs Variable für die berechnung Temp2
Dim Id1(8) As Byte                                          'für die adresse Sensor 1
Dim Id2(8) As Byte                                          'für die adresse Sensor 2
Dim Ar1(9) As Byte
Dim Ar2(9) As Byte
Dim I As Byte , Tmp1 As Byte , Tmp2 As Byte
Dim W As Byte
Dim Z As Byte
Z = 0

'DCF77
Dim Dcf77_hour As Byte                                      ' Globale Stundenvariable
Dim Dcf77_min As Byte                                       ' Globale Minutenvariable
Dim Dcf77_sec As Byte                                       ' Globale Sekundenvariable
Dim Dcf77_weekday As Byte                                   ' Globaler Wochentag
Dim Dcf77_day As Byte                                       ' Globale Tagvariable
Dim Dcf77_month As Byte                                     ' Globale Monatsvariable
Dim Dcf77_year As Byte                                      ' Globale Jahresvariable
Const Main_testmodus = 1                                    ' Testmodus für Testsystem
Dim Sec_old As Byte                                         ' Schleifenvaraible SoftClock Sec
Sec_old = 99
Dim Dcfsec_old As Byte                                      ' Schleifenvariable DCF77 Sec
Dcfsec_old = 99
Dim Dcf_sync_count As Word                                  ' Zähler für Anzahl der Syncs
Dcf_sync_count = 0
' ----- Sonstiges -----
Dim Trace_out As Bit                                        ' Ausgabesteuerung Trace
Trace_out = 0
Dim Temp_byte_1 As Word                                     ' Temporäre Byte Variable
Dim Temp_integer_1 As Integer                               ' Temporäre Integer Variable

  'Unterprogramme
Declare Sub Con_temp
Declare Sub Temp1
Declare Sub Temp2

   '1wire Bus absuchen
W = 1wirecount()
Print W
Id1(1) = 1wsearchfirst()
Id2(1) = 1wsearchnext()

'**************************************************************************************************************************************
  'Ersten text aufs Display schreiben

___lcdno = 0
                                                'Obere Displayhälfte initialisieren, für den ersten Controller
    Initlcd
    Cls
    Cursor Off
    Locate 1 , 1
    Lcd "Inn.:"
    Locate 1 , 15
    Lcd "Auss.:"

___lcdno = 1
                                                'Untere Displayhälfte initialisieren, für den zweiten Controller
    Initlcd
    Cursor Off
    Cls
    Locate 1 , 1
    Lcd "Temp. & DCF77 Ver1.0"
    Cls
    Locate 2 , 1
    Lcd "(c) Logger by AVR-Praxis.de"
    'Wait 3
    'Locate 1 , 1
    'Lcd "                                   "
'**************************************************************************************************************************************
  'Hauptprogramm
Do



'Z = Dcf_sec
If Z = 10 Then
  If Z > 9 Then Z = 0
    Gosub Con_temp
    Gosub Temp1
   Gosub Temp2
 Else
Incr Z
End If

        Print Z

  'Temperaturen und °C aufs Display schreiben
 ___lcdno = 0                                               'Obere Displayhälfte initialisieren, für den ersten Controller
     Locate 1 , 7
     Lcd T5 ; " " ; Chr(0)
     Locate 1 , 22
     Lcd T6 ; " " ; Chr(0)
'***************************************************************************************************************************************
  'Zeit und Datum aufs Display schreiben
    For Temp_integer_1 = 1 To 78
         Waitms 10                                          ' Schleife läuft max. 780 ms
         If Sec_old <> _sec Then
            Exit For
         End If
         If Dcfsec_old <> Dcf_sec Then
            Exit For
         End If
      Next

      Waitms 220                                            ' Mit 220 ms ist Sekunde voll
      ' Sekunden updaten
      Sec_old = _sec                                        ' Update SoftClock Sekunden
      Dcfsec_old = Dcf_sec                                  ' Update DCF77 Sekunden

 ' ___lcdno = 0

      Temp_byte_1 = Dcf_status And &H80

      ' Prüfung ob SoftClock durch DCF77 synchronisiert (Bit 7 aus Statusbyte)
      If Temp_byte_1 = &H80 Then

      Incr Dcf_sync_count                                   ' Sync-Counter erhören

      ' Zur Kontrolle bei erfolgreichem SYNC Status-Bit zurücksetzen
      Reset Dcf_status.7
      ' Anzahl der erfolgen Sync auf LCD ausgeben
      Temp_byte_1 = Makebcd(dcf_sync_count)

  ___lcdno = 0

      Locate 2 , 1
      Lcd Bcd(temp_byte_1)
     End If


  ___lcdno = 1

      Dcf77_weekday = Makebcd(_weekday)
      Locate 1 , 1
       Lcd Lookupstr(dcf77_weekday , Wochentag)
        Locate 1 , 11
       Lcd Date$ ; " " ; Time$ ; " "
       If Time$ = "00:01:00" Then
       Initlcd
       Wait 1
       End If

  ___lcdno = 0

     Akkumessung = 1
      Start Adc
       Akku_spannung = Getadc(1)
        Print "Adc 1  " ; Akku_spannung
          Spannung = Akku_spannung

      'Wait 1

        'Locate 1 , 1
        'Lcd Spannung , "####"
         Locate 2 , 4
         Lcd Chr(1)
           If Spannung => 823 Then
           Locate 2 , 4
           Lcd ; Chr(2)
             If Spannung => 873 Then
             Locate 2 , 4
             Lcd ; Chr(3)
               If Spannung => 923 Then
               Locate 2 , 4
               Lcd ; Chr(4)
                 If Spannung => 973 Then
                 Locate 2 , 4
                 Lcd ; Chr(5)
                   If Spannung => 1015 Then
                   Locate 2 , 4
                   Lcd ; Chr(6)
                 End If
               End If
             End If
           End If
         End If
        'End If

        'Akkumessung = 0


     Stop Adc

     Locate 2 , 11
     Lcd Date(dcf_day) ; " " ; Time(dcf_sec) ; " "



 ___lcdno = 0

Loop
'**************************************************************************************************************************************
      'Temperaturen Convertieren
Sub Con_temp
   1wreset
    1wwrite &HCC
     1wwrite &H44
      Waitms 850
    1wreset
End Sub


  'Temperatur 1 Berechnen
Sub Temp1
 1wreset
  1wwrite &H55
   1wwrite Id1(1) , 8
    1wwrite &HBE
     Ar1(1) = 1wread(9)
      1wreset
     Tmp1 = Ar1(1) And 1
     If Tmp1 = 1 Then Decr Ar1(1)
     T1 = Makeint(ar1(1) , Ar1(2))
     T1 = T1 * 50
     T1 = T1 - 25
     T2 = Ar1(8) - Ar1(7)
     T2 = T2 * 100
     T2 = T2 / Ar1(8)
     T1 = T1 + T2
     T1 = T1 / 10
     T7 = T1 / 10
     T5 = Fusing(t7 , "###.#" )
End Sub

  'Temperatur 2 Berechnen
Sub Temp2
 1wreset
  1wwrite &H55
   1wwrite Id2(1) , 8
    1wwrite &HBE
     Ar2(1) = 1wread(9)
      1wreset
     Tmp2 = Ar2(1) And 1
     If Tmp2 = 1 Then Decr Ar2(1)
     T3 = Makeint(ar2(1) , Ar2(2))
     T3 = T3 * 50
     T3 = T3 - 25
     T4 = Ar2(8) - Ar2(7)
     T4 = T4 * 100
     T4 = T4 / Ar2(8)
     T3 = T3 + T4
     T3 = T3 / 10
     T8 = T3 / 10
     T6 = Fusing(t8 , "###.#" )
End Sub

End
'**************************************************************************************************************************************
Wochentag:
Data "  " , "Montag" , "Dienstag" , "Mittwoch" , "Donnerstag" , "Freitag" , "Samstag" , "Sonntag"

Grüße aus dem Sonnigen Dinslaken

Ralf :D
 

Anhänge

  • AVR-Praxis 1.jpg
    AVR-Praxis 1.jpg
    38,1 KB · Aufrufe: 31
  • AVR-Praxis 2.jpg
    AVR-Praxis 2.jpg
    39,5 KB · Aufrufe: 30
Hallo Ralf!

Sorry, bin jetzt erst dazu gekommen deinen Beitrag zu lesen.


Was mir eben spontan eingefallen ist......
Das Ermitteln des Symbols für die Akkuspannung würde ich mit "Select Case" realisieren.......
was aber keinen Einfluss auf die Darstellung hat. ;)


Das Einzige was ich für das Display vermisse ist das "INIT" bevor etwas geschrieben wird.
Code:
'---------------------------------------------------
___lcdno = 0
Initlcd
Cursor Off
Cls

___lcdno = 1
Initlcd
Cursor Off
Cls
'---------------------------------------------------

Ich habe es auch mal ohne dieses "Initlcd" probiert..... lief dann aber nicht fehlerfrei.
Vielleicht hilft dir das ja weiter. :hmmmm:

Will aber nicht hoffen, dass der zweite Controller grundsätzlich Probleme mit der Darstellung von selbstdefinierten Zeichen hat.


Die obigen Zeilen füge ich zumindest immer einmal im Rumpf ein, bevor ich die ersten Zeichen zum Display sende.



Leider kann ich deinen Code (oder Teile davon) zur Zeit nicht testen, da ich immer noch mit dem 128x64 GLCD experimentiere..... und das 27x4 LCD im Schrank schlummert. ;)


Ich hoffe, du bekommst es zum laufen.

Gruß,
Cassio
 
Hallo Cassio

Die Initlcd u.s.w. habe ich im Kopf des Codes mit eingefügt, der rest klappt ja bei mir einwandfrei, :) nur die selbst definierten Symbole nicht. :(
Das mit dem select case habe ich schon mehr mals gesehen,
aber ich verstehe noch nicht ganz wie es funktioniert, ich übe halt noch. ;)

Gruß Ralf
 
Hallo Ralf!

Ups... habe ich das übersehen? :hmmmm:

Ach so.... du machst ein "INITLCD" und sendest auch gleich die ersten Zeichen zum Controller.....
Ich "initialisiere" erst beide Controller nach einander und dann sende ich die ersten Daten zum LCD.

Tja, sonst fällt mir so auf Anhieb auch nichts ein.
Schade, dass ich es zur Zeit nicht testen kann...

Hätte höchstens noch die Vermutung, dass der zweite Controller keine selbstdefinierten Zeichen annimmt. Vielleicht braucht der aber auch nur eine spezielle Info um es verarbeiten zu können.


Deine Varainte der geschachtelten IF-Anweisungen finde ich nicht so gelungen... auch wenn es funktionieren sollte.
Zum Einen könntest du mit IF.... und ELSEIF arbeiten, denn du erwartest ja nur ein "oder" in der Bedingung, oder mit "Select Case".
Würde dann also so aussehen:
Code:
If Spannung => 823 Then 
Locate 2 , 4 Lcd ; Chr(2)
 
Elseif Spannung => 873 Then 
Locate 2 , 4 Lcd ; Chr(3) 

Elseif Spannung => 923 Then 
Locate 2 , 4 Lcd ; Chr(4) 

Elseif Spannung => 973 Then 
Locate 2 , 4 Lcd ; Chr(5) 

Elseif Spannung => 1015 Then 
Locate 2 , 4 Lcd ; Chr(6) 

Else
Locate 2 , 4 Lcd ; Chr(1) 
End If

Das ist zwar auch nicht elegant, aber besser als deine Variante. ;)
Das ELSEIF funktioniert dann quasi wie ein "oder" und beim Auffinden einer Bedingung endet die IF-ELSEIF-Abfrage sofort.


Besser wäre es aber vielleicht so:
Code:
Dim Akku As Byte                ' Variable Akku dimensionieren
.......



Select Case Spannung
Case 0 To 823 : Akku = Chr(1)
Case 824 To 873 : Akku = Chr(2)
Case 874 To 923 : Akku = Chr(3)
Case 924 To 973 : Akku = Chr(4)
Case 974 To 1015 : Akku = Chr(5)
Case 1016 To 1023 : Akku = Chr(6)
End Select

__lcdno = 0
Locate 2 , 4
Lcd Akku


Kannst es ja mal probieren....... :)



Im allgemeinen würde ich versuchen die Displayanzeigen von sonstigen Aufgaben im Programmcode zu "trennen".

Also erst alle Daten zum Anzeigen "zusammen sammeln" und dann zur Ansteuerung wechseln und die Daten zum Display senden.
Wenn deine Programme mal größer werden ist es dann übersichtlicher und du kannst schneller einige Änderungen vornehmen. ;)

Viel Spaß dabei,
Cassio
 
Select Case ...

Hi Ralf,

Das mit dem select case habe ich schon mehr mals gesehen,
aber ich verstehe noch nicht ganz wie es funktioniert, ich übe halt noch. ;)
ist eigentlich ne einfache Sache (der sagt das so ... :D )

Also du könntest einfach sowas schreiben ...

If a="test" then .... 1.Fall
elsif a="abc" then ... 2.Fall
elsif a="xyz" then ... 3.Fall
elsif a="123" then ... 4.Fall
else ... alles andere

oder aber so ...

select a
case "test" ... 1.Fall
case "abc" ... 2.Fall
case "xyz" ... 3.Fall
case "123" ... 4.Fall
default ... alles andere
endselect

oder so in der Art. Ob die Befehlswörter von Select/Case/Default jetzt bei
BASCOM existieren weiß ich nicht. Aber das Prinzip wird es dir wohl erklären
können ;)

Gruß
Dino
 
Hallo Cassio

Danke für die Schnelle antwort, deine beispile sind mir eine große hilfe, werde sie gleich mal ausprobieren.

Gruß Ralf :D
 
Hi Ralf !

Noch eine Frage...

Brauchst du die ADC-Pins auch für andere Dinge, oder warum schaltest du den ADC immer ein und aus? :hmmmm:

Dein Code:
Code:
Akkumessung = 1 
Start Adc 
Akku_spannung = Getadc(1) 
Print "Adc 1 " ; Akku_spannung 
Spannung = Akku_spannung


Das "Start Adc" kannst du doch sonst im Rumpf einmal unterbringen und lässt es ihn dann eingeschaltet.

Außerdem überlege ich, warum du zwei Variablen für den gleichen Wert benutzt? :hmmmm:
Spannung = Akku_spannung

Du kannst doch die "Akku_spannung" weiter verwenden bzw. gleich :
Spannung = Getadc(1)
eingeben.


Oder habe ich etwas beim Schnelldurchlauf übersehen. ;)

Gruß,
Cassio
 
Ob die Befehlswörter von Select/Case/Default jetzt bei
BASCOM existieren weiß ich nicht. Aber das Prinzip wird es dir wohl erklären
können ;)

Hi Dino!

Das passt schon im Großen und Ganzen. ;)



Ach Ralf....
Was mir eben noch eingefallen ist:
Du kannst ja auch mal probieren ob es so funktioniert:
Code:
Select Case Spannung 
Case 0 To 823 : Akku = 1 
Case 824 To 873 : Akku = 2 
Case 874 To 923 : Akku = 3 
Case 924 To 973 : Akku = 4 
Case 974 To 1015 : Akku = 5 
Case 1016 To 1023 : Akku = 6 
End Select 

__lcdno = 0 
Locate 2 , 4 
Lcd Chr(akku)


Weiß allerdings nicht, ob das in dieser Variante funktioniert... (Variable in der Klammer)

Gruß,
Cassio
 
Hi Cassio

In dem Code sind noch überbleibsel vom experimentieren die ich "leider" noch nicht entfernt habe.
Habe einen pin zum messen belegt für die Akkuspannung.

Gruß Ralf :D
 
Hi Dino

Danke für deine Hilfe.

Werde das mit dem select Case mal ausprobieren, scheint das einfachste zu sein.

Gruß Ralf
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)