- Akku Tests und Balkonkraftwerk Speicher         
Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 32

Thema: Datentypen

  1. #21
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    Anzeige

    Praxistest und DIY Projekte
    den eeprom kann man ja 100.000 mal beschreiben wie schnell schaft man das erfahrungs gemäß? strat und zielpunkt speicher ich jetzt darauf und die zwischen punkte auf den sram (der hat keine grenze?)

  2. #22
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    hab alles auf doubel gesetzt und am ende trozdem 0 raus

  3. #23
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Poste doch noch mal dein aktuelles Programm.
    Dann brauchen wir nicht zu raten, wie es jetzt aussieht, sondern können es direkt austesten.

    Gruß

    Rolf

  4. #24
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    Code:
         $regfile = "m16def.dat"
    $crystal = 7372800
     Dim A As Double
     Dim B As Double
     Dim C As Double
     Dim Comfeld(12) As Byte
     Dim X As Double
     Dim Y As Double
     Dim Z As Double
     Dim W As Double
     Dim K As Double
     Dim M As Double
     Dim N As Double
     Dim Auflosung As Double
     Dim Xstart As Integer
     Dim Ystart As Integer
     Dim Zstart As Integer
    
     Dim Xziel As Double
     Dim Yziel As Double
     Dim Zziel As Double
     Dim Zwischenwert1 As Double
     Dim Zwischenwert2 As Double
     Dim Zwischenwert3 As Double
     Dim Zwischenwert4 As Double
     Dim Zwischenwert5 As Double
     Dim Zwischenwert6 As Double
     Dim Aa As Double
     Dim Bb As Double
    
     Dim Xzwischenziel As Double
     Dim Yzwischenziel As Double
     Dim Zzwischenziel As Double
      Dim Realposx As Integer
      Dim Realposy As Integer
      Dim Realposz As Integer
      Dim Stposx As Double
      Dim Stposy As Double
      Dim Stposz As Double
     Dim Motoraus As Double
     Dim Absx As Double
     Dim Absy As Double
     Dim Absz As Double
     Dim Pc1alt As Double
     Dim Pc0alt As Double
     Dim F0 As Bit
     Dim F1 As Bit : Dim F2 As Bit : Dim F3 As Bit : Dim F4 As Bit
     Dim F5 As Bit : Dim F6 As Bit : Dim F7 As Bit : Dim F8 As Bit
    
      Auflosung = 2
    Config Porta = Output
    Config Portd = Input
    'Config Portd.6 = Output
    Config Portc = Input
    Config Portb.1 = Input
    Config Portb.0 = Output
       Realposx = 1
       Realposy = 1
    Realposz = 1
    
       'Enable
    
        Xziel = 300                                             '10 umdreungen
        Yziel = 30
         Porta = 255
    
        Portc = 255
        Stposx = 1                                              'Realposx
        Stposy = 1                                              'Realposy
        Stposz = 1                                              'Realposz
    
    
         For Aa = 0 To 2 Step 0.1
         Bb = Aa - 2
    
         Zwischenwert1 = Stposx * Bb
         Zwischenwert2 = Xziel * Aa
         Zwischenwert3 = Stposy * Bb
         Zwischenwert4 = Yziel * Aa
         Zwischenwert5 = Zwischenwert2 - Zwischenwert1          'zwischen punkt erechnungs zeug
         Zwischenwert6 = zwischenwert4 - Zwischenwert3
    
         X = Zwischenwert5 / 2                                  'realpos damit ich immer vom wirklichen wert ausgehe und der fehler nicht größer wird
         Y = Zwischenwert6 / 2
    
         'X = 50.5
         Motoraus = 0
         X = Int(x)
         X = X - Realpos
         If X = 0 Then : Porta.0 = 0 : Else : Porta.0 = 1 : End If  'test ob x null ist
        Do
       If Pinc.0 = 0 Then Pc0alt = 1
       If Pinc.0 = 1 And Pc0alt = 1 Then : Pc0alt = 0 : X = X + 1 : Realposx = Realposx + 1 : End If       'pos holen
    
       If Pinc.1 = 0 Then Pc1alt = 1
       If Pinc.1 = 1 And Pc1alt = 1 Then : Pc1alt = 0 : X = X - 1 : Realposx = Realposx -1 : End If       'pos holen
       If X = 0 Then : Porta.1 = 0 : Else : Porta.1 = 1 : End If
    
          Absx = Abs(x)
    
        If X > 0 Then : Porta.4 = 0 : Porta.5 = 1 : Waitus 50 : End If       'Pos anfahren
        If X < 0 Then : Porta.4 = 1 : Porta.5 = 0 : Waitus 50 : End If       'pos anfahre
        If Absx < 15 Then : Porta.4 = 0 : Porta.5 = 0 : End If
        If X = 0 Then Motoraus = Motoraus + 1
        Loop Until Motoraus = 1000                              'sicher gehen das der motor wirklich steht und keinen schwung mehr hat
        Next Aa
        Do
        Loop

    das ist er gestern ging garnichts der test ob x null ist war positiv die led leuchtete jetzt gehts nur das der motor ein paar um drehungen mehr macht (schätze 10* soviele) noch was pinc0 bekommt die impulse der geberscheibe wenn der motor sich nach rechts dreht und pinc1 wenn er sich nach links dreht also die geber scheibe und die lichschranken haben auch noch eine logik die geht aber 100%ig

  5. #25
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    In Zeile 90 steht
    X = X - Realpos
    Realpos ist nicht definiert. Seltsamerweise beschwert sich der Compiler nicht. Habe ich bisher noch nie gehabt. In der Simulation hat Realpos den Wert 3, keine Ahnung warum.
    Wahrscheinlich meinst du
    X = X - RealPosx

    Gruß

    Rolf

  6. #26
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    ja meinte ich. tippfehler da kann ich mich ja doof und dämlich suchen der compiler brüllt bei allem außer eine variable ist nicht definiert. werd es mal testen

    test fehlgeschlagen der fehler bleibt der selbe

  7. #27
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    x ist ja ein absolutes ziel und realposx mein absolute postion und um den weg zu erechnen mach ich ja X = X - Realposx trotzdem scheint er immer den weg immer wieder neu zu fahren als wäre meine absolute position immer noch 0 (versteht ihr was ich meine hab mein problem das zu beschreiben) der müsste 10 umdrehungen mach er macht aber über 70 dann wurd ich abgelenkt dauerte aber nicht mehr lange also müssten um die 100 gewesen sein

  8. #28
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    das geht aber zu machen oder hat da Bascom wieder ein problem damit z.B.
    a as word
    b as word
    c as word
    a=1
    b=2
    c=a/b

    dann ist c 0
    a=3
    b=2
    c=a/b
    ist c 1 oder kann es sein das der auch auf die idee kommt 0 zu machen weil c eigentlich 1,5 ist und damit kein word und der wider eine datentyp umformung machen will

  9. #29
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427

    es geht endlich

    es geht hab zwar immer noch meine schwierig keiten mit den datentypen aber es geht hier der code der ist jetzt so gemacht das ich in der einen for next schleicf nicht merh +0.1 mach sondern nur noch ganzahlige wert sodas alles keine gleit kommas mehr brauch wer noch paar optimierungs vorschläge machen kann und will die mir nicht das ganze programm auf den kopfstelle.
    Code:
          $regfile = "m16def.dat"
    $crystal = 7372800
     Dim A As Double
     Dim B As Double
     Dim C As Double
     Dim Comfeld(12) As Byte
     Dim X As Long
     Dim Y As Long
     Dim Z As Double
     Dim W As Double
     Dim K As Double
     Dim M As Double
     Dim N As Double
     Dim Auflosung As Long
     Dim Xstart As Long
     Dim Ystart As Long
     Dim Zstart As Long
    
     Dim Xziel As Long
     Dim Yziel As Long
     Dim Zziel As Long
     Dim Zwischenwert1 As Long
     Dim Zwischenwert2 As Long
     Dim Zwischenwert3 As Long
     Dim Zwischenwert4 As Long
     Dim Zwischenwert5 As Long
     Dim Zwischenwert6 As Long
     Dim Aa As Long
     Dim Bb As Long
    
     Dim Xzwischenziel As Double
     Dim Yzwischenziel As Double
     Dim Zzwischenziel As Double
      Dim Realposx As Long
      Dim Realposy As Long
      Dim Realposz As Long
      Dim Stposx As Long
      Dim Stposy As Long
      Dim Stposz As Long
     Dim Motoraus As Long
     Dim Absx As Long
     Dim Absy As Long
     Dim Absz As Long
     Dim Pc1alt As Long
     Dim Pc0alt As Long
     Dim F0 As Bit
     Dim F1 As Bit : Dim F2 As Bit : Dim F3 As Bit : Dim F4 As Bit
     Dim F5 As Bit : Dim F6 As Bit : Dim F7 As Bit : Dim F8 As Bit
    
      Auflosung = 2
    Config Porta = Output
    Config Portd = Input
    'Config Portd.6 = Output
    Config Portc = Input
    Config Portb.1 = Input
    Config Portb.0 = Output
       Realposx = 1
       Realposy = 1
    Realposz = 1
    
       'Enable
    
        Xziel = 120                                             '10 umdreungen
        Yziel = 30
         Porta = 255
    
        Portc = 255
        Stposx = 1                                              'Realposx
        Stposy = 1                                              'Realposy
        Stposz = 1                                              'Realposz
    
    
         For Aa = 0 To 20 Step 5
         Bb = Aa - 20
    
         Zwischenwert1 = Stposx * Bb
         Zwischenwert2 = Xziel * Aa
         Zwischenwert3 = Stposy * Bb
         Zwischenwert4 = Yziel * Aa
         Zwischenwert5 = Zwischenwert2 - Zwischenwert1          'zwischen punkt erechnungs zeug
         Zwischenwert6 = Zwischenwert4 - Zwischenwert3
    
         X = Zwischenwert5 / 2                                  'realpos damit ich immer vom wirklichen wert ausgehe und der fehler nicht größer wird
         Y = Zwischenwert6 / 2
    
         X = X / 10
         Y = Y / 10
         'X = 50.5
         Motoraus = 0
         'X = Int(x)
         X = X - Realposx
         If X = 0 Then : Porta.0 = 0 : Else : Porta.0 = 1 : End If
        Do
       If Pinc.0 = 0 Then Pc0alt = 1
       If Pinc.0 = 1 And Pc0alt = 1 Then : Pc0alt = 0 : X = X + 1 : Realposx = Realposx - 1 : End If       'pos holen
    
       If Pinc.1 = 0 Then Pc1alt = 1
       If Pinc.1 = 1 And Pc1alt = 1 Then : Pc1alt = 0 : X = X - 1 : Realposx = Realposx + 1 : End If       'pos holen
       If X = 0 Then : Porta.1 = 0 : Else : Porta.1 = 1 : End If
    
          Absx = X                                              'abs(x)
    
        If X > 0 Then : Porta.4 = 0 : Porta.5 = 1 : Waitus 50 : End If       'Pos anfahren
        If X < 0 Then : Porta.4 = 1 : Porta.5 = 0 : Waitus 50 : End If       'pos anfahre
        If Absx < 15 Then : Porta.4 = 0 : Porta.5 = 0 : End If
        If X = 0 Then Motoraus = Motoraus + 1
        Loop Until Motoraus = 1000                              'sicher gehen das der motor wirklich steht und keinen schwung mehr hat
        Next Aa
        Do
        Loop

  10. #30
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    der neue atmega8 von pollin ist eigetroffen und da wollt ich jetzt wissen was ich machen muss das der atmega8 den externen 16MHz quarz verwendet und nicht den 1MHz internen rc oszilator.

Seite 3 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress