- fchao-Sinus-Wechselrichter AliExpress         
Seite 6 von 10 ErsteErste ... 45678 ... LetzteLetzte
Ergebnis 51 bis 60 von 94

Thema: Scopeuhr mit BASCOM??

  1. #51
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    Ich habe 100k und 47k.
    Hatte gerade nix anderes in der Menge da.
    Ich bin aber erstaunt wie gut es sogar mit diesem
    Primitiv-DA-Wandler geht.

    Ok, schauen wir morgen mal weiter...

    Gruß Jan

  2. #52
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Heeyy, mit so einem DA wandler kann man richtig was anfangen (ich kann mich dran erinnern das es mal eine software gab, die damit sound auf dem LPT1 ausgegeben hat, grins)

    Also es Läuft suupi. bei mir sieht es allerdings etwas gepunkterer aus, stört mich aber nicht...
    Jetzt werde ich mal versuchen die zahlen zu definieren, und eine prozedur zu machen, die offsets mit einrechnet, um die buchstaben/zahlen an beliebige stellen zu positionieren...

    Kennt jemand ein vektorprogramm, in dem man evtl auf die schnelle einen zeichensatz erstellen könnte? (oder nehm ich paint?)

  3. #53
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    Vieleicht sollten wir das etwas vereinheitlichen,
    damit nicht so viele Zahlen übergeben werden müssen.
    Ich schlage vor zunächst 4 Subroutinen zu definieren:

    1. Move(x,y) - bewegt den Strahl unmittelbar auf Punkt x,y ohne eine Linie zu ziehen.

    2. Drawabs(x,y) -Zieht eine LInie von der aktuellen Position nach Position x,y

    3. Drawrel(x,y) - Zieht eine Linie relativ zur aktuellen Position, also x,y Punkte weiter.

    4. Drawobj(Adresse von obj) - Zeichnet ein Objekt auf der aktuellen Position.

    Objekt könnte z.B ein Buchstabe oder ein Raumschiff sein
    Das Objekt besteht aus relativen sichtbaren und unsichtbaren Linien.
    z.B. so:
    x,y,0 - unsichtbare Linie von akt.Position
    x,y,1 - sichbare LInie
    x,y,1 - noch 'ne sichtbare
    x,y,9 -letzte (sichtbare) Linie - ende Objekt

    Damit könnte man schon mal eine Menge anfangen.
    Die Zahlen würdest du als Objekte definieren.

    Nur ein Vorschlag...

    Gruß Jan

  4. #54
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Hi,

    also das ganz in kleine unterprogramme aufzuteilen ist ne gute idee, weil das die arbeit hinterher schön einfach macht! Willst du die Z achse mitbenutzen, oder lassen wir sie weg, und der Strahl ist immer ungedimmt? Damit das nachbauen mit den vielen verschiedenen Prozessoren schneller geht habe ich mal den deklarationsteil geändert. X und Y sind direkte aliasse von den ports und können auch so gesetzt werden.

    @jan: für vorschläge was die hardwarelösung angeht bin ich zu haben, lasse nächste woche einen prototypen fertigen und habe noch platz auf dem board.

    Code:
    X Alias Porta
    Y Alias Portd
    Z Alias Portf.1                                             'wenn z=0 dann ist der punkt sichtbar, wenn z=1 then ist der punkt aus
    
    Config X = Output
    Config Y = Output

  5. #55
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    Die Z-Achse ist schon irgendwie mit drin.
    Move-Befehle sind mit Z=Aus.
    Draw-Befehle sind mit Z=An.
    Objekte haben in der letzten Zahl 0 oder 1 für Z.

    Die Harwarelösung wird so schnell nicht gehen.
    Ich muss das selbst erst aufbauen und testen.

    Wer weiss, ob das überhaupt so geht, was ich mir da überlegt habe.
    OK, ich hab 'ne Menge von dem VECTREX abgeguckt,
    und da ging es ja auch...

    Mit den Alias für die Ports, das finde ich gut.

    Gruß Jan

  6. #56
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    MMHH oder wir ziehen das jetzt einfach so wie es ist durch....
    habe jetzt erstmal ein wenig ordnung gemacht...

    Die subs move und showdot sind dazugekommen, generell übergebe ich keine variablen an die subs (wenn jemand anders drüber denkt bitte mitteilen)


    Code:
    $regfile = "m128def.dat"
    $crystal = 16000000
    
    '######### Variablen Hauptprogramm
    Dim Xs As Integer
    Dim Xe As Integer
    Dim Ys As Integer
    Dim Ye As Integer
    
    
    '######### Variablen Line Funktion
    Dim Xlen As Integer
    Dim Ylen As Integer
    Dim Xa As Integer
    Dim Ya As Integer
    Dim Temp As Integer
    Dim N As Byte
    
    
    '########### Deklarationsteil für Subroutinen
    Declare Sub Drawline
    Declare Sub Move
    Declare Sub Showdot
    
    
    '########### Deklarationsteil für Ports
    X Alias Porta
    Y Alias Portd
    Z Alias Portf.1                                             'wenn f=0 dann ist der punkt sichtbar, wenn f=1 then ist der punkt aus
    
    Config X = Output
    Config Y = Output
    
    
    '################# Start Hauptprogramm
    Z = 1                                                       ' dunkel
    
    
    Do
    
    Restore Daten:
    For N = 1 To 14
    Read Xs
    Read Ys
    Read Xe
    Read Ye
    Call Drawline
    
    Next
    
    Loop
    End
    '################# Ende Haputprogramm; beginn subroutinen
    
    
    
    '#############################################################################################################
    Sub Drawline
    'Längen für x und y ausrechnen
    Xlen = Xe - Xs
    Ylen = Ye - Ys
    
    'Schrittrichtung für x und Y festlegen
    If Xlen >= 0 Then Xa = 1 Else Xa = 255
    If Ylen >= 0 Then Ya = 1 Else Ya = 255
    
    'wenn xlänge grösser ist, dann laufen wir an der X-Achse entlang
    '  ansonsten an der Y-Achse
    If Xlen < 0 Then Xlen = Xlen * -1
    If Ylen < 0 Then Ylen = Ylen * -1
    If Xlen < Ylen Then Goto Walky
    
    
    Walkx:
      Temp = Xlen
      Shift Temp , Right , 1
      Do
        Call Move                                               'position setzen
        Call Showdot                                            'punkt zeigen
        Xs = Xs + Xa                                            ':immer einen Schritt in x-Richtung weiter
        Temp = Temp - Ylen                                      ';Schritt in Y-Richtung nötig ?
        If Temp <= 0 Then                                       ';wenn <=0 dann ja
          Temp = Temp + Xlen                                    ';
          Ys = Ys + Ya                                          ';Schritt in Y-Richtung
        End If
        Loop Until Low(xs) = Low(xe)                            ';Wiederholen bis Ende der Linie
    Goto Endofsub
    
    Walky:
      Temp = Ylen
      Shift Temp , Right , 1
      Do
        Call Move                                               'position setzen
        Call Showdot                                            'punkt zeigen
        Ys = Ys + Ya
        Temp = Temp - Xlen
        If Temp < 0 Then
          Temp = Temp + Ylen
          Xs = Xs + Xa
        End If
      Loop Until Low(ys) = Low(ye)
    Endofsub:
    End Sub
    
    '######################################################################################################################
    
    Sub Move                                                    'Bewegt den punkt gedimmt zu der angegebenen position (xs,ys)
    X = Low(xs)                                                 'x setzen
    Y = Low(ys)                                                 'y setzen
    End Sub
    
    '######################################################################################################################
    
    Sub Showdot                                                 'zeigt den punkt an seiner aktuellen position an
    Z = 0                                                       'licht ein
    Waitus 2                                                    'kurz warten
    Z = 1                                                       'lich wieder aus
    End Sub
    
    '#####################################################################################################################
    
    
    
    
    Daten:
    
    Data 0% , 0% , 200% , 0%
    Data 200% , 0% , 200% , 200%
    Data 200% , 200% , 0% , 200%
    Data 0% , 200% , 0% , 0%
    
    Data 20% , 20% , 180% , 80%
    Data 180% , 80% , 80% , 180%
    Data 80% , 180% , 20% , 20%
    
    Data 100% , 120% , 80% , 120%
    Data 80% , 120% , 80% , 100%
    Data 80% , 100% , 90% , 100%
    Data 90% , 100% , 100% , 90%
    Data 100% , 90% , 100% , 80%
    Data 100% , 80% , 90% , 70%
    Data 90% , 70% , 80% , 70%

  7. #57
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Die drawabs und drawrel können ja auf drawline basieren und dürften relativ schnell realisiert sein. also wenn man global mit xs und xe bzw ys und ye arbeitet ist xe und ye ja einfach auszurechnen... werde ich denke ich nachher mal machen

  8. #58
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Die drawabs und drawrel können ja auf drawline basieren und dürften relativ schnell realisiert sein
    Genau, ich seh schon - du hast das drauf...
    Wichtig ist nur: Hinterher ist xs,ys das vorherige xe,ye.

    Die Variablen xs,ys,xe,ye und auch z global zu definieren,
    finde ich auch gut so, das spart ne Menge Speicher und
    Rechenzeit.


    Wenn ich nachher nach Hause komme, werd ich mich dann
    mit Drawobj befassen, damit von mir auch noch was kommt.

    Gruß Jan

  9. #59
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Habe es nun doch mit lokalen variablen gemacht, spart überlegungen und somit dass ich immer fragen guckend auf meinen monitor starre *G*

    Drawabs und drawrel sind drin.

    (achja ich habe die verstärkung am oszi verstellt, deshalb ist das objekt auf dem bild so dammed klein)


    Code:
    '#################################################################################################################
    '#################### Achtung stack einstellungen verdoppeln!! ###################################################
    '#################################################################################################################
    
    $regfile = "m128def.dat"
    $crystal = 16000000
    
    '######### Variablen Hauptprogramm
    Dim Xh1 As Integer
    Dim Xh2 As Integer
    Dim Yh1 As Integer
    Dim Yh2 As Integer
    
    Dim Aktx As Integer                                         'aktuelle x position
    Dim Akty As Integer                                         'aktuelle y position
    
    '######### Variablen Line Funktion
    Dim Xlen As Integer
    Dim Ylen As Integer
    Dim Xa As Integer
    Dim Ya As Integer
    Dim Temp As Integer
    Dim N As Byte
    
    '########## Hilfsvariablen für drawrel
    Dim Xr1 As Integer
    Dim Yr1 As Integer
    
    
    
    '########### Deklarationsteil für Subroutinen
    Declare Sub Drawabs(byval X3 As Integer , Byval Y3 As Integer)       'Zeichnet vom aktuellen Punkt zu den angegebenen kordinaten eine linie
    Declare Sub Drawrel(byval X2 As Integer , Byval Y2 As Integer)       'Zeichnet vom aktuellen Punkt zur relativen position eine linie
    
    Declare Sub Drawline(byval Xs As Integer , Byval Ys As Integer , Byval Xe As Integer , Byval Ye As Integer)
    Declare Sub Move(byval X1 As Integer , Byval Y1 As Integer)
    Declare Sub Showdot
    
    
    '########### Deklarationsteil für Ports
    X Alias Porta
    Y Alias Portd
    Z Alias Portf.1                                             'wenn f=0 dann ist der punkt sichtbar, wenn f=1 then ist der punkt aus
    
    Config X = Output
    Config Y = Output
    
    
    '################# Start Hauptprogramm
    Z = 1                                                       ' dunkel
    
    
    Do
    
    Call Move(50 , 50)
    
    Call Drawrel(0 , 100)
    Call Drawrel(100 , 0)
    Call Drawrel(0 , -100)
    Call Drawrel( -100 , 0)                                     'wieder bei 50,50
    
    Call Drawabs(150 , 150)
    Call Drawabs(100 , 200)
    Call Drawabs(50 , 150)
    
    Call Drawrel(100 , -100)
    
    Loop
    End
    '################# Ende Haputprogramm; beginn subroutinen#########################################################
    
    
    
    Sub Drawabs(byval X3 As Integer , Byval Y3 As Integer)
    Call Drawline(aktx , Akty , X3 , Y3)
    End Sub
    '############################################################################################################
    
    Sub Drawrel(byval X2 As Integer , Byval Y2 As Integer)
    Xr1 = Aktx + X2
    Yr1 = Akty + Y2
    Call Drawline(aktx , Akty , Xr1 , Yr1)
    End Sub
    
    
    
    
    '#############################################################################################################
    Sub Drawline(byval Xs As Integer , Byval Ys As Integer , Byval Xe As Integer , Byval Ye As Integer)
    'Sub Drawline
    'Längen für x und y ausrechnen
    Xlen = Xe - Xs
    Ylen = Ye - Ys
    
    'Schrittrichtung für x und Y festlegen
    If Xlen >= 0 Then Xa = 1 Else Xa = 255
    If Ylen >= 0 Then Ya = 1 Else Ya = 255
    
    'wenn xlänge grösser ist, dann laufen wir an der X-Achse entlang
    '  ansonsten an der Y-Achse
    If Xlen < 0 Then Xlen = Xlen * -1
    If Ylen < 0 Then Ylen = Ylen * -1
    If Xlen < Ylen Then Goto Walky
    
    
    Walkx:
      Temp = Xlen
      Shift Temp , Right , 1
      Do
        Call Move(xs , Ys)                                      'position setzen
        Call Showdot                                            'punkt zeigen
        Xs = Xs + Xa                                            ':immer einen Schritt in x-Richtung weiter
        Temp = Temp - Ylen                                      ';Schritt in Y-Richtung nötig ?
        If Temp <= 0 Then                                       ';wenn <=0 dann ja
          Temp = Temp + Xlen                                    ';
          Ys = Ys + Ya                                          ';Schritt in Y-Richtung
        End If
        Loop Until Low(xs) = Low(xe)                            ';Wiederholen bis Ende der Linie
    Goto Endofsub
    
    Walky:
      Temp = Ylen
      Shift Temp , Right , 1
      Do
        Call Move(xs , Ys)                                      'position setzen
        Call Showdot                                            'punkt zeigen
        Ys = Ys + Ya
        Temp = Temp - Xlen
        If Temp < 0 Then
          Temp = Temp + Ylen
          Xs = Xs + Xa
        End If
      Loop Until Low(ys) = Low(ye)
    Endofsub:
    End Sub
    
    '######################################################################################################################
    
    Sub Move(byval X1 As Integer , Byval Y1 As Integer)                                                    'Bewegt den punkt gedimmt zu der angegebenen position (xs,ys)
    X = Low(x1)                                                 'x setzen
    Y = Low(y1)                                                 'y setzen
    Aktx = Low(x1)                                              'x setzen
    Akty = Low(y1)                                              'y setzen
    End Sub
    
    '######################################################################################################################
    
    Sub Showdot                                                 'zeigt den punkt an seiner aktuellen position an
    Z = 0                                                       'licht ein
    Waitus 2                                                    'kurz warten
    Z = 1                                                       'lich wieder aus
    End Sub
    
    '#####################################################################################################################
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken dsc00026.jpg  

  10. #60
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Gute Arbeit, Sebastian !
    Dein Programm läuft auch bei mir auf dem Mega32 einwandfrei.
    Ich muss nur die Ports umsetzen, geht ja dank Alias sehr einfach.

    Ich werde mich jetzt mal an die Objektdarstellung geben.
    Es wird wohl sinnvoll sein, die Objekte auch drehbar zu machen.
    Naja...Nächster Schritt... Eins nach dem Anderen...

    Gruß Jan

Seite 6 von 10 ErsteErste ... 45678 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests