Electromag1 Circuits électroniques et Picaxes

Petit site pour ceux qui bricolent en électronique en général et sur les PICAXES en particulier.
Les PICAXES sont des microprocesseurs (PIC de Microship) programmables en BASIC. Pleins de qualités, pas chers, ultra faciles à programmer.
Tout (ou presque) est sur le site du distributeur Gotronic (voir les liens).
Les pages  seront ajoutées ou modifiées petit à petit.
Dans le but d'améliorer ce blog, communiquez moi vos remarques et les erreurs que vous pouvez constater.
Pour me contacter: Envoyez un mail à l'adresse : mag1mic@free.fr .  Tout message reçoit une réponse
Pour retourner au menu, Cliquer sur "LISTE DES PAGES", ici ou en haut de la colonne de gauche
Pour laisser un message, allez dans le "LIVRE D'OR"
Bonne visite
 
 
Le code:
'Mesure de température et humidité
;MM 04/12/25  Anubis1985 22-11-2025
;SH1106 et GY-21
#picaxe 08M2
setfreq M32
symbol X               = b1
Symbol NumASCII        = b2
Symbol LongeurNumASCII = b3
Symbol Contraste       = b4
Symbol OffsetY         = b5
Symbol ColumHighBits   = b7
Symbol ColumLowBits    = b8
Symbol LongeurRF       = b9
Symbol Page            = b10
symbol sign                  = b11   ;signe tempé
symbol mil                = b12 
symbol cen                = b13
symbol unit                = b14
symbol decim            = b15
symbol centi            = b16
;w13         lecture GY-21
symbol tempe            =w12        ;température
symbol HR                =w11        ;humidité relative
'Commandes du controleur SH1106
Symbol SETCONTRAST =0x81
Symbol DISPLAYALLON_RESUME =0xA4
Symbol DISPLAYALLON =0xA5
Symbol DISPLAYOFF =0xAE
Symbol DISPLAYON =0xAF
Symbol SETDISPLAYOFFSET =0xD3
Symbol SETLOWCOLUMN =0x00
Symbol SetColumHighBits = 0x10
Symbol SETSTARTLINE =0x40
Symbol CHARGEPUMP =0x8D
Symbol pageEndAddr = 7
    ColumLowBits  = 0
    ColumHighBits = 0
    pause 800   '50ms a 32mhz
    hi2csetup i2cmaster, $78,i2cfast_32, I2cbyte
    gosub ClearDisplay    
    contraste=255 : gosub ContrasteMode
    x = 20: gosub SetPosition        ;2 = position colonne
    for LongeurNumASCII=0 to 11
        lookup LongeurNumASCII,(2,"T =      °C"), NumASCII        ;2= n° de ligne
        gosub Numero
    next
    x = 20: gosub SetPosition
    for LongeurNumASCII=0 to 10
        lookup LongeurNumASCII,(4,"HR=      %"), NumASCII
        gosub Numero
    next    
    do    
        pause 2000
        gosub lecGY21
        hi2csetup i2cmaster, $78,i2cfast_32, I2cbyte        
        x = 40: gosub SetPosition        ; 40 = position colonne    
        bintoascii tempe,mil,cen,unit,decim,centi        
        for LongeurNumASCII=0 to 5
            lookup LongeurNumASCII,(2,sign,cen,unit,",",decim), NumASCII
            if bit0=1 and LongeurNumASCII>0  then 
                NumASCII="-"
            endif              
            gosub Numero
        next        
        bintoascii HR,mil,cen,unit,decim,centi
            x = 40: gosub SetPosition    
        for LongeurNumASCII=0 to 5
            lookup LongeurNumASCII,(4," ",cen,unit,",",decim), NumASCII
                if bit0=1 and LongeurNumASCII>0 then 
                    NumASCII="-"
                endif    
            gosub Numero
        next
    loop

lecGY21:
    bit0=0    
    hi2csetup i2cmaster,$80,i2cfast_32,i2cbyte    
    hi2cout ($E3)            ;température
    hi2cin (b27,b26)        ;(b27,b26) c'est w13            
    sign=" "                ;pas de signe, à priori
    if w13>65500 then: bit0=1:endif        
    tempe=w13**17575-4685   ;valeur mémorisée dans tempe
    if w13<=17473  then     ;on est dans les valeurs négatives
       tempe=-tempe         ;idem complément à 2
       sign="-"                    
    endif 
    serout C.4,T9600_32,(254,1,254,128,#w13)                 
    hi2cout ($E5)            ;humidité    
    hi2cin (b27,b26)            
    HR=w13**12500-600        ;valeur mémorisée dans H
    serout C.4,T9600_32,(254,192,#w13,"  ",#bit0)    
    return    

ClearDisplay:
    gosub DISPLAY_OFF
    for NumASCII = 0 to 7 
        gosub Numero
        gosub ClearPage
    next
    gosub DISPLAY_ON 
    return

Numero:
      select case NumASCII
    case 0 to 7 : Page = NumASCII + 176 : hi2cout (0,Page)'Page0 a Page7
    case 32  : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ,0x00) ;Espace
    ;case 33  : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x5F, 0x00, 0x00)             ;!
    ;case 34  : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 ,0x00) ;"
    ;case 35  : hi2cout (SETSTARTLINE, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14 ,0x00) ;#
    ;case 36  : hi2cout (SETSTARTLINE, 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 ,0x00) ;$
    case 37  : hi2cout (SETSTARTLINE, 0x00, 0x23, 0x13, 0x08, 0x64, 0x62 ,0x00) ;%
    ;case 38  : hi2cout (SETSTARTLINE, 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 ,0x00) ;&
    ;case 39  : hi2cout (SETSTARTLINE, 0x00, 0X05, 0X03, 0X00, 0X00)             ;'
    ;case 40  : hi2cout (SETSTARTLINE, 0x00, 0X00, 0X1c, 0X22, 0X41, 0X00 ,0x00) ;(
    ;case 41  : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 ,0x00) ;)
    ;case 42  : hi2cout (SETSTARTLINE, 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 ,0x00) ;*
    ;case 43  : hi2cout (SETSTARTLINE, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 ,0x00) ;+
    case 44  : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x50, 0x30, 0x00 ,0x00)       ;,
    case 45  : hi2cout (SETSTARTLINE, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 ,0x00) ;-
    ;case 46  : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00)       ;.
    ;case 47  : hi2cout (SETSTARTLINE, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 ,0x00) ;/
    case 48  : hi2cout (SETSTARTLINE, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E ,0x00) ;0
    case 49  : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 ,0x00) ;1
    case 50  : hi2cout (SETSTARTLINE, 0x00, 0x72, 0x49, 0x49, 0x49, 0x46 ,0x00) ;2
    case 51  : hi2cout (SETSTARTLINE, 0x00, 0x21, 0x41, 0x49, 0x4D, 0x33 ,0x00) ;3
    case 52  : hi2cout (SETSTARTLINE, 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 ,0x00) ;4
    case 53  : hi2cout (SETSTARTLINE, 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 ,0x00) ;5
    case 54  : hi2cout (SETSTARTLINE, 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x31 ,0x00) ;6
    case 55  : hi2cout (SETSTARTLINE, 0x00, 0x41, 0x21, 0x11, 0x09, 0x07 ,0x00) ;7
    case 56  : hi2cout (SETSTARTLINE, 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 ,0x00) ;8
    case 57  : hi2cout (SETSTARTLINE, 0x00, 0x46, 0x49, 0x49, 0x29, 0x1E ,0x00) ;9
    ;case 58  : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x36, 0x36, 0x00, 0x00)       ;:
    ;case 59  : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x56, 0x36, 0x00, 0x00)       ;;
    ;case 60  : hi2cout (SETSTARTLINE, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00)       ;>
    case 61  : hi2cout (SETSTARTLINE, 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 ,0x00) ;=
    ;case 62  : hi2cout (SETSTARTLINE, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00)       ;<
    ;case 63  : hi2cout (SETSTARTLINE, 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 ,0x00) ;?
    ;case 64  : hi2cout (SETSTARTLINE, 0x00, 0x32, 0x49, 0x79, 0x41, 0x3E ,0x00) ;@
    ;case 65  : hi2cout (SETSTARTLINE, 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C ,0x00) ;A
    ;case 66  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 ,0x00) ;B
    case 67  : hi2cout (SETSTARTLINE, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 ,0x00) ;C
    ;case 68  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x3E ,0x00) ;D
    ;case 69  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 ,0x00) ;E
    ;case 70  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 ,0x00) ;F
    ;case 71  : hi2cout (SETSTARTLINE, 0x00, 0x3E, 0x41, 0x41, 0x51, 0x73 ,0x00) ;G
    case 72  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F ,0x00) ;H
    ;case 73  : hi2cout (SETSTARTLINE, 0x00, 0x41, 0x7F, 0x41, 0x00)             ;I
    ;case 74  : hi2cout (SETSTARTLINE, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 ,0x00) ;J
    ;case 75  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 ,0x00) ;K
    ;case 76  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 ,0x00) ;L
    ;case 77  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x02, 0x1C, 0x02, 0x7F ,0x00) ;M
    ;case 78  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F ,0x00) ;N
    ;case 79  : hi2cout (SETSTARTLINE, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E ,0x00) ;O
    ;case 80  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 ,0x00) ;P
    ;case 81  : hi2cout (SETSTARTLINE, 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E ,0x00) ;Q
    case 82  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 ,0x00) ;R
    ;case 83  : hi2cout (SETSTARTLINE, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32 ,0x00) ;S
    case 84  : hi2cout (SETSTARTLINE, 0x00, 0x03, 0x01, 0x7F, 0x01, 0x03 ,0x00) ;T
    ;case 85  : hi2cout (SETSTARTLINE, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F ,0x00) ;U
    ;case 86  : hi2cout (SETSTARTLINE, 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F ,0x00) ;V
    ;case 87  : hi2cout (SETSTARTLINE, 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F ,0x00) ;W
    ;case 88  : hi2cout (SETSTARTLINE, 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 ,0x00) ;X
    ;case 89  : hi2cout (SETSTARTLINE, 0x00, 0x03, 0x04, 0x78, 0x04, 0x03 ,0x00) ;Y
    ;case 90  : hi2cout (SETSTARTLINE, 0x00, 0x61, 0x59, 0x49, 0x4D, 0x43 ,0x00) ;Z
    ;case 91  : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 ,0x00) ;[
    ;case 92  : hi2cout (SETSTARTLINE, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00) ;
    ;case 93  : hi2cout (SETSTARTLINE, 0x00, 0X00, 0X41, 0X41, 0X7F, 0X00 ,0x00) ;]
    ;case 94  : hi2cout (SETSTARTLINE, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 ,0x00) ;^
    ;case 95  : hi2cout (SETSTARTLINE, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80 ,0x00) ;_
    ;case 97  : hi2cout (SETSTARTLINE, 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 ,0x00) ;a
    ;case 98  : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 ,0x00) ;b
    ;case 99  : hi2cout (SETSTARTLINE, 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 ,0x00) ;c
    ;case 100 : hi2cout (SETSTARTLINE, 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F ,0x00) ;d
    ;case 101 : hi2cout (SETSTARTLINE, 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 ,0x00) ;e
    ;case 102 : hi2cout (SETSTARTLINE, 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 ,0x00) ;f
    ;case 103 : hi2cout (SETSTARTLINE, 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C ,0x00) ;g
    ;case 104 : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 ,0x00) ;h
    ;case 105 : hi2cout (SETSTARTLINE, 0x00 ,0x48, 0x7A, 0x40, 0x00)             ;i
    ;case 106 : hi2cout (SETSTARTLINE, 0x00, 0x40, 0x80, 0x88, 0x7A, 0x00)       ;j
    ;case 107 : hi2cout (SETSTARTLINE, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00)       ;k
    ;case 108 : hi2cout (SETSTARTLINE, 0x00, 0x41, 0x7F, 0x40, 0x00)             ;l
    ;case 109 : hi2cout (SETSTARTLINE, 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 ,0x00) ;m
    ;case 110 : hi2cout (SETSTARTLINE, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 ,0x00) ;n
    ;case 111 : hi2cout (SETSTARTLINE, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 ,0x00) ;o
    ;case 112 : hi2cout (SETSTARTLINE, 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 ,0x00) ;p
    ;case 113 : hi2cout (SETSTARTLINE, 0x00, 0x18, 0x24, 0x24, 0x28, 0xFC ,0x00) ;q
    ;case 114 : hi2cout (SETSTARTLINE, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 ,0x00) ;r
    ;case 115 : hi2cout (SETSTARTLINE, 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 ,0x00) ;s
    ;case 116 : hi2cout (SETSTARTLINE, 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 ,0x00) ;t
    ;case 117 : hi2cout (SETSTARTLINE, 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C ,0x00) ;u
    ;case 118 : hi2cout (SETSTARTLINE, 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C ,0x00) ;v
    ;case 119 : hi2cout (SETSTARTLINE, 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C ,0x00) ;w
    ;case 120 : hi2cout (SETSTARTLINE, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 ,0x00) ;x
    ;case 121 : hi2cout (SETSTARTLINE, 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C ,0x00) ;y
    ;case 122 : hi2cout (SETSTARTLINE, 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 ,0x00) ;z
    ;case 123 : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00) ;{
    ;case 125 : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x41, 0x36, 0x08, 0x00, 0x00) ;}
    ;case 126 : hi2cout (SETSTARTLINE, 0x00, 0x08, 0x04, 0x08, 0x08, 0x04, 0x00) ;~
    ;case 166 : hi2cout (SETSTARTLINE, 0x00, 0x00, 0x63, 0x00, 0x00)             ;¦
    case 176 : hi2cout (SETSTARTLINE, 0x00, 0x02, 0x05, 0x02, 0x00, 0x00)       ;°
   ;case 196 : hi2cout (SETSTARTLINE, 0x00, 0x7D, 0x12, 0x11, 0x12, 0x7D, 0x00) ;Ä
    ;case 214 : hi2cout (SETSTARTLINE, 0x00, 0x3D, 0x42, 0x42, 0x42, 0x3D, 0x00) ;Ö
    ;case 220 : hi2cout (SETSTARTLINE, 0x00, 0x3D, 0x40, 0x40, 0x40, 0x3D, 0x00) ;Ü
    ;case 223 : hi2cout (SETSTARTLINE, 0x00, 0x7E, 0x01, 0x49, 0x55, 0x73, 0x00) ;ß
    ;case 228 : hi2cout (SETSTARTLINE, 0x00, 0x21, 0x54, 0x54, 0x54, 0x79, 0x00) ;ä
    ;case 246 : hi2cout (SETSTARTLINE, 0x00, 0x39, 0x44, 0x44, 0x44, 0x39, 0x00) ;ö
    ;case 252 : hi2cout (SETSTARTLINE, 0x00, 0x3D, 0x40, 0x40, 0x20, 0x7D, 0x00) ;ü0x00) ;ü
    endselect 
    return
      
ClearPage:  
    for  LongeurRF = 0 to 131
         hi2cout (SETSTARTLINE,0x00)
     next
    LongeurRF = 0
    return

SetPosition:
    if X > 131 then : X = 131 endif
    select case X
        case 0   to 15  : ColumLowBits = X       : ColumHighBits = 0
        case 16  to 31  : ColumLowBits = X - 16  : ColumHighBits = 1
        case 32  to 47  : ColumLowBits = X - 32  : ColumHighBits = 2
        case 48  to 63  : ColumLowBits = X - 48  : ColumHighBits = 3
        case 64  to 79  : ColumLowBits = X - 64  : ColumHighBits = 4
        case 80  to 95  : ColumLowBits = X - 80  : ColumHighBits = 5
        case 96  to 111 : ColumLowBits = X - 96  : ColumHighBits = 6
        case 112 to 127 : ColumLowBits = X - 112 : ColumHighBits = 7
        case 128 to 131 : ColumLowBits = X - 128 : ColumHighBits = 8
    endselect 
    ColumHighBits = SetColumHighBits + ColumHighBits
    hi2cout (0, ColumHighBits)
    hi2cout (0, ColumLowBits)
    return

DISPLAY_ON:      hi2cout (0, CHARGEPUMP)       : hi2cout (0, 0x14)       : hi2cout (0, DISPLAYON) : return
DISPLAY_OFF:     hi2cout (0, DISPLAYOFF)       : hi2cout (0, CHARGEPUMP) : hi2cout (0, 0x10)      : return
ContrasteMode:   hi2cout (0, SETCONTRAST)      : hi2cout (0, Contraste)  : return



Créer un site
Créer un site