Oled 96x96 Grove OLE42178P

BESQUEUT

Senior Member
Je viens de recevoir 2 afficheurs OLED bien adaptés quand on n'a pas beaucoup de place mais beaucoup de choses à afficher...

afficheur-oled-96x96-grove

J'ai pris un peu peur au vu de la notice, mais finalement c'est faisable avec un Picaxe.

Je publie en l'état au cas où d'autres seraient intéressés, en particulier pour la séquence d'initialisation et pour le générateur de caractères.

IMG_6755r.JPG

Code:
'PROGRAM: OLED003_lisible.BAS
' 1036 bytes
'   12 s
#picaxe 40X2


symbol OLED_Address=120
symbol OCM=0x80			' OLED_CommandMode
symbol ODM=0x40			' OLED_DataMode

symbol __=0x00
symbol o_=0x0F
symbol oo=0xFF
symbol _o=0xF0

Symbol Lettre=b3
Symbol Nombre=b4

symbol XX=b10
symbol YY=b11



'setfreq m16

pause 1000
gosub OLED_INIT


do
	gosub ClearDisplay
	pause 1000
	
	for b1=1 to 6
		hi2cout (ODM,255,255,255,255,255,255,255,255)
	next b1
	
	for b2=2 to 95
		hi2cout (ODM,15,0,0,0,0,0,0,0)
		
		for b1=2 to 5
			hi2cout (ODM,0,0,0,0,0,0,0,0)
		next b1
		
		hi2cout (ODM,0,0,0,0,0,0,0,240)
	next b2
	
	for b1=1 to 6
		hi2cout (ODM,255,255,255,255,255,255,255,255)
	next b1
	
	
	xx=10
	yy=8
	for Nombre=0 to 255
		gosub EcrireN
	next Nombre
	
	for yy=20 to 80 step 12
		xx=10
		for Lettre=48 to 57
			gosub Ecrire
		next Lettre
	next yy
	pause 10000
loop

end

OLED_INIT:

hI2Csetup i2cmaster,OLED_Address,i2cfast,I2cbyte

hi2cout (OCM,0xFD,OCM,0x12) 	' Accept commands

hi2cout (OCM,0xAE) 		' Display Off
hi2cout (OCM,0xA8,OCM,0x5F) 	' set multiplex ratio 96
 
hi2cout (OCM,0xA1,OCM,0) ' 	' set display start line
hi2cout (OCM,0xA2,OCm,0x60)	' set display offset
hi2cout (OCM,0xA0,OCM,0x40)	' set remap
'hi2cout (OCM,0xA0,OCM,0x46)	' set remap
hi2cout (OCM,0xAB,OCM,0x01)	' set VDD internal
hi2cout (OCM,0x81,OCM,0x53)	' set contrast
hi2cout (OCM,0xB1,OCM,0x51)	' set Phase Length
hi2cout (OCM,0xB3,OCM,0x01,OCM,0xB9)	' set Display Clock Divide Ratio
hi2cout (OCM,0xBC,OCM,0x08)	' Set pre-charge voltage
hi2cout (OCM,0xBE,OCM,0x07)	' set VCOMH
hi2cout (OCM,0xB6,OCM,0x01)	' Set second pre-charge period
hi2cout (OCM,0xD5,OCM,0x62)	' enable second precharge and internal vs1
hi2cout (OCM,0xA4)		' set normal display mode
hi2cout (OCM,0x2E)		' Deactivate scroll
hi2cout (OCM,0xAF)		' Switch on Display
pause 100

RAZ:
hI2Csetup i2cmaster,OLED_Address,i2cfast,I2cbyte
hi2cout (OCM,0x75,OCM,0,OCM,95)	' Set row Address
hi2cout (OCM,0x15,OCM,8,OCM,55)	' Set column Address

return

ClearDisplay:
  gosub RAZ
  for b2=1 to 48
	for b1=1 to 6
		hi2cout (ODM,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
	next b1
  next b2
return


Ecrire:
	gosub SetXY
Ecr:
	b1=b3-48
	on b1 gosub Ecr0,Ecr1,Ecr2,Ecr3,Ecr4,Ecr5,Ecr6,Ecr7,Ecr8,Ecr9
return


SetXY:
	b1=xx+2
	hi2cout (OCM,0x15,OCM,xx,OCM,b1)	' Set column Address(8/55)
	b1=yy+7
	hi2cout (OCM,0x75,OCM,yy,OCM,b1)	' Set row Address (0/95)
	xx=xx+4
return

	
EcrireG:
	gosub setxy
	hi2cout (ODM,48,55,0)
	for b1=2 to 7
		hi2cout (ODM,7,0,7)
	next b1
	hi2cout (ODM,48,55,0)
return


Ecr0:
	hi2cout (ODM,_o,oo,__)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,_o,oo,__)
return


Ecr1:
	hi2cout (ODM,__,_o,__)
	hi2cout (ODM,__,oo,__)
	hi2cout (ODM,_o,_o,__)
	hi2cout (ODM,__,_o,__)
	hi2cout (ODM,__,_o,__)
	hi2cout (ODM,__,_o,__)
	hi2cout (ODM,__,_o,__)
	hi2cout (ODM,_o,oo,o_)
return

Ecr2:
	hi2cout (ODM,_o,oo,__)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,__,_o,__)
	hi2cout (ODM,__,o_,__)
	hi2cout (ODM,_o,__,__)
	hi2cout (ODM,o_,__,__)
	hi2cout (ODM,oo,oo,o_)
return

Ecr3:
	hi2cout (ODM,_o,oo,__)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,__,oo,__)
	hi2cout (ODM,__,oo,__)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,_o,oo,__)
return

Ecr4:
	hi2cout (ODM,__,__,o_)
	hi2cout (ODM,__,_o,o_)
	hi2cout (ODM,__,o_,o_)
	hi2cout (ODM,_o,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,oo,oo,o_)
	hi2cout (ODM,__,__,o_)
	hi2cout (ODM,__,__,o_)
return

Ecr5:
	hi2cout (ODM,oo,oo,o_)
	hi2cout (ODM,o_,__,__)
	hi2cout (ODM,o_,__,__)
	hi2cout (ODM,oo,oo,__)
	hi2cout (ODM,__,__,o_)
	hi2cout (ODM,__,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,_o,oo,__)
return

Ecr6:
	hi2cout (ODM,_o,oo,o_)
	hi2cout (ODM,o_,__,__)
	hi2cout (ODM,o_,__,__)
	hi2cout (ODM,oo,oo,__)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,_o,oo,__)
return

Ecr7:
	hi2cout (ODM,oo,oo,o_)
	hi2cout (ODM,__,__,o_)
	hi2cout (ODM,__,_o,__)
	hi2cout (ODM,__,o_,__)
	hi2cout (ODM,_o,__,__)
	hi2cout (ODM,_o,__,__)
	hi2cout (ODM,_o,__,__)
	hi2cout (ODM,_o,__,__)
return

Ecr8:
	hi2cout (ODM,_o,oo,__)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,_o,oo,__)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,_o,oo,__)
return

Ecr9:
	hi2cout (ODM,_o,oo,__)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,o_,__,o_)
	hi2cout (ODM,_o,oo,o_)
	hi2cout (ODM,__,__,o_)
	hi2cout (ODM,__,__,o_)
	hi2cout (ODM,__,__,o_)
	hi2cout (ODM,_o,oo,__)
return

EcrireN:
	BinToASCII Nombre,b5,b6,b7
	b1=yy+7
	hi2cout (OCM,0x75,OCM,yy,OCM,b1)	' Set row Address (0/95)
	
	if b5>48 then
		b1=xx+4
		b2=xx+6
		hi2cout (OCM,0x15,OCM,b1,OCM,b2)	' Set column Address(8/55)
		Lettre=b5 : gosub Ecr
	endif
	
	
	if b5>48 or b6>48 then
		b1=xx+8
		b2=xx+10
		hi2cout (OCM,0x15,OCM,b1,OCM,b2)	' Set column Address(8/55)
		Lettre=b6 : gosub Ecr
	endif
	
	b1=xx+12
	b2=xx+14
	hi2cout (OCM,0x15,OCM,b1,OCM,b2)	' Set column Address(8/55)
	Lettre=b7 : gosub Ecr
return
 

BESQUEUT

Senior Member
Le générateur de caractères complet :

Code:
#PICAXE 40X2

symbol __=0
symbol _o=240
symbol o_=15
symbol oo=255

symbol DAT=0x15

	select case b1
	case >="a"
		b1=b1-"a"
		on b1 gosub Ecr_a,Ecr_b,Ecr_c,Ecr_d,Ecr_e,Ecr_f,Ecr_g,Ecr_h,Ecr_i,Ecr_j,Ecr_k,Ecr_l,Ecr_m,Ecr_n,Ecr_o,Ecr_p,Ecr_q,Ecr_r,Ecr_s,Ecr_t,Ecr_u,Ecr_v,Ecr_w,Ecr_x,Ecr_y,Ecr_z
	
	case >="A"
		b1=b1-"A"
		on b1 gosub EcrA,EcrB,EcrC,EcrD,EcrE,EcrF,EcrG,EcrH,EcrI,EcrJ,EcrK,EcrL,EcrM,EcrN,EcrO,EcrP,EcrQ,EcrR,EcrS,EcrT,EcrU,EcrV,EcrW,EcrX,EcrY,EcrZ
	
	case "0"
	
	else
		gosub Ecr__
	endselect
	end
	
	

Ecr__:
	hi2cOut(DAT,oo,oo,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,oo,o_)
	return



EcrA:
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,_o,_o,__)
	hi2cOut(DAT,_o,_o,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,oo,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	return


EcrB:
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,oo,__)
	return


EcrC:
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,__)
	return



EcrD:
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,oo,__)
	return


EcrE:
	hi2cOut(DAT,oo,oo,o_)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,oo,oo,o_)
	return


EcrF:
	hi2cOut(DAT,oo,oo,o_)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	return


EcrG:
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,_o,o_)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,__)
	return


EcrH:
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,oo,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	return


EcrI:
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,_o,oo,__)
	return


EcrJ:
	hi2cOut(DAT,__,oo,o_)
	hi2cOut(DAT,__,_o,__)
	hi2cOut(DAT,__,_o,__)
	hi2cOut(DAT,__,_o,__)
	hi2cOut(DAT,__,_o,__)
	hi2cOut(DAT,__,_o,__)
	hi2cOut(DAT,o_,_o,__)
	hi2cOut(DAT,_o,o_,__)
	return


EcrK:
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,_o,__)
	hi2cOut(DAT,o_,o_,__)
	hi2cOut(DAT,oo,__,__)
	hi2cOut(DAT,o_,o_,__)
	hi2cOut(DAT,o_,_o,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	return

EcrL:
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,oo,oo,o_)
	return

EcrM:
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,_o,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	return

EcrN:
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,__,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,_o,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	return

EcrO:
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,__)
	return

EcrP:
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	return

EcrQ:
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,_o,o_)
	hi2cOut(DAT,_o,oo,o_)
	return

EcrR:
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,_o,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	return

EcrS:
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,__)
	return

EcrT:
	hi2cOut(DAT,oo,oo,o_)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	return

EcrU:
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,__)
	return

EcrV:

	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,_o,__)
	hi2cOut(DAT,_o,_o,__)
	hi2cOut(DAT,_o,_o,__)
	hi2cOut(DAT,__,o_,__)
	return

EcrW:
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,_o,_o,__)
	return

EcrX:
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,_o,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,_o,_o,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	return

EcrY:
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,_o,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	return

EcrZ:
	hi2cOut(DAT,oo,oo,o_)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,__,_o,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,_o,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,oo,oo,o_)
	return
 

BESQUEUT

Senior Member
Suite des caractères :
Code:
Ecr_a:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,_o,oo,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,o_)
	return


Ecr_b:
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,oo,__)
	return


Ecr_c:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,__)
	return



Ecr_d:
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,_o,oo,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,o_)
	return


Ecr_e:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,_o,oo,__)
	return


Ecr_f:
	hi2cOut(DAT,__,oo,__)
	hi2cOut(DAT,_o,__,o_)
	hi2cOut(DAT,_o,__,__)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,_o,__,__)
	hi2cOut(DAT,_o,__,__)
	hi2cOut(DAT,_o,__,__)
	hi2cOut(DAT,_o,__,__)
	return


Ecr_g:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,_o,oo,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,o_)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,_o,oo,__)
	return


Ecr_h:
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	return


Ecr_i:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	return


Ecr_j:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,o_,o_,__)
	hi2cOut(DAT,_o,__,__)
	return


Ecr_k:
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,_o,__)
	hi2cOut(DAT,oo,o_,__)
	hi2cOut(DAT,o_,_o,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	return

Ecr_l:
	hi2cOut(DAT,_o,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,_o,oo,__)
	return

Ecr_m:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	return

Ecr_n:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,_o,__,o_)
	hi2cOut(DAT,_o,__,o_)
	hi2cOut(DAT,_o,__,o_)
	hi2cOut(DAT,_o,__,o_)
	hi2cOut(DAT,_o,__,o_)
	return

Ecr_o:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,__)
	return

Ecr_p:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,oo,oo,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	return

Ecr_q:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,_o,oo,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,o_)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,__,__,o_)
	return

Ecr_r:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,o_,oo,__)
	hi2cOut(DAT,oo,__,o_)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,o_,__,__)
	return

Ecr_s:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,_o,oo,o_)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,_o,oo,__)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,oo,oo,__)
	return

Ecr_t:
	hi2cOut(DAT,_o,__,__)
	hi2cOut(DAT,_o,__,__)
	hi2cOut(DAT,oo,o_,__)
	hi2cOut(DAT,_o,__,__)
	hi2cOut(DAT,_o,__,__)
	hi2cOut(DAT,_o,__,__)
	hi2cOut(DAT,_o,__,o_)
	hi2cOut(DAT,__,oo,__)
	return

Ecr_u:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,__)
	return

Ecr_v:

	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,_o,__)
	hi2cOut(DAT,__,o_,__)
	return

Ecr_w:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,o_,o_,o_)
	hi2cOut(DAT,_o,_o,__)
	return

Ecr_x:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,_o,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,_o,_o,__)
	hi2cOut(DAT,o_,__,o_)
	return

Ecr_y:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,o_,__,o_)
	hi2cOut(DAT,_o,oo,o_)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,__,__,o_)
	hi2cOut(DAT,_o,oo,__)
	return

Ecr_z:
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,__,__,__)
	hi2cOut(DAT,oo,oo,o_)
	hi2cOut(DAT,__,_o,__)
	hi2cOut(DAT,__,o_,__)
	hi2cOut(DAT,_o,__,__)
	hi2cOut(DAT,o_,__,__)
	hi2cOut(DAT,oo,oo,o_)
	return
 

BESQUEUT

Senior Member
Et une version compacte, plus rapide et moins encombrante :
Code:
'PROGRAM: OLED006_Compact.BAS

' 2885 bytes  (au lieu de 3764 bytes avant compactage)

' Police 8x5 donc plutôt confortable
' mais gourmande en place sur l'écran comme en mémoire programme

' On peut évidement supprimer les caractères dont on n'a pas besoin pour gagner de la place
' On peut aussi utiliser un slot différent pour écrire les textes statiques  

#picaxe 40X2


symbol OLED_Address=120
symbol OCM=0x80			' OLED_CommandMode
symbol ODM=0x40			' OLED_DataMode

symbol __=0x00
symbol o_=0x0F
symbol oo=0xFF
symbol _o=0xF0

Symbol Lettre=b3
Symbol Nombre=b4

symbol XX=b10
symbol YY=b11



setfreq m16

pause 1000
gosub OLED_INIT


do
	'Grand carré sur les bords
	
	for b1=1 to 6
		hi2cout (ODM,oo,oo,oo,oo,oo,oo,oo,oo)
	next b1
	
	for b2=2 to 95
		hi2cout (ODM,o_,__,__,__,__,__,__,__)
		
		for b1=2 to 5
		hi2cout (ODM,__,__,__,__,__,__,__,__)
		next b1
		
		hi2cout (ODM,__,__,__,__,__,__,__,_o)
	next b2
	
	for b1=1 to 6
		hi2cout (ODM,oo,oo,oo,oo,oo,oo,oo,oo)
	next b1
	
	
	xx=10
	yy=8
	for Nombre=0 to 255
		gosub EcrireN
	next Nombre
	
	gosub Rectangle
	
	yy=20
	xx=10
	for Lettre="0" to "9"
		gosub Ecrire
	next Lettre
	
	xx=10
	yy=yy+12	
	for Lettre="A" to "K"
		gosub Ecrire
	next Lettre
	
	xx=10
	yy=yy+12	
	for Lettre="L" to "V"
		gosub Ecrire
	next Lettre
	
	xx=10
	yy=yy+12	
	for Lettre="W" to "Z"
		gosub Ecrire
	next Lettre
	
	lettre=" "
	gosub Ecrire
	for Lettre="a" to "f"
		gosub Ecrire
	next Lettre
	
	xx=10
	yy=yy+12
	for Lettre="g" to "p"
		gosub Ecrire
	next Lettre
	
	xx=10
	yy=yy+12
	for Lettre="q" to "z"
		gosub Ecrire
	next Lettre

	
	pause 20000
	gosub ClearDisplay
loop

end



'-------------------------------------------------------------------------
OLED_INIT:

hI2Csetup i2cmaster,OLED_Address,i2cfast,I2cbyte

hi2cout (OCM,0xFD,OCM,0x12) 	' Accept commands

hi2cout (OCM,0xAE) 		' Display Off
hi2cout (OCM,0xA8,OCM,0x5F) 	' set multiplex ratio 96
 
hi2cout (OCM,0xA1,OCM,0) ' 	' set display start line
hi2cout (OCM,0xA2,OCm,0x60)	' set display offset
hi2cout (OCM,0xA0,OCM,0x40)	' set remap
hi2cout (OCM,0xAB,OCM,0x01)	' set VDD internal
hi2cout (OCM,0x81,OCM,0x53)	' set contrast
hi2cout (OCM,0xB1,OCM,0x51)	' set Phase Length
hi2cout (OCM,0xB3,OCM,0x01,OCM,0xB9)	' set Display Clock Divide Ratio
hi2cout (OCM,0xBC,OCM,0x08)	' Set pre-charge voltage
hi2cout (OCM,0xBE,OCM,0x07)	' set VCOMH
hi2cout (OCM,0xB6,OCM,0x01)	' Set second pre-charge period
hi2cout (OCM,0xD5,OCM,0x62)	' enable second precharge and internal vs1
hi2cout (OCM,0xA4)		' set normal display mode
hi2cout (OCM,0x2E)		' Deactivate scroll
hi2cout (OCM,0xAF)		' Switch on Display
pause 100

RAZ:
hI2Csetup i2cmaster,OLED_Address,i2cfast,I2cbyte
hi2cout (OCM,0x75,OCM,0,OCM,95)	' Set row Address
hi2cout (OCM,0x15,OCM,8,OCM,55)	' Set column Address

return

ClearDisplay:
  gosub RAZ
  for b2=1 to 48
	for b1=1 to 6
		hi2cout (ODM,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
	next b1
  next b2
return


Ecrire:
	gosub SetXY
Ecr:
	select case Lettre
	case >="a"
		b1=Lettre-"a"
		on b1 gosub Ecr_a,Ecr_b,Ecr_c,Ecr_d,Ecr_e,Ecr_f,Ecr_g,Ecr_h,Ecr_i,Ecr_j,Ecr_k,Ecr_l,Ecr_m,Ecr_n,Ecr_o,Ecr_p,Ecr_q,Ecr_r,Ecr_s,Ecr_t,Ecr_u,Ecr_v,Ecr_w,Ecr_x,Ecr_y,Ecr_z
	
	case >="A"
		b1=Lettre-"A"
		on b1 gosub EcrA,EcrB,EcrC,EcrD,EcrE,EcrF,EcrG,EcrH,EcrI,EcrJ,EcrK,EcrL,EcrM,EcrN,EcrO,EcrP,EcrQ,EcrR,EcrS,EcrT,EcrU,EcrV,EcrW,EcrX,EcrY,EcrZ
	
	case >="0"
		gosub EcrCh
		
	case " "
		gosub EcrEspace
	
	else
		gosub Ecr__
	endselect
	return


EcrCh: ' Ecrire un chiffre
	b1=Lettre-"0"
	on b1 gosub Ecr0,Ecr1,Ecr2,Ecr3,Ecr4,Ecr5,Ecr6,Ecr7,Ecr8,Ecr9
	return


SetXY:
	b1=xx+2
	hi2cout (OCM,0x15,OCM,xx,OCM,b1)	' Set column Address(8/55)
	b1=yy+7
	hi2cout (OCM,0x75,OCM,yy,OCM,b1)	' Set row Address (0/95)
	xx=xx+4
return

	
EcrireG:				' Ecrire un zéro en gris...
	gosub setxy
	hi2cout (ODM,48,55,0)
	for b1=2 to 7
		hi2cout (ODM,7,0,7)
	next b1
	hi2cout (ODM,48,55,0)
return


EcrEspace:return


Ecr0:hi2cout (ODM,_o,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,_o,oo,__)
return

Ecr1:hi2cout (ODM,__,_o,__,__,oo,__,_o,_o,__,__,_o,__,__,_o,__,__,_o,__,__,_o,__,_o,oo,o_)
return

Ecr2:hi2cout (ODM,_o,oo,__,o_,__,o_,o_,__,o_,__,_o,__,__,o_,__,_o,__,__,o_,__,__,oo,oo,o_)
return

Ecr3:hi2cout (ODM,_o,oo,__,o_,__,o_,o_,__,o_,__,oo,__,__,oo,__,o_,__,o_,o_,__,o_,_o,oo,__)
return

Ecr4:hi2cout (ODM,__,__,o_,__,_o,o_,__,o_,o_,_o,__,o_,o_,__,o_,oo,oo,o_,__,__,o_,__,__,o_)
return

Ecr5:hi2cout (ODM,oo,oo,o_,o_,__,__,o_,__,__,oo,oo,__,__,__,o_,__,__,o_,o_,__,o_,_o,oo,__)
return

Ecr6:hi2cout (ODM,_o,oo,o_,o_,__,__,o_,__,__,oo,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,_o,oo,__)
return

Ecr7:hi2cout (ODM,oo,oo,o_,__,__,o_,__,_o,__,__,o_,__,_o,__,__,_o,__,__,_o,__,__,_o,__,__)
return

Ecr8:hi2cout (ODM,_o,oo,__,o_,__,o_,o_,__,o_,_o,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,_o,oo,__)
return

Ecr9:hi2cout (ODM,_o,oo,__,o_,__,o_,o_,__,o_,_o,oo,o_,__,__,o_,__,__,o_,__,__,o_,_o,oo,__)
return



Ecr__:
	hi2cOut(ODM,oo,oo,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,oo,oo,o_)
	return

'-------------------------------------------------

EcrA:hi2cOut(ODM,__,o_,__,_o,_o,__,_o,_o,__,o_,__,o_,oo,oo,o_,o_,__,o_,o_,__,o_,o_,__,o_)
return

EcrB:hi2cOut(ODM,oo,oo,__,o_,__,o_,o_,__,o_,oo,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,oo,oo,__)
return
	
EcrC:hi2cOut(ODM,_o,oo,__,o_,__,o_,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,o_,_o,oo,__)
return

EcrD:hi2cOut(ODM,oo,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,oo,oo,__)
return

EcrE:hi2cOut(ODM,oo,oo,o_,o_,__,__,o_,__,__,oo,oo,__,o_,__,__,o_,__,__,o_,__,__,oo,oo,o_)
return

EcrF:hi2cOut(ODM,oo,oo,o_,o_,__,__,o_,__,__,oo,oo,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__)
return

EcrG:hi2cOut(ODM,_o,oo,__,o_,__,o_,o_,__,__,o_,__,__,o_,_o,o_,o_,__,__,o_,__,o_,_o,oo,__)
return

EcrH:hi2cOut(ODM,o_,__,o_,o_,__,o_,o_,__,o_,oo,oo,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_)
return

EcrI:hi2cOut(ODM,_o,oo,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,_o,oo,__)
return

EcrJ:hi2cOut(ODM,__,oo,o_,__,_o,__,__,_o,__,__,_o,__,__,_o,__,__,_o,__,o_,_o,__,_o,o_,__)
return

EcrK:hi2cOut(ODM,o_,__,o_,o_,_o,__,o_,o_,__,oo,__,__,o_,o_,__,o_,_o,__,o_,__,o_,o_,__,o_)
return

EcrL:hi2cOut(ODM,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,oo,oo,o_)
return

EcrM:hi2cOut(ODM,o_,__,o_,o_,__,o_,oo,_o,o_,o_,o_,o_,o_,o_,o_,o_,__,o_,o_,__,o_,o_,__,o_)
return

EcrN:hi2cOut(ODM,o_,__,o_,o_,__,o_,oo,__,o_,o_,o_,o_,o_,_o,o_,o_,__,o_,o_,__,o_,o_,__,o_)
return

EcrO:hi2cOut(ODM,_o,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,_o,oo,__)
return

EcrP:hi2cOut(ODM,oo,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,oo,oo,__,o_,__,__,o_,__,__,o_,__,__)
return

EcrQ:hi2cOut(ODM,_o,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,o_,o_,o_,_o,o_,_o,oo,o_)
return

EcrR:hi2cOut(ODM,oo,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,oo,oo,__,o_,_o,__,o_,__,o_,o_,__,o_)
return

EcrS:hi2cOut(ODM,_o,oo,__,o_,__,o_,o_,__,__,_o,oo,__,__,__,o_,__,__,o_,o_,__,o_,_o,oo,__)
return

EcrT:hi2cOut(ODM,oo,oo,o_,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__)
return

EcrU:hi2cOut(ODM,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,_o,oo,__)
return

EcrV:hi2cOut(ODM,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,_o,_o,__,_o,_o,__,_o,_o,__,__,o_,__)
return

EcrW:hi2cOut(ODM,o_,__,o_,o_,__,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,_o,_o,__)
return

EcrX:hi2cOut(ODM,o_,__,o_,o_,__,o_,_o,_o,__,__,o_,__,__,o_,__,_o,_o,__,o_,__,o_,o_,__,o_)
return

EcrY:hi2cOut(ODM,o_,__,o_,o_,__,o_,_o,_o,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__)
return

EcrZ:hi2cOut(ODM,oo,oo,o_,__,__,o_,__,_o,__,__,o_,__,_o,__,__,o_,__,__,o_,__,__,oo,oo,o_)
return



'------------------------------------------------

EcrireN:
	BinToASCII Nombre,b5,b6,b7
	b1=yy+7
	hi2cout (OCM,0x75,OCM,yy,OCM,b1)	' Set row Address (0/95)
	
	if b5>48 then
		b1=xx
		b2=xx+2
		hi2cout (OCM,0x15,OCM,b1,OCM,b2)	' Set column Address(8/55)
		Lettre=b5 : gosub EcrCh
	endif
	
	
	if b5>48 or b6>48 then
		b1=xx+4
		b2=xx+6
		hi2cout (OCM,0x15,OCM,b1,OCM,b2)	' Set column Address(8/55)
		Lettre=b6 : gosub EcrCh
	endif
	
	b1=xx+8
	b2=xx+10
	hi2cout (OCM,0x15,OCM,b1,OCM,b2)	' Set column Address(8/55)
	Lettre=b7 : gosub EcrCh
return


Rectangle:
	b1=xx-1
	b2=xx+11
	hi2cout (OCM,0x15,OCM,b1,OCM,b2)	' Set column Address(8/55)
	
	b1=yy-2
	hi2cout (OCM,0x75,OCM,b1,OCM,b1)	' Set row Address (0/95)
	hi2cout (ODM,51,51,51,51,51,51,51,51,51,51,51,51,51)
	
	b1=yy+9
	hi2cout (OCM,0x75,OCM,b1,OCM,b1)	' Set row Address (0/95)
	hi2cout (ODM,51,51,51,51,51,51,51,51,51,51,51,51,51)
	

	b1=xx-1
	hi2cout (OCM,0x15,OCM,b1,OCM,b1)	' Set column Address(8/55)
	
	b1=yy-1
	b2=yy+8
	hi2cout (OCM,0x75,OCM,b1,OCM,b2)	' Set row Address (0/95)
	
	b1=xx-1
	hi2cout (OCM,0x15,OCM,b1,OCM,b1)	' Set column Address(8/55)
	hi2cout (ODM,3,3,3,3,3,3,3,3,3,3)
	
	b1=xx+11
	hi2cout (OCM,0x15,OCM,b1,OCM,b1)	' Set column Address(8/55)
	hi2cout (ODM,48,48,48,48,48,48,48,48,48,48)
	
return
 

BESQUEUT

Senior Member
Fin de la version compacte :
Code:
Ecr_a:hi2cOut(ODM,__,__,__,__,__,__,_o,oo,__,__,__,o_,_o,oo,o_,o_,__,o_,o_,__,o_,_o,oo,o_)
return

Ecr_b:hi2cOut(ODM,o_,__,__,o_,__,__,oo,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,oo,oo,__)
return

Ecr_c:hi2cOut(ODM,__,__,__,__,__,__,_o,oo,__,o_,__,o_,o_,__,__,o_,__,__,o_,__,o_,_o,oo,__)
return

Ecr_d:hi2cOut(ODM,__,__,o_,__,__,o_,__,__,o_,_o,oo,o_,o_,__,o_,o_,__,o_,o_,__,o_,_o,oo,o_)
return

Ecr_e:hi2cOut(ODM,__,__,__,__,__,__,_o,oo,__,o_,__,o_,o_,__,o_,oo,oo,__,o_,__,__,_o,oo,__)
return

Ecr_f:hi2cOut(ODM,__,oo,__,_o,__,o_,_o,__,__,oo,oo,__,_o,__,__,_o,__,__,_o,__,__,_o,__,__)
return

Ecr_g:hi2cOut(ODM,__,__,__,__,__,__,_o,oo,o_,o_,__,o_,o_,__,o_,_o,oo,o_,__,__,o_,_o,oo,__)
return

Ecr_h:hi2cOut(ODM,o_,__,__,o_,__,__,oo,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_)
return

Ecr_i:hi2cOut(ODM,__,o_,__,__,__,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__)
return

Ecr_j:hi2cOut(ODM,__,_o,__,__,__,__,__,_o,__,__,_o,__,__,_o,__,__,_o,__,o_,_o,__,_o,o_,__)
return

Ecr_k:hi2cOut(ODM,o_,__,__,o_,__,__,o_,__,o_,o_,_o,__,oo,o_,__,o_,_o,__,o_,__,o_,o_,__,o_)
return

Ecr_l:hi2cOut(ODM,_o,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,__,o_,__,_o,oo,__)
return

Ecr_m:hi2cOut(ODM,__,__,__,__,__,__,oo,oo,__,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_)
return

Ecr_n:hi2cOut(ODM,__,__,__,__,__,__,_o,oo,__,_o,__,o_,_o,__,o_,_o,__,o_,_o,__,o_,_o,__,o_)
return

Ecr_o:hi2cOut(ODM,__,__,__,__,__,__,_o,oo,__,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,_o,oo,__)
return

Ecr_p:hi2cOut(ODM,__,__,__,__,__,__,oo,oo,__,o_,__,o_,o_,__,o_,oo,oo,__,o_,__,__,o_,__,__)
return

Ecr_q:hi2cOut(ODM,__,__,__,__,__,__,_o,oo,o_,o_,__,o_,o_,__,o_,_o,oo,o_,__,__,o_,__,__,o_)
return

Ecr_r:hi2cOut(ODM,__,__,__,__,__,__,o_,oo,__,oo,__,o_,o_,__,__,o_,__,__,o_,__,__,o_,__,__)
return
	
Ecr_s:hi2cOut(ODM,__,__,__,__,__,__,_o,oo,o_,o_,__,__,_o,oo,__,__,__,o_,__,__,o_,oo,oo,__)
return

Ecr_t:hi2cOut(ODM,_o,__,__,_o,__,__,oo,o_,__,_o,__,__,_o,__,__,_o,__,__,_o,__,o_,__,oo,__)
return

Ecr_u:hi2cOut(ODM,__,__,__,__,__,__,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,_o,oo,__)
return

Ecr_v:hi2cOut(ODM,__,__,__,__,__,__,o_,__,o_,o_,__,o_,o_,__,o_,o_,__,o_,_o,_o,__,__,o_,__)
return

Ecr_w:hi2cOut(ODM,__,__,__,__,__,__,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,o_,_o,_o,__)
return

Ecr_x:hi2cOut(ODM,__,__,__,__,__,__,o_,__,o_,_o,_o,__,__,o_,__,__,o_,__,_o,_o,__,o_,__,o_)
return

Ecr_y:hi2cOut(ODM,__,__,__,__,__,__,o_,__,o_,o_,__,o_,_o,oo,o_,__,__,o_,__,__,o_,_o,oo,__)
return

Ecr_z:hi2cOut(ODM,__,__,__,__,__,__,oo,oo,o_,__,_o,__,__,o_,__,_o,__,__,o_,__,__,oo,oo,o_)
return
 
Top