- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 3 von 3

Thema: Zufallsgenerator über mehrere Ports?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.10.2006
    Ort
    Kohlenpott
    Alter
    37
    Beiträge
    263

    Zufallsgenerator über mehrere Ports?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Moin,
    Ich habe an meinem ATmega16 vierundzwanzig LEDs angeschlossen und möchte diese nach und nach zum aufleuchten bringen. Alle 10s soll eine LED angehen, bis dann nach 240s alle LEDs an sind.
    Den Programmcode hatte ich schon geschrieben, er hat aber nicht funktioniert.
    Ich habe ich so rationalisiert bis folgende Zeilen übrig blieben:
    Code:
    Dim A As Integer  
    
    Porta = &B11111111 ' Alle LEDs aus (Invertierung wegen Transistor)
    Portb = &B11111111
    Portc = &B11111111
    Portd = &B11111111
    
    Do
    A.3 = 0
    Gosub Portbestimmung
    Loop
    End
    
    Portbestimmung:
    Portb.4 = A.1
    Portb.3 = A.2
    Portb.2 = A.3
    ....
    Portd.1 = A.23
    Portd.0.= A.24
    Return
    Eigentlich sollte jetzt die LED an Portb.2 an gehen.
    Stattdessen gehen alle an.
    Kann mir jemand sagen wo der fehler liegt?

    Ich habe die Ports so bestimmt, damit ich mit einer Schleife später z.b alle LEDs durchlaufen lassen kann.

    Gruss

    Alex

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.10.2006
    Ort
    Kohlenpott
    Alter
    37
    Beiträge
    263
    Ich bins nochmal.
    Besonders ärgerlich ist nun, dass die Invertierte Version meiner Idee funktioniert:
    Nach dem Anschalten sind alle LEDs an und gehen nach und nach aus, bis alle 24 LEDs aus sind:

    Code:
    Do
    
    Zufall:
    For P = 1 to 24   '24 mal soll er es tun
    N = Rnd(25)       ' Zufallszahl 0-24
    N = N+1            'Addiere 1 dazu um eine Null zu vermeiden
    If A.N = 1 Then  'Ist die gewünschte LED schon aus?
    Goto Zufall        ' Wähle eine neue Zufallszahl
    Else
    A.N = 1             'Ansonsten schalte die LED aus
    Gosub Portbestimmung
    End IF
    Wait 1              'Warte eine Sekunde
    Next p
    
    Loop
    End
    Um das ganze umzudrehen müsste ich doch nur ALLE LEDs am anfang Ausschalten und die LEDs EIN statt AUSschalten.
    Das klappt aber nicht.

    Weiß jemand warum?

    alex

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    13.10.2006
    Ort
    Kohlenpott
    Alter
    37
    Beiträge
    263
    Selbst ist der Mann!

    So funktioniert es:

    Do

    For P = 1 to 24
    A.P = 1
    Next P

    Zufall:
    For P = 1 to 24
    N = Rnd(25)
    N = N+1
    If A.N = 0 Then
    Goto Zufall
    Else
    A.N = 0
    Gosub Portbestimmung
    End IF
    Wait 1
    Next p

    Nächtlichen gruss

    Alex

Berechtigungen

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

LiFePO4 Speicher Test