logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Bascom] Obsługa tablicy, wartość min i max.

Matizz 25 Lis 2010 16:41 2386 2
REKLAMA
  • #1 8788097
    Matizz
    Poziom 18  
    Witam!

    Chciałbym do czujnika dodać wyświetlanie maksymalnej i minimalnej wartości (potrzebne jest to do kalibracji).
    Wymyśliłem więc by po włączeniu zasilania przez chwilę zczytywać dane z ADC i zapisywać je do tablicy, a następnie wybrać wartość maksymalną i minimalną.

    Prosze o Was o sprawdzenie poprawności programu:
    (jest to tylko wycinek do kalibracji)

    
    Dim X(200) As Word
    Dim Y(200) As Word
    
    Dim A As Word
    Dim B As Word
    Dim C As Integer
    Dim Xmax As Word
    Dim Xmin As Word
    Dim Ymin As Word
    Dim Ymax As Word
    
    
    For C = 1 To 200
    
    A = Getadc(0)
    B = Getadc(1)
    
    X(c) = A
    Y(c) = B
    
    Waitms 10
    
    Next
    
    Xmax = Max(x(1))
    Xmin = Min(x(1))
    Ymax = Max(y(1))
    Ymin = Min(y(1))


    Pozdrawiam
    Matizz
  • REKLAMA
  • #2 8788534
    mpietras
    Poziom 17  
    wygląda OK.
  • #3 8788764
    galusz
    Poziom 15  
    Ja bym to zrobił bez tablicy, bo szkoda pamięci...
    Przypominam, że Atmega8 ma tylko 1024 Bytes Internal SRAM

    Twój program skutecznie zjada 200 x 2 (2 tablice) x 2 (Wodr) = 800 Bajtów
    Czyli jeszcze jedna taka tablica i będziesz musiał kupować lepszy procek :)


    Wystarczą 2 zmienne i 2 ify.

    
    Dim Xmax As Word
    Dim Xmin As Word 
    
    Xmin=1024
    Xmax=0
    
    For C = 1 To 200
    
    a = Getadc(0)
    
    if a<Xmin then Xmin=a  
    if a>xmax then xmax=a 
    
    Waitms 10
    Next 
    
    


    Zasada działania bardzo prosta. Jeśli aktualna wartość jest mniejsza od poprzedniej najmniejszej wartości to nową najmniejszą wartością jest nowy pomiar. Podobnie robimy dla wartości maksimum...

    W ten sposób możesz cały czas na bieżąco monitorować max/min lub nawet średnią (ze wszystkich lub z 2 poprzednich pomiarów) i zawsze bez problemu możesz resetować wynik przypisując nowe wartości początkowe zmiennym Xmin/Xmax...
REKLAMA