Hallo
Naar aanleiding van de klok op deze site:http://www.micro-examples.com/public/microex-navig/doc/079-touchclock.… wou ik er ook een maken, in te stellen via een touchscreen. Maar bij het instellen van het uur krijg ik de reeds opgeslagen getallen niet meer te zien. De onderstaande code werkt met "multi-dimensional arrays" en ik denk dat hier een fout in geslopen is. PS de code is nog lang niet af en alles is geschreven in mikrobasic voor een PIC18F452. De touchscreencontroller.
program clock
dim x_coord, y_coord as longint
x_coord128, y_coord64 as byte
rond, rond2, rond3, rond4, cnt, cnt2, cnt3, plaats as byte
opslaanx, opslaany as byte[10][50]
aantal as byte[10]
totdat as byte
sub function GetX() as word
PORTa.2 = 1 ' DRIVEA = 1
PORTa.5 = 0 ' DRIVEB = 0
Delay_ms(5)
result = ADC_Read(0) ' READ-X (BOTTOM)
end sub
sub function GetY() as word
PORTa.2 = 0 ' DRIVEA = 0
PORTa.5 = 1 ' DRIVEB = 1 (BOTTOM drive on)
Delay_ms(5)
result = ADC_Read(1) ' READ-X (LEFT)
end sub
sub procedure tekenblokjes
glcd_dot(x_coord128+1,y_coord64,1)
glcd_dot(x_coord128,y_coord64,1)
glcd_dot(x_coord128-1,y_coord64,1)
glcd_dot(x_coord128,y_coord64+1,1)
glcd_dot(x_coord128,y_coord64-1,1)
glcd_dot(x_coord128+1,y_coord64+1,1)
glcd_dot(x_coord128-1,y_coord64-1,1)
glcd_dot(x_coord128+1,y_coord64-1,1)
glcd_dot(x_coord128-1,y_coord64+1,1)
end sub
main:
adcon1 = %00000100 ' ANO & AN1-RA2 & RA5
TRISA = %00001011
PORTA = 0x00
trisc = $ff
cnt = 47
cnt2 = 1
cnt3 = 1
rond = 1
rond2 = 1
glcd_init(portb,0,1,2,3,5,4,portd)
Glcd_Set_Font(@font5x7, 5, 7, 32) ' Choose font size 5x7
Glcd_Fill(0) ' Clear GLCD
while rond
rond2 = 1
Glcd_Write_Text("Teken het getal ",17,0,1)
Glcd_Write_Text("Binnen het veld",17,7,1)
Glcd_Rectangle(44,10,84,54,1)
cnt = cnt+ 1
Glcd_Write_Char(cnt,110,0,1)
if cnt = 57 then rond = 0 cnt= 47 end if
while rond2
x_coord = GetX()
y_coord = GetY()
x_coord128 = (x_coord * 128) / 1024
y_coord64 = 64 -((y_coord *64) / 1024)
if ((x_coord128 >= 44) and (x_coord128 <= 84) and
(y_coord64 >= 10) and (y_coord64 <= 54)) then
tekenblokjes
opslaanx[cnt3-1][cnt2-1] = x_coord128 '40, anders gecentreerd
opslaany[cnt3-1][cnt2-1] = y_coord64
cnt2 = cnt2 + 1
aantal[cnt3-1]= cnt2-1
end if
if portc.5 = 1 then rond2 =0 glcd_fill(0) cnt3=cnt3+1 end if
Delay_ms(100)
wend
wend
Instellen:
glcd_fill(0)
glcd_write_text("Stel het uur in ", 17, 0, 1)
glcd_write_text("Druk op C5 voor +1", 0, 7, 1)
plaats = 0
cnt3 = 0
rond3 = 1
rond4 = 1
while rond3
cnt2 = 0
while rond4
do
cnt2 = cnt2 + 1
x_coord128= opslaanx[cnt3][cnt2-1]
x_coord128= x_coord128 + plaats
y_coord64 = opslaany[cnt3][cnt2-1]
tekenblokjes
totdat = aantal[cnt3]
loop until cnt2 = totdat
rond4=0
wend
if portc.5 = 1 then
while portc.5 nop wend
cnt3 = cnt3 + 1
glcd_fill(0)
rond4=1
glcd_write_text("Stel het uur in ", 17, 0, 1)
glcd_write_text("Druk op C5 voor +1", 0, 7, 1)
end if
wend
end.