- Akku Tests und Balkonkraftwerk Speicher         
Seite 9 von 10 ErsteErste ... 78910 LetzteLetzte
Ergebnis 81 bis 90 von 94

Thema: Scopeuhr mit BASCOM??

  1. #81
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Die Zahlen sehen bei dir viel besser aus als bei mir.. liegt wohl an deinem dac.. Ich habe z bei mir drin und nur wenn auch was gemalt wird z=0 gemacht... hat geholfen.. Werde nächste woche zwei dac ics kaufen.. kosten ja nicht die welt.. wich werde mir mal das tga proggi reingeben, sofern mich meine frau an den pc lässt.
    "SCHATZ SITZT DU SCHON WIEDER VOR DEM DING!?" falls nicht. Schöönes wochenende.

  2. #82
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    ...liegt wohl an deinem DAC...
    Ich hab mit jetzt 1% Metallfilmwiderstände mit mit
    5k und 10k besorgt. Sieht wesentlich besser aus damit.

    So, das Rotieren der Objekte funktioniert jetzt auch.
    Jedenfalls in 2D, also in der Ebene.
    Sieht lustig aus, wenn sich die Zahlen um sich selbst drehen.
    Statt 360 Grad für den Vollkreis habe ich 256 "Grad" gewählt,
    das ist einfacher zu rechnen.
    Rechter Winkel ist dann 64 "Grad" statt 90 Grad usw..
    Ich hab eine SUB ROTOBJ gebastelt.
    Funktioniert genau wie DRAWOBJ, nur das Objekt wird
    um den Winkel W gedreht gezeichnet.

    Die Z-Achse hab ich auch aktiviert, das Bild wird erheblich besser dadurch.
    Der Z-Eingang an meinem Oszi funktioniert aber andersherum als
    deiner. Also 1 = Strahl an. Egal, kann man ja leicht anpassen.

    Ich bastel noch ein wenig, dann stell ich das Program nochmal hier rein.

    Bis dann...Jan
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken vec5.jpg  

  3. #83
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Hi sieht ja echt scharf aus. wenn bessere widerstände auch schon helfen... ich habe als 20k 2x10k in reihe das merkt man warscheinlich doch schon ganz schön. schade das ich keinen oszi hier habe, und bis montag warten muss... Ich werde nächste woche ein alphabet machen, so dass auch text dargestellt werden kann. Ich denke als uhr wird das ziemlich dekorativ sein, grins. (mal schauen ob ich geduld genug habe, nen 7 segment zahlen font zu basteln, schöne große ziffern..)

  4. #84
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    So, hier wie verspochen nochmal der Code.
    Hab jetzt etwas Spielerei und die Uhr eingebaut.
    Um die ging es ja eigentlich ursprünglich.
    Aber die Uhr kann man noch nicht stellen.
    Das muss noch gemacht werden.

    @Sebastian: Du wirst die Z-Funktion umdrehen müssen.
    Im sechsten Abschnitt des Progs. Vor Start-Hauptprogramm.

    Gruß Jan

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    '########### Variablen Vektorgrafik
    Dim X As Integer
    Dim Y As Integer
    Dim W As Integer
    Dim S As Integer
    Dim Z As Integer
    Dim Xa As Integer
    Dim Ya As Integer
    Dim Xe As Integer
    Dim Ye As Integer
    Dim Xs As Integer
    Dim Ys As Integer
    Dim Xl As Integer
    Dim Yl As Integer
    Dim Xo As Integer
    Dim Yo As Integer
    Dim Zo As Integer
    Dim T As Integer
    
    Dim Sw As Integer
    Dim Cw As Integer
    
    
    '######### Variablen Hauptprogramm
    Dim H As Integer
    Dim Hs As Integer
    Dim Ss As Byte
    Dim S1 As Byte
    Dim S2 As Byte
    
    Dim Sina(340) As Integer
    Dim W1 As Integer
    Dim N As Integer
    
    Dim Sekunde As Byte
    Dim Sekd As Byte
    Dim Minute As Byte
    Dim Mind As Byte
    Dim Stunde As Byte
    Dim Stud As Byte
    Dim St2 As Byte
    Const Timeconst = 65536 - 15625
    
    
    '########### Deklarationsteil für Subroutinen
    Declare Sub Moverel
    Declare Sub Moveabs
    Declare Sub Drawline
    Declare Sub Drawrel                                         'Zeichnet vom aktuellen Punkt zur relativen position eine linie
    Declare Sub Drawabs                                         'Zeichnet vom aktuellen Punkt zu den angegebenen kordinaten eine linie
    Declare Sub Showdot
    Declare Sub Drawobj
    Declare Sub Rotobj
    
    Declare Sub Zeigeuhr
    Declare Sub Shownumb(byval Number As Byte)
    Declare Sub Showdigit(digit As Byte)
    
    '########### Deklarationsteil für Ports
    Xp Alias Porta
    Yp Alias Portc
    Zp Alias Portd.7                                            'wenn 1 dann ist der punkt sichtbar, wenn 0 then ist der punkt aus
    
    Config Xp = Output
    Config Yp = Output
    Config Portd = Output
    
    '#### Hier ändern für Z-Funktion ############
    Const Zan = 1
    Const Zaus = 0
    
    
    '################# Start Hauptprogramm
    
    Zp = Zaus
    Ss = 0
    
    Stunde = 20 : Stud = Makebcd(stunde)
    Minute = 15 : Mind = Makebcd(minute)
    Sekunde = 0 : Sekd = Makebcd(sekunde)
    
    
    Restore Sintab
    For H = 1 To 256
    Read Sina(h)
    Next
    
    Config Timer1 = Timer , Prescale = 1024
    On Timer1 Timint
    Timer1 = Timeconst
    Enable Interrupts
    Enable Timer1
    
    
    
    
    Do
    
      X = 0 : Y = 0 : Moveabs
      X = 40 : Y = 30 : Drawabs
      X = 72 : Y = 11 : Drawabs
      X = 40 : Y = 0 : Moveabs
      X = 110 : Y = 25 : Drawabs
      X = 160 : Y = 0 : Drawabs
      X = 134 : Y = 13 : Moveabs
      X = 160 : Y = 38 : Drawabs
      X = 190 : Y = 0 : Drawabs
      X == 220 : Y = 1 : Drawabs
      X = 255 : Y = 40 : Drawabs
      X = 238 : Y = 22 : Moveabs
      X = 210 : Y = 38 : Drawabs
      X = 184 : Y = 7 : Drawabs
      X = 0 : Y = 0 : Moveabs
    
    
    '  Y = 50
    '  X = 0 : Restore Obj0 : Drawobj
    '  X = 22 : Restore Obj1 : Drawobj
    '  X = 44 : Restore Obj2 : Drawobj
    '  X = 66 : Restore Obj3 : Drawobj
    '  X = 88 : Restore Obj4 : Drawobj
    '  X = 110 : Restore Obj5 : Drawobj
    '  X = 132 : Restore Obj6 : Drawobj
    '  X = 154 : Restore Obj7 : Drawobj
    '  X = 176 : Restore Obj8 : Drawobj
    '  X = 198 : Restore Obj9 : Drawobj
    '  X = 220 : Restore Objdp : Drawobj
    
     W1 = W1 + 4 : If W1 > 255 Then W1 = 0
      Ss = Ss + 1
      S1 = S1 - 2 : If S1 < 0 Then S1 = 254
      S2 = S2 - 3 : If S2 < 0 Then S2 = S2 + 256
    
      Restore Spaceship : X = Ss : Y = 20 : Drawobj
      Restore Spaceship : X = S1 : Y = 15 : W = 128 : Rotobj
      Restore Obj5 : X = 40 : Y = 60 : W = W1 : Rotobj
      Restore Obj2 : X = 75 : Y = 40 : W = W1 * 2 : W = W And 255 : Rotobj
      Restore Spaceship : X = S2 : Y = 90 : W = 256 - W1 : Rotobj
      Restore Obj 4 : X = 140 : Y = 55 : Rotobj
    
      Zeigeuhr
    
      Loop
    End
    
    
    
    '################# Ende Hauptprogramm; beginn subroutinen
    Timint:
    Timer1 = Timeconst
    Incr Sekunde
    
    If Sekunde = 60 Then
      Sekunde = 0
      Incr Minute
      If Minute = 60 Then
        Minute = 0
        Incr Stunde
        If Stunde = 24 Then
        Stunde = 0
        End If
      End If
    End If
    Sekd = Makebcd(sekunde)
    Mind = Makebcd(minute)
    Stud = Makebcd(stunde)
    Return
    
    
    Sub Zeigeuhr
    X = 36 : Y = 154 : Moveabs
    X = 220 : Drawabs
    Y = 116 : Drawabs
    X = 36 : Drawabs
    Y = 154 : Drawabs
    
    X = 40 : Y = 120
    Call Shownumb(stud)
    Restore Objdp : Drawobj
    X = X + 22
    Call Shownumb(mind)
    Restore Objdp : Drawobj
    X = X + 22
    Call Shownumb(sekd)
    End Sub
    
    
    
    Sub Shownumb(byval Number As Byte)
    St2 = Number / 16
    Call Showdigit(st2)
    X = X + 22
    Call Showdigit(number)
    X = X + 22
    End Sub
    
    Sub Showdigit(byval Digit As Byte)
      Digit = Digit And 15
      Select Case Digit:
        Case 0 : Restore Obj0
        Case 1 : Restore Obj1
        Case 2 : Restore Obj2
        Case 3 : Restore Obj3
        Case 4 : Restore Obj4
        Case 5 : Restore Obj5
        Case 6 : Restore Obj6
        Case 7 : Restore Obj7
        Case 8 : Restore Obj8
        Case 9 : Restore Obj9
      End Select
      Drawobj
    End Sub
    
    
    
    '##########################
    
    Sub Drawabs
    Xe = X : Ye = Y
    Drawline
    End Sub
    '#################################
    
    Sub Drawrel
    Xe = Xa + X
    Ye = Ya + Y
    Drawline
    End Sub
    
    Sub Drawline:
    Xl = Xe - Xa : Xs = 1
    If Xl < 0 Then
     Xl = 0 - Xl : Xs = -1
    End If
    Yl = Ye - Ya : Ys = 1
    If Yl < 0 Then
     Yl = 0 - Yl : Ys = -1
    End If
    
    If Xl < Yl Then Goto Walky
    
    Walkx:
      T = Xl
      Shift T , Right , 1
      Do
        Zp = Zan
        Xp = Xa : Yp = Ya
        Xa = Xa + Xs                                            ':immer einen Schritt in x-Richtung weiter
        T = T - Yl                                              ';Schritt in Y-Richtung nötig ?
        If T <= 0 Then                                          ';wenn <=0 dann ja
          T = T + Xl                                            ';
          Ya = Ya + Ys                                          ';Schritt in Y-Richtung
        End If
        Loop Until Low(xa) = Low(xe)                            ';Wiederholen bis Ende der Linie
        Zp = Zaus
      Goto Ex1
    
    Walky:
      T = Yl
      Shift T , Right , 1
      Do
      Zp = Zan
        Xp = Xa : Yp = Ya
        Ya = Ya + Ys                                            ':immer einen Schritt in x-Richtung weiter
        T = T - Xl                                              ';Schritt in Y-Richtung nötig ?
        If T <= 0 Then                                          ';wenn <=0 dann ja
          T = T + Yl                                            ';
          Xa = Xa + Xs                                          ';Schritt in Y-Richtung
        End If
        Loop Until Low(ya) = Low(ye)                            ';Wiederholen bis Ende der Linie
        Zp = Zaus
    Ex1:
        End Sub
    '##############################
    
    Sub Moveabs                                                 'Bewegt den punkt gedimmt zu der angegebenen position (x,y)
    Xa = Low(x)                                                 'Xaktuell setzen
    Ya = Low(y)                                                 'Xaktuell setzen
    Xp = Low(x)                                                 'Xport setzen
    Yp = Low(y)                                                 'yPort setzen
    End Sub
    
    '##############################
    
    Sub Moverel
    Xa = Xa + X : Ya = Ya + Y
    End Sub
    
    '##############################
    
    Sub Showdot                                                 'zeigt den punkt an seiner aktuellen position an
    Zp = Zan                                                    'licht ein
    Waitus 2                                                    'kurz warten
    Zp = Zaus                                                   'lichtwieder aus
    End Sub
    
    '##############################
    'Stellt Objekt auf Position X,Y dar.
    ' X und Y sind >=0 und <=255
    Sub Drawobj
    Xo = X : Yo = Y
    Call Moveabs
    Do
      Read X : Read Y : Read Z
      If Z > 0 Then Call Drawrel Else Call Moverel
    Loop Until Z > 1
    X = Xo : Y = Yo
    End Sub
    
    '##############################
    'Stellt Objekt Auf Position X , Y um den Winkel W gedreht dar.
    ' X und Y und W sind >=0 und <=255
    
    Sub Rotobj
    Xo = X : Yo = Y : W = W + 1
    Sw = Sina(w)
    Cw = W + 64 : If Cw > 256 Then Cw = Cw - 256 : Cw = Sina(cw)
    W = W - 1
    Call Moveabs
    Do
      Read Xl : Read Yl : Read Z
      X = Cw * Xl : Y = Sw * Yl : X = X - Y
      Y = Sw * Xl : Xl = Cw * Yl : Y = Y + Xl
      X = X / 256 : Y = Y / 256
    
      If Z > 0 Then Call Drawrel Else Call Moverel
    Loop Until Z > 1
    X = Xo : Y = Yo
    End Sub
    
    
    '##############################
    
    Sintab:
    Data 0% , 6% , 13% , 19% , 25% , 31% , 38% , 44%
    Data 50% , 56% , 62% , 68% , 74% , 80% , 86% , 92%
    Data 98% , 104% , 109% , 115% , 121% , 126% , 132% , 137%
    Data 142% , 147% , 152% , 157% , 162% , 167% , 172% , 177%
    Data 181% , 185% , 190% , 194% , 198% , 202% , 206% , 209%
    Data 213% , 216% , 220% , 223% , 226% , 229% , 231% , 234%
    Data 237% , 239% , 241% , 243% , 245% , 247% , 248% , 250%
    Data 251% , 252% , 253% , 254% , 255% , 255% , 256% , 256%
    Data 256% , 256% , 256% , 255% , 255% , 254% , 253% , 252%
    Data 251% , 250% , 248% , 247% , 245% , 243% , 241% , 239%
    Data 237% , 234% , 231% , 229% , 226% , 223% , 220% , 216%
    Data 213% , 209% , 206% , 202% , 198% , 194% , 190% , 185%
    Data 181% , 177% , 172% , 167% , 162% , 157% , 152% , 147%
    Data 142% , 137% , 132% , 126% , 121% , 115% , 109% , 104%
    Data 98% , 92% , 86% , 80% , 74% , 68% , 62% , 56%
    Data 50% , 44% , 38% , 31% , 25% , 19% , 13% , 6%
    Data 0% , -6% , -13% , -19% , -25% , -31% , -38% , -44%
    Data -50% , -56% , -62% , -68% , -74% , -80% , -86% , -92%
    Data -98% , -104% , -109% , -115% , -121% , -126% , -132% , -137%
    Data -142% , -147% , -152% , -157% , -162% , -167% , -172% , -177%
    Data -181% , -185% , -190% , -194% , -198% , -202% , -206% , -209%
    Data -213% , -216% , -220% , -223% , -226% , -229% , -231% , -234%
    Data -237% , -239% , -241% , -243% , -245% , -247% , -248% , -250%
    Data -251% , -252% , -253% , -254% , -255% , -255% , -256% , -256%
    Data -256% , -256% , -256% , -255% , -255% , -254% , -253% , -252%
    Data -251% , -250% , -248% , -247% , -245% , -243% , -241% , -239%
    Data -237% , -234% , -231% , -229% , -226% , -223% , -220% , -216%
    Data -213% , -209% , -206% , -202% , -198% , -194% , -190% , -185%
    Data -181% , -177% , -172% , -167% , -162% , -157% , -152% , -147%
    Data -142% , -137% , -132% , -126% , -121% , -115% , -109% , -104%
    Data -98% , -92% , -86% , -80% , -74% , -68% , -62% , -56%
    Data -50% , -44% , -38% , -31% , -25% , -19% , -13% , -6%
    
    
    '######## Objektdefinitionen
    'X, Y, Z
    'X, Y, Z
    'X und Y sind relative Positionen
    'z=0 bedeutet moverel
    'z=1 bedeutet sichtbare Linie
    'Ende Objekt ist wenn z=3
    
    Spaceship:
    Data 15% , 8% , 1%
    Data -15% , 8% , 1%
    Data 6% , -8% , 1%
    Data -6% , -8% , 1%
    Data 4% , 8% , 0%
    Data -5% , 3% , 1%
    Data 5% , -3% , 1%
    Data -5% , 0% , 1%
    Data 5% , 0% , 1%
    Data -5% , -3% , 1%
    Data 5% , 3% , 3%
    
    
    Obj1:
    Data 0% , 16% , 0%
    Data 16% , 14% , 1%
    Data 0% , -30% , 3%
    
    Obj2:
    Data 0% , 26% , 0%
    Data 0% , 2% , 1%
    Data 4% , 2% , 1%
    Data 9% , 0% , 1%
    Data 5% , -4% , 1%
    Data 0% , -3% , 1%
    Data -18% , -23% , 1%
    Data 6% , 3% , 1%
    Data 8% , 0% , 1%
    Data 6% , -3% , 3%
    
    Obj3:
    Data 0% , 3% , 0%
    Data 4% , -3% , 1%
    Data 10% , 0% , 1%
    Data 4% , 3% , 1%
    Data 0% , 10% , 1%
    Data -3% , 3% , 1%
    Data -2% , 0% , 1%
    Data 2% , 0% , 0%
    Data 3% , 3% , 1%
    Data 0% , 8% , 1%
    Data -4% , 3% , 1%
    Data -10% , 0% , 1%
    Data -4% , -3% , 3%
    
    Obj4:
    Data 11% , 0% , 0%
    Data 0% , 17% , 1%
    Data 6% , -5% , 0%
    Data -17% , 0% , 1%
    Data 17% , 18% , 3%
    
    Obj5:
    Data 0% , 4% , 0%
    Data 4% , -4% , 1%
    Data 10% , 0% , 1%
    Data 5% , 5% , 1%
    Data 0% , 8% , 1%
    Data -5% , 5% , 1%
    Data -9% , 0% , 1%
    Data -5% , -6% , 1%
    Data 0% , 18% , 1%
    Data 17% , 0% , 3%
    
    Obj6:
    Data 0% , 10% , 0%
    Data 0% , -5% , 1%
    Data 4% , -4% , 1%
    Data 10% , 0% , 1%
    Data 5% , 5% , 1%
    Data 0% , 8% , 1%
    Data -5% , 5% , 1%
    Data -9% , 0% , 1%
    Data -5% , -6% , 1%
    Data 0% , 15% , 1%
    Data 4% , 4% , 1%
    Data 8% , 0% , 1%
    Data 5% , -4% , 3%
    
    Obj7:
    Data 0% , 30% , 0%
    Data 12% , 0% , 1%
    Data 0% , -30% , 1%
    Data -6% , 15% , 0%
    Data 12% , 0% , 3%
    
    Obj8:
    Data 4% , 0% , 0%
    Data 10% , 0% , 1%
    Data 4% , 5% , 1%
    Data 0% , 6% , 1%
    Data -18% , 8% , 1%
    Data 0% , 6% , 1%
    Data 4% , 4% , 1%
    Data 10% , 0% , 1%
    Data 4% , -5% , 1%
    Data 0% , -6% , 1%
    Data -18% , -8% , 1%
    Data 0% , -6% , 1%
    Data 4% , -5% , 3%
    
    Obj9:
    Data 0% , 5% , 0%
    Data 4% , -5% , 1%
    Data 10% , 0% , 1%
    Data 4% , 5% , 1%
    Data 0% , 20% , 1%
    Data -4% , 5% , 1%
    Data -10% , 0% , 1%
    Data -4% , -5% , 1%
    Data 0% , -7% , 1%
    Data 4% , -5% , 1%
    Data 10% , 0% , 1%
    Data 4% , 4% , 3%
    
    Obj0:
    Data 0% , 5% , 0%
    Data 4% , -5% , 1%
    Data 10% , 0% , 1%
    Data 4% , 5% , 1%
    Data 0% , 20% , 1%
    Data -4% , 5% , 1%
    Data -10% , 0% , 1%
    Data -4% , -5% , 1%
    Data 0% , -20% , 3%
    
    Objdp:
    Data 7% , 7% , 0%
    Data 4% , 0% , 1%
    Data 0% , 4% , 1%
    Data -4% , 0% , 1%
    Data 0% , -4% , 1%
    Data 0% , 12% , 0%
    Data 4% , 0% , 1%
    Data 0% , 4% , 1%
    Data -4% , 0% , 1%
    Data 0% , -4% , 3%
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken ve5.jpg  

  5. #85
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    hallo jan, kann man die uhr als kreisuhr(ziffernblatt) mit minuten-stunden-sekunden-zeiger herstellen.
    was sind das eigentlich für matte striche im hintergrund. sind das bildstörungen(elektronenstrahlstörungen) oder zu schnell gezeichnete objekte.
    mfg pebisoft

  6. #86
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo Peter,
    kann man die uhr als kreisuhr(ziffernblatt) mit minuten-stunden-sekunden-zeiger herstellen
    Ja sicher - gute Idee ! Alle Voraussetzungen sind im Programm schon enthalten.
    Also mach mal, ich freu mich auf deine Lösung.

    was sind das eigentlich für matte striche im hintergrund...
    Das sind bewegte / sich drehende Objekte.
    Durch die lange Belichtungszeit...

    Gruß Jan

  7. #87
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Hallo allerseits.

    Ich stelle hier jetzt nach und nach die verbesserten objekte rein...

    @jan: Sieht wirklich besser aus, mit den 1% widerständen.
    Die Uhr läuft ned richtig (ich werde sie heute abend korrigieren)

    @pebi: Ich habe auch schon über so ne uhr nachgedacht, dürfte kein problem sein, jetzt wo dank jan objekte gedreht werden können....

    Code:
    '#### 4: Komplett neu #############
    Obj4:
    Data 11% , 0% , 0%
    Data 0% , 30% , 1%
    Data -13% , -17% , 1%
    Data 18% , 0% , 3%
    
    
    '##### 8: Y korrigiert
    Obj8:
    Data 4% , 0% , 0%
    Data 10% , 0% , 1%
    Data 4% , 5% , 1%
    Data 0% , 7% , 1%
    Data -18% , 8% , 1%
    Data 0% , 7% , 1%
    Data 4% , 4% , 1%
    Data 10% , 0% , 1%
    Data 4% , -5% , 1%
    Data 0% , -7% , 1%
    Data -18% , -8% , 1%
    Data 0% , -7% , 1%
    Data 4% , -5% , 3%
    
    Obj6:
    Data 0% , 10% , 0%
    Data 0% , -5% , 1%
    Data 4% , -4% , 1%
    Data 10% , 0% , 1%
    Data 5% , 5% , 1%
    Data 0% , 8% , 1%
    Data -5% , 5% , 1%
    Data -9% , 0% , 1%
    Data -5% , -8% , 1%
    Data 0% , 15% , 1%
    Data 4% , 4% , 1%
    Data 8% , 0% , 1%
    Data 5% , -4% , 3%
    
    Obj7:
    Data 0% , 30% , 0%
    Data 15% , 0% , 1%
    Data 0% , -30% , 1%
    Data -10% , 15% , 0%
    Data 16% , 0% , 3%

  8. #88
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Hallo, ich habe mal eine Analoguhr gebastelt, der große fette zeiger ist der stundenzeiger, an dem design müsste man warscheinlich etwas basteln *grins*
    hat jemand eine idee wie man den stundenzeiger etwas feiner wechseln lassen könnte? so dass er zb bei halb zwölf zwischen 0 und 1 steht......
    Achja ich habe den mittelpunkt bei 100/100 gedetzt, das lässt sich ja entweder im code oder am scope schnell nachstellen... sorry für das bild. habs mitm handy gemacht....

    Code:
    $regfile = "m128def.dat"
    $crystal = 16000000
    
    '########### Variablen Vektorgrafik
    Dim X As Integer
    Dim Y As Integer
    Dim W As Integer
    Dim S As Integer
    Dim Z As Integer
    Dim Xa As Integer
    Dim Ya As Integer
    Dim Xe As Integer
    Dim Ye As Integer
    Dim Xs As Integer
    Dim Ys As Integer
    Dim Xl As Integer
    Dim Yl As Integer
    Dim Xo As Integer
    Dim Yo As Integer
    Dim Zo As Integer
    Dim T As Integer
    
    Dim Sw As Integer
    Dim Cw As Integer
    
    
    '######### Variablen Hauptprogramm
    Dim H As Integer
    Dim Hs As Integer
    Dim Ss As Byte
    Dim S1 As Byte
    Dim S2 As Byte
    
    Dim Sina(340) As Integer
    Dim W1 As Integer
    Dim N As Integer
    Dim I As Integer
    
    Dim Sekunde As Byte
    Dim Sekd As Byte
    Dim Minute As Byte
    Dim Mind As Byte
    Dim Stunde As Byte
    Dim Stud As Byte
    Dim St2 As Byte
    Const Timeconst = 65536 - 15625
    
    
    '########### Deklarationsteil für Subroutinen
    Declare Sub Moverel
    Declare Sub Moveabs
    Declare Sub Drawline
    Declare Sub Drawrel                                         'Zeichnet vom aktuellen Punkt zur relativen position eine linie
    Declare Sub Drawabs                                         'Zeichnet vom aktuellen Punkt zu den angegebenen kordinaten eine linie
    Declare Sub Showdot
    Declare Sub Drawobj
    Declare Sub Rotobj
    
    Declare Sub Stundenzeiger
    Declare Sub Minutenzeiger
    Declare Sub Sekundenzeiger
    
    '########### Deklarationsteil für Ports
    Xp Alias Porta
    Yp Alias Portd
    Zp Alias Portf.1                                            'wenn 1 dann ist der punkt sichtbar, wenn 0 then ist der punkt aus
    
    Config Xp = Output
    Config Yp = Output
    Config Portf = Output
    
    '#### Hier ändern für Z-Funktion ############
    Const Zan = 0
    Const Zaus = 1
    
    
    '################# Start Hauptprogramm
    
    Zp = Zaus
    Ss = 0
    
    Stunde = 0
    Minute = 15
    Sekunde = 30
    
    
    Restore Sintab
    For H = 1 To 256
    Read Sina(h)
    Next
    
    Config Timer1 = Timer , Prescale = 1024
    On Timer1 Timint
    Timer1 = Timeconst
    Enable Interrupts
    Enable Timer1
    
    
    
    
    Do
       Stundenzeiger
       Minutenzeiger
       Sekundenzeiger
    
      Loop
    End
    
    
    
    '################# Ende Hauptprogramm; beginn subroutinen
    Timint:
    Timer1 = Timeconst
    Incr Sekunde
    If Sekunde = 60 Then
      Sekunde = 0
      Incr Minute
      If Minute = 60 Then
        Minute = 0
        Incr Stunde
        If Stunde = 24 Then
        Stunde = 0
        End If
      End If
    End If
    
    Return
    
    
    Sub Stundenzeiger:
    Restore Hourtab
    For I = 0 To Stunde : Read W : Next
    Restore Zeiger1 : X = 100 : Y = 100 : Rotobj
    End Sub
    
    Sub Minutenzeiger:
    Restore Mintab
    For I = 0 To Minute : Read W : Next
    Restore Zeiger2 : X = 100 : Y = 100 : Rotobj
    End Sub
    
    Sub Sekundenzeiger:
    Restore Mintab
    For I = 0 To Sekunde : Read W : Next
    Restore Zeiger3 : X = 100 : Y = 100 : Rotobj
    End Sub
    
    
    '##########################
    
    Sub Drawabs
    Xe = X : Ye = Y
    Drawline
    End Sub
    '#################################
    
    Sub Drawrel
    Xe = Xa + X
    Ye = Ya + Y
    Drawline
    End Sub
    
    Sub Drawline:
    Xl = Xe - Xa : Xs = 1
    If Xl < 0 Then
     Xl = 0 - Xl : Xs = -1
    End If
    Yl = Ye - Ya : Ys = 1
    If Yl < 0 Then
     Yl = 0 - Yl : Ys = -1
    End If
    
    If Xl < Yl Then Goto Walky
    
    Walkx:
      T = Xl
      Shift T , Right , 1
      Do
        Zp = Zan
        Xp = Xa : Yp = Ya
        Xa = Xa + Xs                                            ':immer einen Schritt in x-Richtung weiter
        T = T - Yl                                              ';Schritt in Y-Richtung nötig ?
        If T <= 0 Then                                          ';wenn <=0 dann ja
          T = T + Xl                                            ';
          Ya = Ya + Ys                                          ';Schritt in Y-Richtung
        End If
        Loop Until Low(xa) = Low(xe)                            ';Wiederholen bis Ende der Linie
        Zp = Zaus
      Goto Ex1
    
    Walky:
      T = Yl
      Shift T , Right , 1
      Do
      Zp = Zan
        Xp = Xa : Yp = Ya
        Ya = Ya + Ys                                            ':immer einen Schritt in x-Richtung weiter
        T = T - Xl                                              ';Schritt in Y-Richtung nötig ?
        If T <= 0 Then                                          ';wenn <=0 dann ja
          T = T + Yl                                            ';
          Xa = Xa + Xs                                          ';Schritt in Y-Richtung
        End If
        Loop Until Low(ya) = Low(ye)                            ';Wiederholen bis Ende der Linie
        Zp = Zaus
    Ex1:
        End Sub
    '##############################
    
    Sub Moveabs                                                 'Bewegt den punkt gedimmt zu der angegebenen position (x,y)
    Xa = Low(x)                                                 'Xaktuell setzen
    Ya = Low(y)                                                 'Xaktuell setzen
    Xp = Low(x)                                                 'Xport setzen
    Yp = Low(y)                                                 'yPort setzen
    End Sub
    
    '##############################
    
    Sub Moverel
    Xa = Xa + X : Ya = Ya + Y
    End Sub
    
    '##############################
    
    Sub Showdot                                                 'zeigt den punkt an seiner aktuellen position an
    Zp = Zan                                                    'licht ein
    Waitus 2                                                    'kurz warten
    Zp = Zaus                                                   'lichtwieder aus
    End Sub
    
    '##############################
    'Stellt Objekt auf Position X,Y dar.
    ' X und Y sind >=0 und <=255
    Sub Drawobj
    Xo = X : Yo = Y
    Call Moveabs
    Do
      Read X : Read Y : Read Z
      If Z > 0 Then Call Drawrel Else Call Moverel
    Loop Until Z > 1
    X = Xo : Y = Yo
    End Sub
    
    '##############################
    'Stellt Objekt Auf Position X , Y um den Winkel W gedreht dar.
    'X und Y und W sind >=0 und <=255
    
    Sub Rotobj
    Xo = X : Yo = Y : W = W + 1
    Sw = Sina(w)
    Cw = W + 64 : If Cw > 256 Then Cw = Cw - 256 : Cw = Sina(cw)
    W = W - 1
    Call Moveabs
    Do
      Read Xl : Read Yl : Read Z
      X = Cw * Xl : Y = Sw * Yl : X = X - Y
      Y = Sw * Xl : Xl = Cw * Yl : Y = Y + Xl
      X = X / 256 : Y = Y / 256
    
      If Z > 0 Then Call Drawrel Else Call Moverel
    Loop Until Z > 1
    X = Xo : Y = Yo
    End Sub
    
    
    '##############################
    
    Sintab:
    
    Data 0% , 6% , 13% , 19% , 25% , 31% , 38% , 44%
    Data 50% , 56% , 62% , 68% , 74% , 80% , 86% , 92%
    Data 98% , 104% , 109% , 115% , 121% , 126% , 132% , 137%
    Data 142% , 147% , 152% , 157% , 162% , 167% , 172% , 177%
    Data 181% , 185% , 190% , 194% , 198% , 202% , 206% , 209%
    Data 213% , 216% , 220% , 223% , 226% , 229% , 231% , 234%
    Data 237% , 239% , 241% , 243% , 245% , 247% , 248% , 250%
    Data 251% , 252% , 253% , 254% , 255% , 255% , 256% , 256%
    Data 256% , 256% , 256% , 255% , 255% , 254% , 253% , 252%
    Data 251% , 250% , 248% , 247% , 245% , 243% , 241% , 239%
    Data 237% , 234% , 231% , 229% , 226% , 223% , 220% , 216%
    Data 213% , 209% , 206% , 202% , 198% , 194% , 190% , 185%
    Data 181% , 177% , 172% , 167% , 162% , 157% , 152% , 147%
    Data 142% , 137% , 132% , 126% , 121% , 115% , 109% , 104%
    Data 98% , 92% , 86% , 80% , 74% , 68% , 62% , 56%
    Data 50% , 44% , 38% , 31% , 25% , 19% , 13% , 6%
    Data 0% , -6% , -13% , -19% , -25% , -31% , -38% , -44%
    Data -50% , -56% , -62% , -68% , -74% , -80% , -86% , -92%
    Data -98% , -104% , -109% , -115% , -121% , -126% , -132% , -137%
    Data -142% , -147% , -152% , -157% , -162% , -167% , -172% , -177%
    Data -181% , -185% , -190% , -194% , -198% , -202% , -206% , -209%
    Data -213% , -216% , -220% , -223% , -226% , -229% , -231% , -234%
    Data -237% , -239% , -241% , -243% , -245% , -247% , -248% , -250%
    Data -251% , -252% , -253% , -254% , -255% , -255% , -256% , -256%
    Data -256% , -256% , -256% , -255% , -255% , -254% , -253% , -252%
    Data -251% , -250% , -248% , -247% , -245% , -243% , -241% , -239%
    Data -237% , -234% , -231% , -229% , -226% , -223% , -220% , -216%
    Data -213% , -209% , -206% , -202% , -198% , -194% , -190% , -185%
    Data -181% , -177% , -172% , -167% , -162% , -157% , -152% , -147%
    Data -142% , -137% , -132% , -126% , -121% , -115% , -109% , -104%
    Data -98% , -92% , -86% , -80% , -74% , -68% , -62% , -56%
    Data -50% , -44% , -38% , -31% , -25% , -19% , -13% , -6%
    
    
    Hourtab:                                                    'gibt die gradzahlen der stunden zurück angefangen bei null
    Data 256% , 234% , 213% , 192% , 170% , 149% , 128% , 106%
    Data 85% , 64% , 42% , 21% , 256% , 234% , 213% , 192%
    Data 170% , 149% , 128% , 106% , 85% , 64% , 42% , 21%
    
    Mintab:                                                     'gibt die gradzahlen der minuten/sekunden zurück angefangen bei null
    Data 256% , 252% , 247% , 243% , 239% , 234% , 230% , 226%
    Data 222% , 217% , 213% , 209% , 205% , 200% , 196% , 192%
    Data 188% , 183% , 179% , 174% , 171% , 166% , 162% , 158%
    Data 153% , 149% , 145% , 141% , 136% , 132% , 128% , 124%
    Data 119% , 115% , 111% , 106% , 102% , 98% , 94% , 90%
    Data 85% , 81% , 77% , 72% , 68% , 64% , 60% , 55%
    Data 51% , 47% , 43% , 38% , 34% , 30% , 26% , 21%
    Data 17% , 12% , 8% , 4% , 0%
    
    '######## Objektdefinitionen
    'X, Y, Z
    'X, Y, Z
    'X und Y sind relative Positionen
    'z=0 bedeutet moverel
    'z=1 bedeutet sichtbare Linie
    'Ende Objekt ist wenn z=3
    
    Spaceship:
    Data 15% , 8% , 1%
    Data -15% , 8% , 1%
    Data 6% , -8% , 1%
    Data -6% , -8% , 1%
    Data 4% , 8% , 0%
    Data -5% , 3% , 1%
    Data 5% , -3% , 1%
    Data -5% , 0% , 1%
    Data 5% , 0% , 1%
    Data -5% , -3% , 1%
    Data 5% , 3% , 3%
    
    Zeiger1:                                                    'stundenzeiger
    Data -15% , 0% , 0%
    Data 30% , 0% , 1%
    Data -15% , 100% , 1%
    Data -15% , -100% , 3%
    
    Zeiger2:                                                    'minutenzeiger
    Data -10% , 0% , 0%
    Data 20% , 0% , 1%
    Data -10% , 75% , 1%
    Data -10% , -75% , 3%
    
    Zeiger3:                                                    'sekunden"zeiger"
    Data 0% , 110% , 3%
    
    
    Obj1:
    Data 0% , 16% , 0%
    Data 16% , 14% , 1%
    Data 0% , -30% , 3%
    
    Obj2:
    Data 0% , 26% , 0%
    Data 0% , 2% , 1%
    Data 4% , 2% , 1%
    Data 9% , 0% , 1%
    Data 5% , -4% , 1%
    Data 0% , -3% , 1%
    Data -18% , -23% , 1%
    Data 6% , 3% , 1%
    Data 8% , 0% , 1%
    Data 6% , -3% , 3%
    
    Obj3:
    Data 0% , 3% , 0%
    Data 4% , -3% , 1%
    Data 10% , 0% , 1%
    Data 4% , 3% , 1%
    Data 0% , 10% , 1%
    Data -3% , 3% , 1%
    Data -2% , 0% , 1%
    Data 2% , 0% , 0%
    Data 3% , 3% , 1%
    Data 0% , 8% , 1%
    Data -4% , 3% , 1%
    Data -10% , 0% , 1%
    Data -4% , -3% , 3%
    
    Obj4:
    Data 11% , 0% , 0%
    Data 0% , 30% , 1%
    Data -13% , -17% , 1%
    Data 18% , 0% , 3%
    
    
    Obj5:
    Data 0% , 4% , 0%
    Data 4% , -4% , 1%
    Data 10% , 0% , 1%
    Data 5% , 5% , 1%
    Data 0% , 8% , 1%
    Data -5% , 5% , 1%
    Data -9% , 0% , 1%
    Data -5% , -6% , 1%
    Data 0% , 18% , 1%
    Data 17% , 0% , 3%
    
    Obj6:
    Data 0% , 10% , 0%
    Data 0% , -5% , 1%
    Data 4% , -4% , 1%
    Data 10% , 0% , 1%
    Data 5% , 5% , 1%
    Data 0% , 8% , 1%
    Data -5% , 5% , 1%
    Data -9% , 0% , 1%
    Data -5% , -8% , 1%
    Data 0% , 15% , 1%
    Data 4% , 4% , 1%
    Data 8% , 0% , 1%
    Data 5% , -4% , 3%
    
    Obj7:
    Data 0% , 30% , 0%
    Data 15% , 0% , 1%
    Data 0% , -30% , 1%
    Data -10% , 15% , 0%
    Data 16% , 0% , 3%
    
    Obj8:
    Data 4% , 0% , 0%
    Data 10% , 0% , 1%
    Data 4% , 5% , 1%
    Data 0% , 7% , 1%
    Data -18% , 8% , 1%
    Data 0% , 7% , 1%
    Data 4% , 4% , 1%
    Data 10% , 0% , 1%
    Data 4% , -5% , 1%
    Data 0% , -7% , 1%
    Data -18% , -8% , 1%
    Data 0% , -7% , 1%
    Data 4% , -5% , 3%
    
    Obj9:
    Data 0% , 5% , 0%
    Data 4% , -5% , 1%
    Data 10% , 0% , 1%
    Data 4% , 5% , 1%
    Data 0% , 20% , 1%
    Data -4% , 5% , 1%
    Data -10% , 0% , 1%
    Data -4% , -5% , 1%
    Data 0% , -7% , 1%
    Data 4% , -5% , 1%
    Data 10% , 0% , 1%
    Data 4% , 4% , 3%
    
    Obj0:
    Data 0% , 5% , 0%
    Data 4% , -5% , 1%
    Data 10% , 0% , 1%
    Data 4% , 5% , 1%
    Data 0% , 20% , 1%
    Data -4% , 5% , 1%
    Data -10% , 0% , 1%
    Data -4% , -5% , 1%
    Data 0% , -20% , 3%
    
    Objdp:
    Data 7% , 7% , 0%
    Data 4% , 0% , 1%
    Data 0% , 4% , 1%
    Data -4% , 0% , 1%
    Data 0% , -4% , 1%
    Data 0% , 12% , 0%
    Data 4% , 0% , 1%
    Data 0% , 4% , 1%
    Data -4% , 0% , 1%
    Data 0% , -4% , 3%
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken bild002.jpg  

  9. #89
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    Schöne Uhr ! - ein paar Sunden-Ziffern / Markierungen wären nicht schlecht.
    hat jemand eine idee wie man den stundenzeiger etwas feiner wechseln lassen könnte?
    Nimm doch für den Stundenzeiger auch die Minuten-Grad-Tabelle.
    Der Stundenzeiger macht pro Stunde 5 "Minutensprünge", alle 12 Minuten einen. (60/5=12)
    Also Stundenzeiger-Minutenposition = Stunde + int( Minute / 12 ).
    Ist hoffentlich verständlich.

    Übrigens, deine Grad-Definitionen gehen bis 256, das darf aber höchstens bis 255 gehen.
    255 ist quasi wie 359 Grad, danach kommt wieder 0, nicht 256.
    Ich weiss nicht ob die Rotationsberechnung bei
    Winkeln >255 oder <0 immer richtig funktioniert.

    Gruß Jan

  10. #90
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Okay,ich werds heute abend angleichen. ( Also ist 255=0??)
    Mit dem stundenzeiger, das habe ich mir auch so ähnlich gedacht... Mich reizt es noch so eine uhr "standalone" zu machen, habe aber bedenken, dass die alte rft röhre dann nach zwei tagen den geist aufgibt..

Seite 9 von 10 ErsteErste ... 78910 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests