IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Ecran TFT 1.8" de chez Joy-it


Sujet :

Raspberry Pi

  1. #1
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 566
    Points : 16 615
    Points
    16 615
    Par défaut Ecran TFT 1.8" de chez Joy-it
    Salut à tous.

    Je vais reprendre les tests sur mon "TFT 1.8" display" de chez Joy-it.
    --> https://www.gotronic.fr/art-ecran-1-...t1-8-26567.htm

    Attention, ce n'est pas le même TFT 1.8" que celui proposé par AdaFruit :



    Les noms des pins ne sont pas exactement pareil.

    J'ai suivi le didacticiel proposé par Gotronic.
    Je fais le test sous la raspberry Pi 2B, dans la version jessie. Pourquoi ?
    Parce que le driver ST7735 est encore présent dans cette version alors que dans buster, il a totalement disparu.

    En ce point de mes tests, je peux dire que mon TFT 1.8" de chez Joy-it fonctionne correctement.

    A titre indicatif, je vous communique le branchement que j'ai fait (c'est le même que celui du PDF de chez Gotronic) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    +==========+===================+
    |  Screen  | Raspberry Pi zero |
    | TFT 1.8" |  GPIO  |    PIN   |
    +==========+========+==========+
    |    Vcc   |   3V3  |    01    |
    |    GND   |   GND  |    06    |
    |    SCL   |  SCLK  |    23    |
    |    SDA   |  MOSI  |    19    |
    |   RS/DC  |   24   |    18    |
    |    RES   |   25   |    22    |
    |    CS    |   CE0  |    24    |
    +----------+--------+----------+
    |   MISO   |        |          |
    |   SCLK   |        |          |
    |   MOSI   |        |          |
    |    CS    |        |          |
    +==========+========+==========+
    La partie basse de ce tableau concerne la "SC CARD".

    Dans ce contexte, celui de jessie et du pilote ST7735, le branchement est correcte.
    Je ne comprends pas, la signification des pins du TFT.
    J'ai deviné que "res" est l'abréviation de "reset".
    Mais que signifie "RS/DC" ?
    Coté AdaFruit, le "RS/DC" devient D/C".

    A titre indicatif, je donne les branchements dans le mode SPI.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    +-----------------------------------+------+-----+
    |          Nom de la broche         | GPIO | PIN |
    +-----------------------------------+------+-----+
    | MOSI (Master Output, Slave Input) |  10  |  19 |
    | MISO (Master Input, Slave Output) |  09  |  21 |
    | SCLK (Serial Clock)               |  11  |  23 |
    +-----------------------------------+------+-----+
    | CE0_N (chip enable #0)            |  08  |  24 |
    | CE0_1 (chip enable #1)            |  07  |  26 |
    +-----------------------------------+------+-----+
    Je passe maintenant sous buster (disque dur), en passant à la raspberry pi 3B+.
    Pourquoi la Raspberry Pi 3B+ et non la RPi 4B/8GB ?
    J'utilise un ventilateur argon sur le Rpi 4B, qui pourrait perturber le test.

    Et là, je n'arrive pas à utiliser mon TFT. L'écran reste blanc.
    J'ai utilisé ce script python pour faire le test :
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    #!/usr/bin/python
     
    import RPi.GPIO as GPIO
    import time
     
    #		+================================+
    #		|  TFT to Raspberry connections  |
    #		+----------------+---------------+
    #		|    TFT 1.8"    |   Raspberry   |
    #		+----------------+---------+-----+
    #		| PIN |   NAME   |   NAME  | PIN |
    #		+-----+----------+---------+-----+
    #		|   1 |   Vcc    |   3V3   |   1 |
    #		|   2 |   GND    |   GND   |   6 |
    #		|   3 |   SCL    | GPIO 11 |  23 |
    #		|   4 |   SDA    | GPIO 10 |  19 |
    #		|   5 |  RS/DC   | GPIO 24 |  18 |
    #		|   6 |   RES    | GPIO 25 |  22 |
    #		|   7 |   CS     | GPIO  8 |  24 |
    #		+-----+----------+---------+-----+
    #		|   8 |   MISO   |         |     |
    #		|   9 |   SCLK   |         |     |
    #		|  10 |   MOSI   |         |     |
    #		|  11 |   CS     |         |     |
    #		+=====+==========+=========+=====+
     
    SCLK = 11
    SDAT = 10
    DC   = 24
     
    pins = [SCLK,SDAT,DC]
     
    # RGB888 Color constants
     
    BLACK    = 0x000000
    RED      = 0xFF0000
    GREEN    = 0x00FF00
    BLUE     = 0x0000FF
    WHITE    = 0xFFFFFF
    COLORSET = [RED,GREEN,BLUE,WHITE]
     
    # ST7735 commands
     
    SWRESET = 0x01		# software reset
    SLPOUT  = 0x11		# sleep out
    DISPON  = 0x29		# display on
    CASET   = 0x2A		# column address set
    RASET   = 0x2B		# row address set
    RAMWR   = 0x2C		# RAM write
    MADCTL  = 0x36		# axis control
    COLMOD  = 0x3A		# color mode
     
    ########################################################################
    #
    # Low-level routines
    # These routines access GPIO directly
    #
    ########################################################################
     
    def SetPin(pinNumber,value):
    #sets the GPIO pin to desired value (1=on,0=off)
    	GPIO.output(pinNumber,value)
     
    def InitIO():
    	GPIO.setmode(GPIO.BCM)
    	GPIO.setwarnings(False)
    	for pin in pins:
    		GPIO.setup(pin,GPIO.OUT)
    	GPIO.output(SCLK,0)					#start with clock line low
     
    ########################################################################
    #
    # Bit-Banging (software) SPI routines:
    #
    ########################################################################
     
    def PulseClock():
    	#pulses the serial clock line HIGH
    	SetPin(SCLK,1)						#bit clocked on low-high transition
    	SetPin(SCLK,0)						#no delay since python is slow
     
    def WriteByte(value, data=True):
    	"sends byte to display using software SPI"
    	mask = 0x80						#start with bit7 (msb)
    	SetPin(DC,data)						#low = command; high = data
    	for b in range(8):					#loop for 8 bits, msb to lsb
    		SetPin(SDAT,value & mask)			#put bit on serial data line
    		PulseClock()					#clock in the bit
    		mask >>= 1					#go to next bit
     
    def WriteCmd(value):
    	"Send command byte to display"
    	WriteByte(value,False)					#set D/C line to 0 = command
     
    def WriteWord (value):
    	"sends a 16-bit word to the display as data"
    	WriteByte(value >> 8)					#write upper 8 bits
    	WriteByte(value & 0xFF)					#write lower 8 bits
     
    def WriteList (byteList):
    	"Send list of bytes to display, as data"
    	for byte in byteList:					#grab each byte in list
    		WriteByte(byte)					#and send it
     
    def Write888(value,reps=1):
    	"sends a 24-bit RGB pixel data to display, with optional repeat"
    	red   = value>>16					# red   = upper 8 bits
    	green = (value>>8) & 0xFF				# green = middle 8 bits
    	blue  = value & 0xFF					# blue  = lower 8 bits
    	RGB   = [red,green,blue]				# assemble RGB as 3 byte list
    	for a in range(reps):					# send RGB x optional repeat
    		WriteList(RGB)
     
    ########################################################################
    #
    # ST7735 driver routines:
    #
    ########################################################################
     
    def InitDisplay():
    	"Resets & prepares display for active use."
    	WriteCmd (SWRESET)					#software reset, puts display into sleep
    	time.sleep(0.2) #wait 200mS for controller register init
    	WriteCmd (SLPOUT)					#sleep out
    	time.sleep(0.2) #wait 200mS for TFT driver circuits
    	WriteCmd (DISPON)					#display on!
     
    def SetAddrWindow(x0,y0,x1,y1):
    	"sets a rectangular display window into which pixel data is placed"
    	WriteCmd(CASET)						#set column range (x0,x1)
    	WriteWord(x0)
    	WriteWord(x1)
    	WriteCmd(RASET)						#set row range (y0,y1)
    	WriteWord(y0)
    	WriteWord(y1)
     
    def DrawPixel(x,y,color):
    	"draws a pixel on the TFT display"
    	SetAddrWindow(x,y,x,y)
    	WriteCmd(RAMWR)
    	Write888(color)
     
    def FillRect(x0,y0,x1,y1,color):
    	"fills rectangle with given color"
    	width  = x1-x0+1
    	height = y1-y0+1
    	SetAddrWindow(x0,y0,x1,y1)
    	WriteCmd(RAMWR)
    	Write888(color,width*height)
     
    def FillScreen(color):
    	"Fills entire screen with given color"
    	FillRect(0,0,127,159,color)
     
    def ClearScreen():
    	"Fills entire screen with black"
    	FillRect(0,0,127,159,BLACK)
     
    ########################################################################
    #
    # Testing routines:
    #
    ########################################################################
     
    def TimeDisplay():
    	"Measures time required to fill display twice"
    	startTime=time.time()
    	print " Now painting screen GREEN"
    	FillScreen(GREEN)
    	print " Now clearing screen"
    	ClearScreen()
    	elapsedTime=time.time()-startTime
    	print " Elapsed time %0.1f seconds" % (elapsedTime)
     
    ########################################################################
    #
    # Main Program
    #
    ########################################################################
     
    print "Adafruit 1.8 TFT display demo"
    print "-----------------------------"
     
    InitIO()
    InitDisplay()
    TimeDisplay()
    print "Done."
     
    # END ###############################################################
    Je n'ai pas touché au corps du script.
    J'ai juste modifié le tableau des branchements, ainsi que les trois variables :
    --> SCLK = 11
    --> SDAT = 10
    --> DC = 24

    J'ai un doute sur les broches GPIO24 & GPIO25.

    Je tiens à préciser que le mode SPI a bien été activé dans le fichier "/boot/config.txt" :
    Je vérifie en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > ls /dev/spi*
    /dev/spidev0.0  /dev/spidev0.1
    >
    Normalement, ce programme gère partiellement l'équivalent du driver SP7735.
    Ce script au départ était destiné au TFT d'AdaFruit, qui est aussi géré par le driver SP7735.

    Voici le branchement du TFT d'AdaFruit :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    +----------+----------+---------+
    |   TFT    | Rpi NAME | RPI Pin |
    +----------+----------+---------+
    | LITE     |   5Vcc   |    02   |
    | MISO     +----------+---------+
    | SCK      | GPIO  11 |    23   |
    | MOSI     | GPIO  10 |    19   |
    | TFT_CS   | GPIO  08 |    24   |
    | TFT_CARD +----------+---------+
    | D/C      | GPIO  24 |    18   |
    | RESET    | GPIO  25 |    22   |
    | VCC      |   5Vcc   |    04   |
    | GND      |    GND   |    06   |
    +----------+----------+---------+
    Hormis le "lite" (première ligne) , c'est le même branchement.
    "MISO" et "TFT_CARD" ne sont pas utilisés.

    Pourquoi cela ne fonctionne pas ?
    Y-a-t-il un oubli de ma part ?
    Ou bien, le script Python n'est pas correcte.

    Par la suite, je passerai à un programme 'C/C++' qui va recréer le driver SP7735, pour mon usage personnel.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  2. #2
    Responsable Arduino et Systèmes Embarqués

    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    janvier 2009
    Messages
    12 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : janvier 2009
    Messages : 12 092
    Points : 53 444
    Points
    53 444
    Billets dans le blog
    25
    Par défaut
    Salut,

    Mais que signifie "RS/DC" ?
    Coté AdaFruit, le "RS/DC" devient D/C".
    DC pour Data/Command je suppose, pour indiquer si les données qui arrivent à l'afficheur sont à afficher ou bien sont des commandes.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    SetPin(DC,data)						#low = command; high = data


    Je tiens à préciser que le mode SPI a bien été activé dans le fichier "/boot/config.txt" :
    Dans le cas du programme Python c'est inutile. Le SPI est géré de façon logicielle (bit banging), forcément plus lent. Au contraire, évite d'utiliser les broches du Pi dédiées au SPI.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    # Bit-Banging (software) SPI routines:

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 566
    Points : 16 615
    Points
    16 615
    Par défaut
    Salut f-leb.

    Merci de ta participation.

    Je ne maitrise pas trop le langage Python.

    Je te donne le lien où j'ai trouvé les programmes python.
    Les PDF sont dans l'onglet "Raspberry Pi", puis "Pi TFT Display".

    Dans le cas du deuxième PDF, de nom "TFT Display, Hardware SPI", j'ai aussi testé et cela ne produit aucun résultat.
    Voici le code python ;
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    #!/usr/bin/python
     
    import RPi.GPIO as GPIO
    import time
    import spidev			#hardware SPI
     
    DC = 25
     
    #RGB888 Color constants
    BLACK    = 0x000000
    RED      = 0xFF0000
    GREEN    = 0x00FF00
    BLUE     = 0x0000FF
    WHITE    = 0xFFFFFF
    COLORSET = [RED,GREEN,BLUE,WHITE]
     
    #ST7735 commands
    SWRESET = 0x01			#software reset
    SLPOUT  = 0x11			#sleep out
    DISPON  = 0x29			#display on
    CASET   = 0x2A			#column address set
    RASET   = 0x2B			#row address set
    RAMWR   = 0x2C			#RAM write
    MADCTL  = 0x36			#axis control
    COLMOD  = 0x3A			#color mode
     
    ########################################################################
    #
    # Low-level routines
    # These routines access GPIO directly
    #
    ########################################################################
     
    def SetPin(pinNumber,value):
    #sets the GPIO pin to desired value (1=on,0=off)
    	GPIO.output(pinNumber,value)
     
    def InitIO():
    	GPIO.setmode(GPIO.BCM)
    	GPIO.setwarnings(False)
    	GPIO.setup(DC,GPIO.OUT)
     
    ########################################################################
    #
    # Hardware SPI routines:
    #
    ########################################################################
     
    def WriteByte(value, data=True):
    	SetPin(DC,data)
    	spi.writebytes([value])
     
    def WriteCmd(value):
    	"Send command byte to display"
    	WriteByte(value,False)			#set D/C line to 0 = command
     
    def WriteWord (value):
    	"sends a 16-bit word to the display as data"
    	WriteByte(value >> 8)			#write upper 8 bits
    	WriteByte(value & 0xFF)			#write lower 8 bits
     
    def WriteList (byteList):
    	"Send list of bytes to display, as data"
    	for byte in byteList:			#grab each byte in list
    		WriteByte(byte)			#and send it
     
    def Write888(value,width,count):
    	"sends a 24-bit RGB pixel data to display, with optional repeat"
    	red   = value>>16			#red = upper 8 bits
    	green = (value>>8) & 0xFF		#green = middle 8 bits
    	blue  = value & 0xFF			#blue = lower 8 bits
    	RGB   = [red,green,blue]		#assemble RGB as 3 byte list
    	SetPin(DC,1)
    	for a in range(count):
    		spi.writebytes(RGB*width)
     
    ########################################################################
    #
    # ST7735 driver routines:
    #
    ########################################################################
     
    def InitDisplay():
    	"Resets & prepares display for active use."
    	WriteCmd (SWRESET)			#software reset, puts display into sleep
    	time.sleep(0.2)			#wait 200mS for controller register init
    	WriteCmd (SLPOUT)			#sleep out
    	time.sleep(0.2)			#wait 200mS for TFT driver circuits
    	WriteCmd (DISPON)			#display on!
     
    def SetAddrWindow(x0,y0,x1,y1):
    	"sets a rectangular display window into which pixel data is placed"
    	WriteCmd(CASET)			#set column range (x0,x1)
    	WriteWord(x0)
    	WriteWord(x1)
    	WriteCmd(RASET)			#set row range (y0,y1)
    	WriteWord(y0)
    	WriteWord(y1)
     
    def FillRect(x0,y0,x1,y1,color):
    	"fills rectangle with given color"
    	width = x1-x0+1
    	height = y1-y0+1
    	SetAddrWindow(x0,y0,x1,y1)
    	WriteCmd(RAMWR)
    	Write888(color,width,height)
     
    def FillScreen(color):
    	"Fills entire screen with given color"
    	FillRect(0,0,127,159,color)
     
    def ClearScreen():
    	"Fills entire screen with black"
    	FillRect(0,0,127,159,BLACK)
     
    ########################################################################
    #
    # Testing routines:
    #
    ########################################################################
     
    def TimeDisplay():
    	"Measures time required to fill display twice"
    	startTime=time.time()
    	print " Now painting screen GREEN"
    	FillScreen(GREEN)
    	print " Now clearing screen"
    	ClearScreen()
    	elapsedTime=time.time()-startTime
    	print " Elapsed time %0.1f seconds" % (elapsedTime)
     
    ########################################################################
    #
    # Main Program
    #
    ########################################################################
     
    print "Adafruit 1.8 TFT display demo with hardware SPI"
    spi = spidev.SpiDev()
    spi.open(0,0)
    spi.mode = 0
    InitIO()
    InitDisplay()
    TimeDisplay()
    spi.close()
    print "Done."
     
    # END ###############################################################
    Si je pouvais avoir un résultat même partiel pour démarrer, cela me serait profitable.

    Je ne comprends pas où se trouve le problème.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Responsable Arduino et Systèmes Embarqués

    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    janvier 2009
    Messages
    12 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : janvier 2009
    Messages : 12 092
    Points : 53 444
    Points
    53 444
    Billets dans le blog
    25
    Par défaut
    Le programme Python est plutôt ancien (Python 2.x obsolète maintenant).
    Tu devrais essayer avec une version plus récente de la bibliothèque st7735, par exemple https://github.com/pimoroni/st7735-p...master/library

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 566
    Points : 16 615
    Points
    16 615
    Par défaut
    Salut f-leb.

    Moi qui croyait qu'il suffisait de brancher le périphérique pour que cela fonctionne. Et bien non, c'est pas ça.

    D'après mes lectures sur le net, je dois utiliser un overlay au démarrage de la raspberry, que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dtoverlay=sainsmart18,dc_pin=24,resetgpio=25,debug=3,bgr=1
    dtdebug=1
    J'ai repris le paramétrage que j'ai trouvé chez Gotronic, qui est celui de la version Jessie.

    Résultat : avant, j'avais un écran blanc, maintenant j'ai quelque chose à l'affichage.
    Sauf que tout ne s'affiche pas correctement comme dans la version jessie.
    Pourquoi ? Ce fichier "/boot/overlays/sainsmart18.dtbo" n'est plus en phase avec les dernières raspberry pi 3B+ et 4B.

    A titre indicatif, voici le résultat dans "dmesg" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    > dmesg | grep fb
    [    0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  dwc_otg.lpm_enable=0 console=tty1 console=ttyS0,115200 root=PARTUUID=9cba179a-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles
    [    1.906806] bcm2708_fb soc:fb: FB found 1 display(s)
    [    1.919157] bcm2708_fb soc:fb: Registered framebuffer for display 0, size 656x416
    [   14.559890] fbtft: module is from the staging directory, the quality is unknown, you have been warned.
    [   14.563730] fb_st7735r: module is from the staging directory, the quality is unknown, you have been warned.
    [   14.565702] fb_st7735r spi0.0: fbtft_property_value: width = 128
    [   14.565729] fb_st7735r spi0.0: fbtft_property_value: height = 160
    [   14.565752] fb_st7735r spi0.0: fbtft_property_value: buswidth = 8
    [   14.565775] fb_st7735r spi0.0: fbtft_property_value: debug = 3
    [   14.565793] fb_st7735r spi0.0: fbtft_property_value: rotate = 90
    [   14.565815] fb_st7735r spi0.0: fbtft_property_value: fps = 50
    [   14.565936] fb_st7735r spi0.0: fbtft_gamma_parse_str() str=
    [   14.565952] fb_st7735r spi0.0: 0F 1A 0F 18 2F 28 20 22 1F 1B 23 37 00 07 02 10
                   0F 1B 0F 17 33 2C 29 2E 30 30 39 3F 00 07 03 10
    [   14.566098] fb_st7735r spi0.0: fbtft_request_one_gpio: 'reset' GPIO
    [   14.566162] fb_st7735r spi0.0: fbtft_request_one_gpio: 'dc' GPIO
    [   14.566216] fb_st7735r spi0.0: fbtft_request_one_gpio: 'rd' GPIO
    [   14.566268] fb_st7735r spi0.0: fbtft_request_one_gpio: 'wr' GPIO
    [   14.566319] fb_st7735r spi0.0: fbtft_request_one_gpio: 'cs' GPIO
    [   14.566370] fb_st7735r spi0.0: fbtft_request_one_gpio: 'latch' GPIO
    [   14.566421] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.566472] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.566523] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.566574] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.566626] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.566676] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.566727] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.566779] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.566830] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.566883] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.566933] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.566983] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.567036] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.567086] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.567137] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.567188] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.567238] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.567290] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.567341] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.567392] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.567442] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.567494] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.567544] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.567594] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.567646] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.567696] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.567748] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.567798] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.567849] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.567905] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.567956] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.568007] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.568058] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.568108] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.568159] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.568209] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.568260] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.568311] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.568361] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.568413] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.568463] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.568515] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.568565] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.568616] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.568667] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.568717] fb_st7735r spi0.0: fbtft_request_one_gpio: 'db' GPIO
    [   14.568769] fb_st7735r spi0.0: fbtft_request_one_gpio: 'led' GPIO
    [   14.568819] fb_st7735r spi0.0: fbtft_request_one_gpio: 'aux' GPIO
    [   14.568837] fb_st7735r spi0.0: fbtft_verify_gpios()
    [   14.568853] fb_st7735r spi0.0: fbtft_reset()
    [   14.732189] fb_st7735r spi0.0: init: write(0x01) 
    [   14.732289] fb_st7735r spi0.0: init: mdelay(150)
    [   14.882448] fb_st7735r spi0.0: init: write(0x11) 
    [   14.882676] fb_st7735r spi0.0: init: mdelay(500)
    [   15.382823] fb_st7735r spi0.0: init: write(0xB1) 0x01 0x2C 0x2D 
    [   15.383136] fb_st7735r spi0.0: init: write(0xB2) 0x01 0x2C 0x2D 
    [   15.383229] fb_st7735r spi0.0: init: write(0xB3) 0x01 0x2C 0x2D 0x01 0x2C 0x2D 
    [   15.383312] fb_st7735r spi0.0: init: write(0xB4) 0x07 
    [   15.383398] fb_st7735r spi0.0: init: write(0xC0) 0xA2 0x02 0x84 
    [   15.383481] fb_st7735r spi0.0: init: write(0xC1) 0xC5 
    [   15.383565] fb_st7735r spi0.0: init: write(0xC2) 0x0A 0x00 
    [   15.383649] fb_st7735r spi0.0: init: write(0xC3) 0x8A 0x2A 
    [   15.383733] fb_st7735r spi0.0: init: write(0xC4) 0x8A 0xEE 
    [   15.383815] fb_st7735r spi0.0: init: write(0xC5) 0x0E 
    [   15.383897] fb_st7735r spi0.0: init: write(0x20) 
    [   15.383948] fb_st7735r spi0.0: init: write(0x3A) 0x05 
    [   15.384029] fb_st7735r spi0.0: init: write(0x29) 
    [   15.384078] fb_st7735r spi0.0: init: mdelay(100)
    [   15.484276] fb_st7735r spi0.0: init: write(0x13) 
    [   15.488520] fb_st7735r spi0.0: init: mdelay(10)
    [   15.513091] fb_st7735r spi0.0: Display update: 2777 kB/s, fps=0
    [   15.513625] graphics fb1: fb_st7735r frame buffer, 160x128, 40 KiB video memory, 4 KiB buffer memory, fps=50, spi0.0 at 40 MHz
    J'ai vu que l'on pouvait recréer ce fichier overlay. Je vais le faire sous le nom de "st7735r.dts".

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 566
    Points : 16 615
    Points
    16 615
    Par défaut
    Salut à tous.

    J'ai dû construire un fichier "Device Tree Source" que j'ai nommé "st7735r.dts" afin de faire fonctionner mon "TFT 1.8" display".
    Je me suis inspiré de ce lien où un internaute avait le même genre de problème que moi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    /*
     * Device Tree overlay for st7735r
     *
     */
    
    /dts-v1/;
    /plugin/;
    
    / {
    	compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
    
    	fragment@0 {
    		target = <&spi0>;
    		__overlay__ {
    			status = "okay";
    		};
    	};
    
    	fragment@1 {
    		target = <&spidev0>;
    		__overlay__ {
    			status = "disabled";
    		};
    	};
    
    	fragment@2 {
    		target = <&gpio>;
    		__overlay__ {
    			mytft_pins: mytft_pins {
    				brcm,pins = <24 25>;
    				brcm,function = <1 1>;		/* out out */
    				brcm,pull = <0 0>;
    			};
    		};
    	};
    
    	fragment@3 {
    		target = <&spi0>;
    		__overlay__ {
    			/* needed to avoid dtc warning */
    			#address-cells = <1>;
    			#size-cells = <0>;
    			
    			mytft: mytft_disp@0 {
    				compatible = "jianda,jd-t18003-t01";
    				reg = <0>;
    				pinctrl-names = "default";
    				pinctrl-0 = <&mytft_pins>;
    
    				spi-max-frequency = <32000000>;
    				bgr = <0>;
    				bpp = <1>;
    				fps = <20>;
    				txbuflen = <32768>;
    				rotation = <180>;
    				buswidth = <8>;
    
    				height = <160>;
    				width = <128>;
    				page-offset = <0>;
    
    				reset-gpios = <&gpio 25 0>;
    				dc-gpios = <&gpio 24 0>;
    
    				gamma = "02 1c 07 12 37 32 29 2d 29 25 2B 39 00 01 03 10\n03 1d 07 06 2E 2C 29 2D 2E 2E 37 3F 00 00 02 10";
    				debug = <0>;
    			};
    
    		};
    	};
    
    	fragment@4 {
    		target = <&spi0_pins>;
    		__overlay__ {
    			brcm,pins = <10 11 8>;
    		};
    	};
    
    	__overrides__ {
    		speed =		<&mytft>,"spi-max-frequency:0";
    		txbuflen =	<&mytft>,"txbuflen:0";
    		rotation =	<&mytft>,"rotation:180";
    		bgr =		<&mytft>,"bgr:0";
    		fps =		<&mytft>,"fps:0";
    		height =	<&mytft>,"height:0";
    		width =		<&mytft>,"width:0";
    		debug =		<&mytft>,"debug:0";
    	};
    };
    Et voici ce que j'obtiens dans le DMESG :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [    0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=0 snd_bcm2835.enable_compat_alsa=0 snd_bcm2835.enable_hdmi=1 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708_fb.fbswap=1 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  dwc_otg.lpm_enable=0 console=tty1 console=ttyS0,115200 root=PARTUUID=9cba179a-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles fbcon=map:10
    [    1.957924] bcm2708_fb soc:fb: FB found 1 display(s)
    [    1.970341] bcm2708_fb soc:fb: Registered framebuffer for display 0, size 656x416
    [   17.340512] st7735r spi0.0: [drm] fb1: st7735rdrmfb frame buffer device
    Quand j'ai ce résultat, je suppose que j'ai un fichier st7735r.dtbo conforme, non ?

    L'affichage n'est pas conforme à ce que j'attends.
    Au démarrage de la raspberry, normalement, il y a une trace de l'exécution.
    Sur mon TFT, je n'obtiens que partiellement cette trace. La plupart du temps, rien ne s'affiche.
    Par contre, j'ai bien l'écran graphique du bureau de la raspberry.
    La dimension n'est pas bonne car l'écran est trop grand par rapport à mon TFT (128x160).

    Je peux envoyer une image à la dimension 128x160 qui s'affiche correctement avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo fbi -d /dev/fb1 -T 1 -noverbose -a cat.jpg
    Les scripts pythons ne fonctionnent toujours pas. C'est dommage car j'aurai aimé faire mumuse avec mon TFT.

    Il est fort probable qu'il me manque "fbtft_device" car je ne le vois pas.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  7. #7
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 566
    Points : 16 615
    Points
    16 615
    Par défaut
    Salut à tous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    > systemctl status systemd-modules-load.service
    ? systemd-modules-load.service - Load Kernel Modules
       Loaded: loaded (/lib/systemd/system/systemd-modules-load.service; static; vendor preset: enabled)
       Active: failed (Result: exit-code) since Sat 2021-02-27 12:05:07 CET; 1min 51s ago
         Docs: man:systemd-modules-load.service(8)
               man:modules-load.d(5)
      Process: 304 ExecStart=/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE)
     Main PID: 304 (code=exited, status=1/FAILURE)
    
    févr. 27 12:05:07 RaspberryPi systemd[1]: Starting Load Kernel Modules...
    févr. 27 12:05:07 RaspberryPi systemd-modules-load[304]: Failed to find module 'fbtft_device'
    févr. 27 12:05:07 RaspberryPi systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE
    févr. 27 12:05:07 RaspberryPi systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'.
    févr. 27 12:05:07 RaspberryPi systemd[1]: Failed to start Load Kernel Modules.
    >
    Ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > modprobe fbtft_device
    modprobe: FATAL: Module fbtft_device not found in directory /lib/modules/5.10.17-v7+
    >
    Je constate que "fbtft_device" n'existe pas dans mon environnement.
    C'est normal car il n'est plus pris en charge depuis le noyau 5.4.
    Et comme par hasard, je me trouve dans buster :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    > uname -a
    Linux RaspberryPi 5.10.17-v7+ #1403 SMP Mon Feb 22 11:29:51 GMT 2021 armv7l GNU/Linux
    >
    Je ne sais pas trop à quoi sert ce module.
    Le problème que je rencontre depuis le début, l'affichage en mode console est partielle.
    Je n'ai pas, au démarrage de la raspberry, l'affichage de la trace qui s'exécute, mais juste durant quelques secondes, puis plus rien, puis ça revient pour disparaitre définitivement.
    Et enfin, je bascule dans le mode graphique du bureau de la raspberry avec le curseur au milieu de l'écran tft.

    Je ne sais plus trop quoi faire pour faire fonctionner normalement ce tft.
    J'arrive quand même à afficher des images.
    Mais je ne n'arrive pas à faire fonctionner les scripts pythons.

    Comment résoudre mon problème ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  8. #8
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 566
    Points : 16 615
    Points
    16 615
    Par défaut
    Salut à tous.

    Je récapitule :

    1) j'ai un TFT 1.8" de chez Joy-Iy que j'ai acheté chez Gotronic.
    Il est très similaire à celui de sainsmart que voici :
    --> https://www.sainsmart.com/products/1...microsd-socket

    voire même identique.

    2) Je suis sous buster, dernière version à cette date.
    le pilote est st7735. C'est ce qui est marqué sur mon tft.

    Je découvre que le pilote que j'ai a ma disposition se nomme st7735r.
    Je suppose que "r" signifie "révision", non ?

    Par contre, impossible de savoir ce qui est différent par rapport à st7735.

    3) j'ai fait le branchement recommandé. Il est indiqué sur la boîte d'emballage
    Gotronic a fourni un pdf pour configurer l'afficheur soit sur une arduino, ou soit sur une raspberry.
    Je retrouve le même branchement, et je configure ma raspberry, comme indiqué dans le pdf.

    En l'état, j'ai un écran blanc et rien ne se passe

    4) dans le guide d'installation de chez Gotronic, je constate que l'OS utilisé est celui de Jessie.
    Je refais le même test, cette fois-ci sous Jessie, et ça fonctionne.

    5) Je découvre qu'il faut installer un overlay, sous buster.
    Dans le pdf, il est fait référence à "sainsmart18".
    Je configure mon fichier config.txt afin d'introduire cet overlay qui est bien présent dans le répertoire "/boot/overlays/sainsmart18.dtbo.

    Et là, oh miracle, sous buster, l'affichage fonctionne.

    6) en consultant le DMESG, je découvre quelques anomalies.
    Je cherche des explications sur le net et je découvre que je ne suis pas le seul à constater ce genre de problème.

    7) Je m'informe comment créer un fichier ".dts" et en particulier sur le pilote "st7735r".
    Je nomme le fichier "st7735r.dts" et je constate après plusieurs essais que je n'ai plus les messages d'anomalies.

    Le seul mystère qui me reste à résoudre est la compatibilité.
    En effet, il y a un ligne qui se nomme "compatible" et contient une liste de périphérique.
    J'ai pourtant testé :
    --> sitronix,st7735r
    --> sitronix,sainsmart18
    --> sitronix,adafruit18
    --> fbtft,adafruit18
    --> fbtft,sainsmart18
    --> fbtft,st7735r
    mais cela produit des erreurs.

    Tandis que :
    --> jianda,jd-t18003-t01
    fonctionne sans erreur.

    Je ne sais pas à quoi correspond, dans la raspberry, ces périphériques et ce que cela représente.

    8) afin de poursuivre mes investigations, je prends comme exemple de recherche sur le net, le TFT d'adafruit 1.8".
    Il est similaire au mien, avec un branchement comparable.

    9) je récupère des scripts pythons mais je ne comprends pas pourquoi ils ne fonctionnent pas
    Je suppose que je dois avoir un environnement python pourri car je n'utilise pas ce langage.
    Autrement dit, je n'ai pas fait la configuration nécessaire à son bon fonctionnement.
    N'empêche que j'ai installé ce qui devait l'être afin de ne pas avoir d'erreurs à l'exécution.

    10) je me suis focalisé sur plusieurs points :
    --> le branchement encore est-il correcte ?
    --> mon fichier "st77635r.dts" a-t-il été bien configuré ?
    --> ma configuration est-elle encore bonne ?
    --> est-ce que le mode SPI et les GPIO ont bien été déclarés correctement dans les scripts pythons ?

    Et c'est là que je découvre qu'il me manque le fichier "fbtft_device.
    Je ne comprends pas à quoi peut servir ce fichier, puisque l'affichage semble fonctionner.

    11) en ce qui concerne l'affichage, je l'ai comparé à celui que j'ai dans la version jessie.
    En ce qui concerne le mode graphique, à savoir l'affichage du bureau de la raspberry, ça fonctionne.
    J'ai même branché ma souris et je peux la faire bouger.

    12) j'installe un utilitaire qui est donné en exemple dans le pdf de gotronic, de nom "FBI".
    Je cherche une image au format 128x160. Impossible a en trouver une.
    Qu'à cele ne tienne, je récupère une photo de chat (j'aime bien les chats) que je recadre au format 128x160.
    Je fait le même test que dans le pdf et ça fonctionne.
    J'ai bien la photo de ce chat dans mon tft !

    13) j'ai aussi à l'affichage une erreur pas bien grave, mais gênante.
    En effet, à droite il y a une colonne, et en bas il y a une ligne, qui apparaissent avec pleins de pixels.
    Il me semble que cela soit en dehors du 128x160. Je ne sais pas comment faire disparaitre cela.

    14) En mode texte, la console ne fonctionne pas bien.
    J'ai normalement au démarrage de la raspberry, une trace à l'affichage.
    J'ai d'une manière brève, l'affichage partielle de cette trace.
    Puis un écran noir. Au bout de quelques secondes, le même affichage partielle, puis plus rien.
    Je suppose que la cause à cela est le fichier "fbtft_device".

    15) par l'absence de ce module "fbtft_device", j'ai l'explication pourquoi dans DMESG je n'ai pas l'affichage que je devrais avoir.
    Je parle du compte-rendu de l'overlay qui est chargé. les messages sont préfixés par "fbtft_device".

    16) que signifie FB ? C'est l'acronyme de "FrameBuffer".
    En ce point de mon avancement, je ne sais plus trop quoi faire car je ne trouve pas ce fichier "fbtft_device".
    Enfin, je devrais dire que je ne trouve pas la bonne version pour buster.
    D'après ce que j'ai compris, ce module "fbtft_device" n'est plus disponible à partir de la version linux 5.4 compris.

    17) Je constate que par "FBI", j'ai pu envoyé la photo du chat vers le périphérique "/dev/fb1".
    Bizarre. Je croyais que le module (ou pilote) fbtft_device n'était pas présent sous buster ?
    Que dois-je comprendre ?
    Je peux outrepasser ce pilote absent, à la condition que l'envoi soit compréhensible par mon tft.
    Ou bien, il est présent sous un autre nom.

    18) Qu'est-ce que j'ai pu perdre comme temps pour faire fonctionner de tft.
    Tout ce que j'ai appris ce résume au fichier overlay "st7735.dts" que j'ai créé.

    19) je vais m'attaquer maintenant à la programmation en 'C/C++'.
    Pour ce faire, j'ai besoin de connaitre le datasheet.
    J'en ai trouvé un qui est celui de sitronix à ce lien.

    20) première opération, j'aimerai configurer mon tft à l'initialisation et afficher quelque chose de simple.


    Si quelqu'un pouvait m'aider, au moins dans la compréhension de ce datasheet, je lui serai très reconnaissant.
    Il serait bien de rappeler le numéro du paragraphe si vous avez un commentaire à faire.

    Merci !
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  9. #9
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 566
    Points : 16 615
    Points
    16 615
    Par défaut
    Salut à tous.

    Voici la suite :

    21) L'absence du défilement au démarrage de la raspberry était dû au paramétrage "splash screen".
    Je l'ai supprimé et j'ai maintenant les "[ ok ]". C'est nettement mieux qu'avant.
    Je vais devoir me pencher un peu plus sur le paramétrage de cet afficheur dans la raspberry.
    Je vais devoir constituer une section pour cet afficheur dans le fichier config.txt.
    Je parle bien sûr de la gestion du FrameBuffer.

    22) je n'ai pas compris comme je peux accéder à la fois via la console et via un programme.
    Il me semble que c'est l'un ou l'autre, mais pas les deux.

    23) je fais le test sous SP32. Ca ne fonctionne pas.
    Voici le site dont je me suis servi. Pour les branchements, j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    +----------+------------------+
    |          |        ESP32     |
    | TFT 1.8" +----------+-------+
    |          |   NAME   |  PIN  |
    +----------+----------+-------+
    |   VCC    |    3V3   |   1 R |
    |   GND    |    GND   |   2 R |
    +----------+----------+-------+
    |   SCL    | GPIO  22 |  14 R |
    |   SDA    | GPIO  21 |  11 R |
    |  RS/DC   | GPIO  13 |   3 L |
    |   RES    | GPIO  14 |   5 L |
    |   CS     | GPIO  12 |   4 L |
    +----------+----------+-------+
    |  MISO    | GPIO  19 |   8 R |
    |  SCLK    | GPIO  18 |   9 R |
    |  MOSI    | GPIO  23 |  15 R |
    |   CS     | GPIO   5 |   8 R |
    +----------+----------+-------+
    Le "L" signifie à gauche (left) et "R" à droit (right).

    J'ai respecté ce qui est dit dans le site.
    Je ne comprends pas pourquoi, la GPIO23 de l'ESP32n'a pas été utilisé pour le branchement du SPI_MOSI.
    Pareil pour les autres branchements (SPI_SCLK, SPI_CE0) de l'ESP32. A moins que je me trompe ???

    Voici ce que j'obtiens dans la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    ets Jun  8 2016 00:22:57
    
    rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0xee
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:1
    load:0x3fff0018,len:4
    load:0x3fff001c,len:1044
    load:0x40078000,len:8896
    load:0x40080400,len:5816
    entry 0x400806ac
    
    ST7735 TFT grafics test
    Initializing...
    285
    done
    Et bien sûr, je n'obtiens rien sur l'écran de mon afficheur.
    J'ai jeté un coup à ce script. Qu'est-ce qu'il est mal écrit !

    24) J'ai enfin trouvé la raison du problème de l'affichage sur mon TFT 1.8" Joy-It.
    Dans tous les exemples que j'ai trouvés, il n'y a aucun branchement sur l'entrée RESET de l'afficheur.
    Et bien sûr, cette entrée n'est pas gérée dans les scripts arduino et python que j'ai pu consulter.

    Dans mon afficheur, ce RESET doit être obligatoirement branché.
    Il doit être sollicité au moins une fois, au démarrage. Sans cela, pas d'affichage.
    Franchement, c'est du grand n'importe quoi de ne pas respecter les consignes de base.

    25) j'ai commencé à écrire mon programme 'C/C++'.
    J'ai fait le choix de la couleur sur 18 bits.

    J'ai mis les fonctionnalités dans une bibliothèque à part.
    Je vais créer quelques exemples d'affichages afin d'illustrer ses capacités.

    Suite au prochain épisode.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  10. #10
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    5 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 5 566
    Points : 16 615
    Points
    16 615
    Par défaut
    Salut à tous.

    J'ai terminé d'écrire le pilote du TFT 1.8" de Joy-it.

    Sujet résolu !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jeux Snake Arduino Esplora (Arduino + Ecran TFT)
    Par Josh.Bateman dans le forum Arduino
    Réponses: 1
    Dernier message: 13/12/2018, 08h58
  2. Programmer un ecran TFT, possible ?
    Par MisterPython dans le forum Hardware
    Réponses: 8
    Dernier message: 04/05/2015, 10h22
  3. [Ecran TFT]Est-on limité à la résolution indiquée
    Par NicolasJolet dans le forum Périphériques
    Réponses: 6
    Dernier message: 06/09/2006, 20h25
  4. achat ecran tft par internet
    Par elekis dans le forum Périphériques
    Réponses: 7
    Dernier message: 27/07/2006, 21h17
  5. Nettoyage d'un ecran TFT
    Par Faith's Fall dans le forum Périphériques
    Réponses: 9
    Dernier message: 10/03/2005, 17h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo