26.1.. Prikaz sinusoidalne promjene. Napisati program koji prikazuje promjenu-nastajanje trofaznog napona u funkciji vremena. Faza druge sinusoide je pomjerana za -120 stepeni a traća sinusoida je pomjerana za +120 stepeni.
Opis rješenja: Poslije deklarisanja varijable u matrici se postavljaju vrijednosti koordinatnog sitema (REM koordinatni sistem). Zatima se izračunavaju vrijednosti tri sinusoide i smješta u matricu sin1 (REM koordinate sinusoida ...). To su vrijednosti 3 sinusoide. Prikaz izračunatih vrijednosti sinusuoida tj. vrijednosti iz matrice se izvodio na kraju (REM ipis na ekran iz matrice).
Listing programa:
REM 26011360 Nastajanje trofazne struje sinusoide
DIM sin1(25, 36) AS STRING
DIM bod AS STRING
DO
GOSUB 900: REM inicijalizacija
FOR t = 0 TO 360 STEP 15: REM prikaz po 15 stepeni
CLS
GOSUB 100: REM nove vrijednosti
GOSUB 300: REM prikaz na ekranu
GOSUB 400: REM kasni
NEXT t
INPUT "Hoces da se ponovi crtanje (/n) "; ne$
LOOP UNTIL (LEFT$(ne$, 1) = "N" OR LEFT$(ne$, 1) = "n")
GOTO 990: REM idi na kraj
100 REM koordiantne sinusoide oznaka je x
FOR i = 0 TO t STEP 15: REM nastajanje sinusoide po 15 stepeni
x = INT(i / 15)
REM na pozitivne vrijednosti se prvo primjenjuje int pa oduzimanje, dok na negativne se promjeni predznak prije funkcije INT
IF SIN(i * 4 * ATN(1) / 180) > 0 THEN
y = max - INT(max * SIN(i * 4 * ATN(1) / 180)): REM koordinate bez pomaka
ELSE
y = max + INT(max * (-SIN(i * 4 * ATN(1) / 180))): REM koordinate bez pomaka
END IF
sin1(y, x) = "x"
REM faza je pomjerena za -120 stepeni
IF SIN(i * 4 * ATN(1) / 180) > 0 THEN
yminus = max - INT(max * SIN((i - 120) * 4 * ATN(1) / 180)): REM koordinate bez pomaka
ELSE
yminus = max + INT(max * (-SIN((i - 120) * 4 * ATN(1) / 180))): REM koordinate bez pomaka
END IF
sin1(yminus, x) = "-"
REM faza je pomjerena za +120 stepeni
IF SIN(i * 4 * ATN(1) / 180) > 0 THEN
yplus = max - INT(max * SIN((i + 120) * 4 * ATN(1) / 180)): REM koordinate bez pomaka
ELSE
yplus = max + INT(max * (-SIN((i + 120) * 4 * ATN(1) / 180))): REM koordinate bez pomaka
END IF
sin1(yplus, x) = "+"
NEXT i
RETURN
300 REM ispis na ekran iz matrice
PRINT " NASTAJANJE SINUSOIDE"
PRINT "x osa: ! na 90, 180, 270 i 360 stepeni",
PRINT "y osa: - na -1, -0.5, 0, 0.5, 1"
REM PRINT
FOR i = 0 TO 20
FOR j = 0 TO 28: REM nacrtaj izracunate vrijednosti
PRINT sin1(i, j);
NEXT j
PRINT
NEXT i
RETURN
400 REM kasnjenje
FOR kas = 1 TO 20000
FOR kas2 = 1 TO 2000
tt = tt + 1
NEXT kas2
NEXT kas
RETURN
900 REM inicijalizacija
REM koordinatni sistem podesavanje memorije za ispis
max = 10
FOR i = 0 TO 20
FOR j = 0 TO 36
IF i <> 10 THEN
sin1(i, j) = " ": REM prazno
ELSE
IF j MOD 6 = 0 THEN
sin1(i, j) = "!": REM 90 stepeni
ELSE
sin1(i, j) = "-": REM x osa
END IF
END IF
NEXT j
NEXT i
REM nacrtaj y osu
j = 0
FOR i = 0 TO 20
IF i MOD 5 = 0 THEN
sin1(i, j) = "-": REM - na -1, -0.5, 0, 0.5, 1
ELSE
sin1(i, j) = "!": REM 90 stepeni
END IF
NEXT i
RETURN
990 END
Ispis na ekranu:
Index
|
|