Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1998 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  182  183  184  ..  262  263  264  265  266  267
Auteur Sujet :

[arduino] Topic Unique blabla @ Arduino

n°261723
RomainD2
Posté le 20-06-2019 à 09:34:16  profilanswer
 

Reprise du message précédent :

Turkleton a écrit :

Je suis pas sûr que ça soit vraiment adapté à ton usage. J'ai toujours utilisé les moteurs pas-à-pas pour des rotations "précises", mais jamais pour faire tourner un truc non-stop.

 

Commander un moteur classique en PWM (ou utiliser des réducteurs mais c'est effectivement plus chiant) me paraît une meilleure idée ;)


Merci,

 

En PWM avec un moteur classique, on peut atteindre des faibles vitesses sans réducteurs ? Et le couple reste acceptable ?

 

En robotique, ils n'utilisent pas des moteurs pas à pas ?

 

Edit : Sinon, servo-moteurs à rotation continue ?

Message cité 2 fois
Message édité par RomainD2 le 20-06-2019 à 09:39:04
mood
Publicité
Posté le 20-06-2019 à 09:34:16  profilanswer
 

n°261726
_Makaveli_
Posté le 20-06-2019 à 10:01:58  profilanswer
 

Je pose ma question ici, c'est peut être plus adapté :
 
Je cherche à alimenter un arduino (enfin, un nodemcu) à partir d'un module à base de Li-on).  
 
J'ai vu pas mal de solutions, mais si vous vous êtes déjà penché sur le problème je suis preneur.  
 
Pour l'instant je vois des solutions à base de 2 16340 qui intègrent le circuit de charge et l'alimentation.


---------------
Humanity is overrated
n°261729
Turkleton
I don't quite understand you
Posté le 20-06-2019 à 10:08:20  profilanswer
 

RomainD2 a écrit :


Merci,
 
En PWM avec un moteur classique, on peut atteindre des faibles vitesses sans réducteurs ? Et le couple reste acceptable ?
 
En robotique, ils n'utilisent pas des moteurs pas à pas ?
 
Edit : Sinon, servo-moteurs à rotation continue ?

Je peux pas trop te répondre pour le PWM, j'ai jamais testé. Mais si ça fonctionne pareil que pour plein d'autres trucs électriques, à commencer par les LEDs, ça devrait le faire (à voir pour le couple).
 
En robotique, ils ne font pas tourner des hélices non-stop à grande vitesse, mais ils utilisent bien sûr du pas-à-pas pour animer les mouvements d'un robot (c'est ce que je disais dans mon premier post, c'est fait pour de la précision à la base, vu que les moteurs classiques ne sont pas précis).
 
Et le servo-moteur, je pense que c'est encore pire que le pas-à-pas. De ce que j'en utilise, ils sont adaptés quand tu as besoin de couple, mais pas pour faire de la vitesse ou du mouvement continu.
 
Encore une fois, tout cela est basé sur mon expérience (limitée) avec les différents types de moteur. Si ça se trouve je dis des conneries grosses comme moi :D  


---------------
If you think it could look good, then I guess it should
n°261733
Natopsi
☄️Just end it already!☄️
Posté le 20-06-2019 à 11:03:20  profilanswer
 

Pour faire de la précision avec un moteur à courant-continu faut prendre du moteur de précision.  
 
Pour moi du pas à pas est le plus adapté à ces vitesse, avec un contrôleur microstep et en réglant le courant à une valeur faible pour pas pourrir l'autonomie. Mais même avec un courant élevé comme 1A c'est pas trop difficile d'avoir un peu d'autonomie, une powerbank "10000mAh" tiendrai presque les 8h :D


---------------
ACH/VDSHFRCoin◈1435mm⚡
n°261766
RomainD2
Posté le 20-06-2019 à 14:56:49  profilanswer
 

J'ai du mal à comprendre en quoi un servo-moteur sera moins adapté qu'un moteur + engrenage, puisque c'est justement ce qui est dans un servo-moteur. L'avantage, c'est que le tout est contenu dans un boitier, et qu'en entrée, c'est un simple PWM! Je pourrais au final même me passer d'un arduino, mais je ne trouve pas de carte toute simple qui permettrait de générer un PWM commandé par un potentiomètre.
 
Après, j'ai un peu de mal à trouver une idée de la consommation d'un servo-moteur...
 
Pour les power-bank, c'est une bonne idée, cela permettrait d'intégrer le circuit de charge / décharge.

n°261767
Turkleton
I don't quite understand you
Posté le 20-06-2019 à 15:04:01  profilanswer
 

La seule utilisation que je fais des servo-moteurs, c'est les piloter en leur donnant un angle, donc pas possible de leur faire faire un tour (de toutes façons ils ne vont qu'à 180° max).
Par contre je connais pas s'il y a des servos qui font des tours complets.


---------------
If you think it could look good, then I guess it should
n°261771
man-x69
Posté le 20-06-2019 à 15:22:28  profilanswer
 

RomainD2 a écrit :


Merci,
 
En PWM avec un moteur classique, on peut atteindre des faibles vitesses sans réducteurs ? Et le couple reste acceptable ?
 
En robotique, ils n'utilisent pas des moteurs pas à pas ?
 
Edit : Sinon, servo-moteurs à rotation continue ?


 
Il te faut un moteur correctement dimensionné (avec un réducteur au cul du moteur). Si tu veux vraiment une vitesse précise, tu vas devoir asservir.
C'est un peu plus complexe, mais ça se fait.
Comme ici : https://www.youtube.com/watch?v=SuxTLcgyIl0 l'asservissement est en position, mais la vitesse et le couple sont aussi contrôlés.
Et question budget, c'est un moteur + réducteur + codeur optique d'imprimante choppée dans la benne [:thoulisse_bernard:1].
 
 

Turkleton a écrit :

La seule utilisation que je fais des servo-moteurs, c'est les piloter en leur donnant un angle, donc pas possible de leur faire faire un tour (de toutes façons ils ne vont qu'à 180° max).
Par contre je connais pas s'il y a des servos qui font des tours complets.


 
Tu peux casser la butée mécanique et remplacer le potentiomètre par un pont de résistances (ou couper son axe et le centrer :o). Par contre la vitesse ne sera contrôlée qu'en boucle ouverte.

Message cité 1 fois
Message édité par man-x69 le 20-06-2019 à 15:24:37

---------------
Si tu bois froid juste après le potage chaud, ça va faire sauter l'émail de tes dents - Monorailcat iz ohverin
n°261772
RomainD2
Posté le 20-06-2019 à 15:22:39  profilanswer
 

Turkleton a écrit :

La seule utilisation que je fais des servo-moteurs, c'est les piloter en leur donnant un angle, donc pas possible de leur faire faire un tour (de toutes façons ils ne vont qu'à 180° max).
Par contre je connais pas s'il y a des servos qui font des tours complets.

 

Si, même ce qui vont à 180 tu peux les modifier après coup pour faire des tours complets.

 

Voilà ce que j'ai trouvé chez radiospare :
https://fr.rs-online.com/web/p/servomoteurs/7813046/

 

Consommation, prenons 250mA max en courant nominal, avec une powerbank de 10000 mAh :
https://fr.rs-online.com/web/p/batt [...] s/1350999/

 

Je pense que je peux tenir plusieurs jours!

 

Reste à voir pour la commande PWM, si je pars sur un arduino, où si je trouve plus simple!


Message édité par RomainD2 le 20-06-2019 à 15:23:33
n°261774
RomainD2
Posté le 20-06-2019 à 15:26:11  profilanswer
 

man-x69 a écrit :


 
Il te faut un moteur correctement dimensionné (avec un réducteur au cul du moteur). Si tu veux vraiment une vitesse précise, tu vas devoir asservir.
C'est un peu plus complexe, mais ça se fait.
Comme ici : https://www.youtube.com/watch?v=SuxTLcgyIl0 l'asservissement est en position, mais la vitesse et le couple sont aussi contrôlés.
Et question budget, c'est un moteur + réducteur + codeur optique d'imprimante choppée dans la benne [:thoulisse_bernard:1].


Je n'ai pas vraiment besoin d'une vitesse ultra-précise. La charge n'est pas entièrement connue et pourra différer de quelques centaines de grammes. Il y en a plusieurs à réaliser, donc je vais sûrement passer une commande radiospare ou autre.
 
Que penses-tu de la solution servo-moteur qui comprend du coup le moteur, plus le réducteur ?

n°261777
man-x69
Posté le 20-06-2019 à 15:56:50  profilanswer
 

RomainD2 a écrit :


Je n'ai pas vraiment besoin d'une vitesse ultra-précise. La charge n'est pas entièrement connue et pourra différer de quelques centaines de grammes. Il y en a plusieurs à réaliser, donc je vais sûrement passer une commande radiospare ou autre.
 
Que penses-tu de la solution servo-moteur qui comprend du coup le moteur, plus le réducteur ?


 
Ça dépend vraiment de comment tu dimensionnes ton système.
Il faut regarder le couple que tu demandes au moteur, et du couple qu'il est capable de fournir (et si ton alim peut fournir le courant) pour une vitesse donnée.
 
Les docs de Maxon (valables en général, sur tout types de moteur) sont assez claires et permettent de bien choisir et dimensionner un moteur/réducteur (tu peux te permettre de négliger une partie, mais le rapport de réduction, et la vitesse/couple sont vraiment déterminants).
http://storkdrives.com/wp-content/ [...] ation8.pdf
 
(Après, tu peux prendre des motoréducteurs à 2EUR au pif sur Alitruc et déformer les engrenages puis cramer le bobinage :o).


---------------
Si tu bois froid juste après le potage chaud, ça va faire sauter l'émail de tes dents - Monorailcat iz ohverin
mood
Publicité
Posté le 20-06-2019 à 15:56:50  profilanswer
 

n°263672
Turkleton
I don't quite understand you
Posté le 03-07-2019 à 15:17:42  profilanswer
 

J'ai l'entrée d'un ESP8266 (donc 3.3V) déclarée en INPUT_PULLUP. Je fais contact entre cette entrée et le GND avec un "fil de fer conducteur" (quand je veux activer la chevillette pour faire choir la bobinette :o ). Jusque là rien de spécial.
 
Mais si ce fil de fer est mouillé, quel est le risque ? Je précise que rien d'autre n'est en contact, uniquement ce fil conducteur et les bornes reliées à mon ESP.


---------------
If you think it could look good, then I guess it should
n°263674
rat de com​bat
attention rongeur méchant!
Posté le 03-07-2019 à 15:27:23  profilanswer
 

Euh... aucun risque? Je ne comprends pas. :o

n°263696
Turkleton
I don't quite understand you
Posté le 03-07-2019 à 18:12:40  profilanswer
 

Je demande qu'est-ce qui va se passer si je fais contact entre une entrée (en pull-up 3.3V) et la masse, avec un fil conducteur mouillé plutôt qu'avec un fil sec.
 
Est-ce que ça va réduire la résistance du fil, qui est déjà de 0 (ou alors elle est de quelques pouillèmes, et si on descend plus bas l'ampérage explose) ?
Est-ce que le courant va augmenter du fait de l'eau ?
 
C'est quoi concrètement qui se passe ?

Message cité 1 fois
Message édité par Turkleton le 03-07-2019 à 18:13:00

---------------
If you think it could look good, then I guess it should
n°263702
Natopsi
☄️Just end it already!☄️
Posté le 03-07-2019 à 19:31:33  profilanswer
 

Le seul risque c'est de la corrosion au niveau de l'endroit où tu fait ton contact  ;)


---------------
ACH/VDSHFRCoin◈1435mm⚡
n°263711
Turkleton
I don't quite understand you
Posté le 03-07-2019 à 20:04:39  profilanswer
 

Natopsi a écrit :

Le seul risque c'est de la corrosion au niveau de l'endroit où tu fait ton contact  ;)

Cool, merci ! :)  


---------------
If you think it could look good, then I guess it should
n°263729
rat de com​bat
attention rongeur méchant!
Posté le 03-07-2019 à 21:57:55  profilanswer
 

Turkleton a écrit :

C'est quoi concrètement qui se passe ?

En pratique cela ne change absolument rien (sauf possibilité de corrosion). En théorie effectivement la résistance très faible du fil peut baisser si il est mouillé, mais il faudrait du matos très très précis pour le mesurer. Le courant qui sort de ton entrée est limité par le pullup qui a typiquement une valeur très élevée (genre 100k), donc même avec un fil supraconducteur (résistance 0,0 Ohm) le courant serait très limité. Pas de soucis donc.

n°263749
Turkleton
I don't quite understand you
Posté le 04-07-2019 à 08:40:37  profilanswer
 

;)  
 
(T'ain, j'ai signalé le post pourri ci-dessus hier et il y est toujours :D )


---------------
If you think it could look good, then I guess it should
n°263759
MilesTEG1
Posté le 04-07-2019 à 10:51:39  profilanswer
 

Bonjour,
Mon projet d'affichage déporté sur écran des données de ma station Netatmo prend une nouvelle direction.
 
Après avoir compris que je ne pourrais pas utiliser les deux écrans 3,5' que j'avais acheté sur mon arduino, j'ai décidé de n'en utiliser qu'un seul... puis je me suis dis que ce serait trop petit... donc qu'il me faudrait un plus grand écran, comme par exemple un écran 7p comme j'ai pu le voir sur un autre projet (en lien ci-dessous).
 
Je veux donc faire un mix entre ces deux projets :
Ecran permanent pour station Netatmo
Station méteo sur TFT 7 "
 
J'ai donc commandé un écran 7p avec son shield.
 
J'ai donc maintenant tout le matériel adéquat :
 


 
Pour contrôler l'écran il faut utiliser la bibliothèque UTFT.  
Pour les scripts PHP, j'utilise mon NAS Synology en tant que serveur web.
 
:) Avancement du projet :

  • :) Scripts PHP de récupération des données Netatmo/Openweathermap : OK  
  • :) Connexion au wifi via l'ESP826 : OK  
  • :) Récupération des données depuis l'arduino : OK  
  • :) Test de l'écran 7p : En cours...


 
 
La librairie UTFT disponible dans les fichiers fourni sur le site (buydisplay) où j'ai commandé l'écran fonctionne correctement et semble être une vieille version de celle de rinkydinkelectronics.
Problème, lorsque j'utilise la dernière version de rinkydinkelectronics, certaines couleurs sont inversées. J'ai l'impression que les sous-pixels rouge et bleu sont inversés.
La couleur VGA_RED donne un écran bleu avec la commande    myGLCD.fillScr ( VGA_RED );
La couleur VGA_BLUE donne un écran rouge avec la commande    myGLCD.fillScr ( VGA_BLUE );
La couleur VGA_LIME donne un écran vert avec la commande    myGLCD.fillScr ( VGA_LIME );
 
 
Voilà le code qui permet d'avoir ce qui est visible sur les vidéos, la seule chose qui change c'est la librairie UTFT :
 

Code :
  1. // Fichier pour tester les fonctions d'affichage
  2. #include <UTFT.h>
  3. #include <UTFT_Geometry.h>
  4. // Déclaration de l'écran LCD
  5. UTFT myGLCD ( SSD1963_800, 38, 39, 40, 41 ); // (byte model, int RS, int WR, int CS, int RST, int SER)
  6. UTFT_Geometry geo ( &myGLCD );
  7. extern unsigned int DC[];
  8. extern unsigned int DQ[];
  9. extern unsigned int GC[];
  10. extern unsigned int GD[];
  11. extern unsigned int NL[];
  12. extern unsigned int PC[];
  13. extern unsigned int PL[];
  14. extern unsigned int PQ[];
  15. void setup() {
  16.     // === INITIALISATOIN ===
  17.     Serial.begin ( 115200 );
  18.     Serial3.begin ( 115200 ); // baudrate par défaut de l'ESP8266
  19.     Serial.println ( F ( "===== DÉBUT DU SETUP =====" ) );
  20.     // On s'occupe de l'écran TFT
  21.     Serial.println ( F ( "Allumage de l'écran LCD..." ) );
  22.     myGLCD.InitLCD();
  23.     pinMode ( 8, OUTPUT );   //backlight
  24.     digitalWrite ( 8, HIGH ); //on
  25.     Serial.println ( F ( "Initialisation de l'écran LCD..." ) );
  26.     // -- Fin Affichage Heure
  27.     Serial.println ( F ( "===== FIN DU SETUP =====" ) );
  28. }
  29. void loop() {
  30.     // pour le moment rien dedans
  31.     myGLCD.clrScr();
  32.     myGLCD.fillScr ( 0, 255, 255 );
  33.     myGLCD.setFont ( Grotesk24x48 );
  34.     myGLCD.setBackColor ( VGA_TRANSPARENT );
  35.     myGLCD.setColor ( 0, 0, 0 );
  36.     myGLCD.print ( "RGB = 0,255,255 ---- CYAN", CENTER, 40  );
  37.     delay ( 2000 );
  38.     myGLCD.fillScr ( VGA_FUCHSIA );
  39.     myGLCD.setFont ( Grotesk24x48 );
  40.     myGLCD.setColor ( 0, 0, 0 );
  41.     myGLCD.print ( "VGA FUCHSIA", CENTER, 40  );
  42.     delay ( 2000 );
  43.     myGLCD.fillScr ( VGA_AQUA );
  44.     myGLCD.setFont ( Grotesk24x48 );
  45.     myGLCD.setColor ( 0, 0, 0 );
  46.     myGLCD.print ( "VGA AQUA", CENTER, 40  );
  47.     delay ( 2000 );
  48.     myGLCD.fillScr ( VGA_YELLOW );
  49.     myGLCD.setFont ( Grotesk24x48 );
  50.     myGLCD.setColor ( 0, 0, 0 );
  51.     myGLCD.print ( "VGA YELLOW", CENTER, 40  );
  52.     delay ( 2000 );
  53.     myGLCD.fillScr ( VGA_WHITE );
  54.     myGLCD.setFont ( Grotesk24x48 );
  55.     myGLCD.setColor ( 0, 0, 0 );
  56.     myGLCD.print ( "VGA WHITE", CENTER, 40  );
  57.     delay ( 2000 );
  58.     myGLCD.fillScr ( VGA_BLACK );
  59.     myGLCD.setFont ( Grotesk24x48 );
  60.     myGLCD.setColor ( 255, 255, 255 );
  61.     myGLCD.print ( "VGA BLACK", CENTER, 40  );
  62.     delay ( 2000 );
  63. }


 
 
Vidéo faite avec la vieille version de la librairie UTFT (celle du site d'achat de l'écran) : https://youtu.be/ftCt5gdrqM0
Vidéo faite avec la dernière version de la librairie UTFT (celle du site rinkydinkelectronics) : https://youtu.be/_BY800ZfGi0
 
 
Du coup je vais devoir utiliser la version le UTFT qui fonctionne, mais comme vous l'avez-vu dans les vidéos, l'affichage est moins rapide qu'avec la dernière version. Ce ne sera vraisemblablement pas un problème, mais bon...
Si quelqu'un de super calé pouvait me dire pourquoi il y a ces inversions avec la dernière version... je lui en serais reconnaissant...
 
 
 
 
Du coup, au-delà de ce petit soucis de couleurs, je suis en train de voir comment découper en zone l'écran, et ce que je vais vouloir afficher comme valeurs... et peut-être faire un petit graphique d'évolution de la température, ou pour les prévisions dans les prochains jours...
 
Voilà voilà.
++ Miles


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
n°263816
rat de com​bat
attention rongeur méchant!
Posté le 04-07-2019 à 18:59:26  profilanswer
 

Bon, j'ai mis du temps mais j'ai fini par trouver. Ton contrôleur LCD, il s'appelle SSD1963, a deux modes d'affichage: RGB et BGR. C'est là le soucis. Les gars de buydisplay ont silencieusement activé le mode BGR sans le documenter nul part. Si tu utilises la lib générique forcément le mode n'est pas activé.

 

Tu peux modifier les fichiers de la lib'? (Enfin en théorie bien sûr, en pratique faut savoir où la bestiole Arduino les stocke).
Il faut changer une ligne dans le fichier TFT/tft_drivers/ssd1963/800/initlcd.h:
Le code

Code :
  1. LCD_Write_COM(0x36);  //rotation
  2. LCD_Write_DATA(0x22);


devient

Code :
  1. LCD_Write_COM(0x36);  //rotation
  2. LCD_Write_DATA(0x2A);


(0x22 vs 0x2A)

 

Tu recompiles le tout (attention à bien recompiler TOUT, y compris la lib!!) et tu flashes. Ça marche?

Message cité 2 fois
Message édité par rat de combat le 04-07-2019 à 19:03:00
n°263824
MilesTEG1
Posté le 04-07-2019 à 19:55:34  profilanswer
 

rat de combat a écrit :

Bon, j'ai mis du temps mais j'ai fini par trouver. Ton contrôleur LCD, il s'appelle SSD1963, a deux modes d'affichage: RGB et BGR. C'est là le soucis. Les gars de buydisplay ont silencieusement activé le mode BGR sans le documenter nul part. Si tu utilises la lib générique forcément le mode n'est pas activé.
 
Tu peux modifier les fichiers de la lib'? (Enfin en théorie bien sûr, en pratique faut savoir où la bestiole Arduino les stocke).
Il faut changer une ligne dans le fichier TFT/tft_drivers/ssd1963/800/initlcd.h:
Le code

Code :
  1. LCD_Write_COM(0x36);  //rotation
  2. LCD_Write_DATA(0x22);


devient

Code :
  1. LCD_Write_COM(0x36);  //rotation
  2. LCD_Write_DATA(0x2A);


(0x22 vs 0x2A)
 
Tu recompiles le tout (attention à bien recompiler TOUT, y compris la lib!!) et tu flashes. Ça marche?


 [:implosion du tibia] Ho ! Va falloir que je teste ça :jap: milles mercis !
(j'avais pas précisé que le contrôleur était bien un ssd1963).
 
En voulant contacter l'auteur de la lib officielle sur rinkydinkelectronics, j'ai lu ceci :

Citation :

If you are using any SainSmart, MCUfriend, BuyDisplay or ElecFreak products at all; Do not bother contacting me. I refuse to help companies that are using my libraries commercially in violation of the free licenses.


Du coup, buydisplay ne respectent pas la licence (et/ou le travail) de rinkydinkelectronics... donc je me suis abstenu d'envoyer un message :o
 
je ne savais pas qu'il y avait 2 modes de fonctionnement RGB / BGR ... c'est con :o y a que le RGB de vrai :D
 
Quand j'aurais le temps de bricoler mon projet (probablement demain après midi), je tenterais la modif que tu proposes :)
 
En tout cas, merci beaucoup :jap:


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
n°263840
MilesTEG1
Posté le 04-07-2019 à 22:09:41  profilanswer
 

Et au fait, comment je recompile la librairie ??
Ça ne se fait pas tout seul lors de la compilation du projet via le logiciel Arduino ?


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
n°263908
rat de com​bat
attention rongeur méchant!
Posté le 05-07-2019 à 14:58:52  profilanswer
 

Je connais pas le logiciel Arduino. :o  Si il est intelligent il va voir que tu as modifié un fichier lib et le recompiler. Si il ne l'est pas il faut lui dire. En ligne de commande classique ça serait un truc genre make clean && make all.
Au pire tu peux mettre un faute de syntaxe dans le fichier et voir si tu as une erreur. Si oui il tente de recompiler le fichier. C'est crade mais efficace comme test. :o

 

edit: Une faute sur faute :o


Message édité par rat de combat le 05-07-2019 à 14:59:49
n°263912
jimbofarra​r
Poreux de la cafetière
Posté le 05-07-2019 à 15:10:07  profilanswer
 

MilesTEG1 a écrit :

Et au fait, comment je recompile la librairie ??
Ça ne se fait pas tout seul lors de la compilation du projet via le logiciel Arduino ?


Avec l’IDE arduino ça se fera tout seul


---------------
Bien des Shubs et des Zouls furent calcinés dans les profondeurs de l'énorme Sloar, en vérité, je vous le dis !
n°263917
MilesTEG1
Posté le 05-07-2019 à 16:31:23  profilanswer
 

Ok, nickel :)
merci


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
n°263918
MilesTEG1
Posté le 05-07-2019 à 16:37:27  profilanswer
 

D'ailleurs, petite question concernant les library.
Comme il y a plusieurs emplacements possible, comme le dossier d'installation du logiciel Arduino, ou le dossier contenant tous les projets, ou encore le dossier du projet lui-même, vous me confirmez que celle qui sera utilisée en priorité est bien celle qui sera dans le dossier du projet ? même si il y en a une autre du même nom dans un autre emplacement.

 

edit : rien à faire, ça ne prend pas en compte la library que j'ai mise dans le dossier du sketch...
.. Dossier-des-Sketchs/mon_sketch/libraries/UTFT/

 

Il faut que ce soit impérativement dans  : .. Dossier-des-Sketchs/libraries/UTFT/


Message édité par MilesTEG1 le 05-07-2019 à 16:53:58

---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
n°263936
MilesTEG1
Posté le 05-07-2019 à 19:14:13  profilanswer
 

rat de combat a écrit :

Bon, j'ai mis du temps mais j'ai fini par trouver. Ton contrôleur LCD, il s'appelle SSD1963, a deux modes d'affichage: RGB et BGR. C'est là le soucis. Les gars de buydisplay ont silencieusement activé le mode BGR sans le documenter nul part. Si tu utilises la lib générique forcément le mode n'est pas activé.
 
Tu peux modifier les fichiers de la lib'? (Enfin en théorie bien sûr, en pratique faut savoir où la bestiole Arduino les stocke).
Il faut changer une ligne dans le fichier TFT/tft_drivers/ssd1963/800/initlcd.h:
Le code

Code :
  1. LCD_Write_COM(0x36);  //rotation
  2. LCD_Write_DATA(0x22);


devient

Code :
  1. LCD_Write_COM(0x36);  //rotation
  2. LCD_Write_DATA(0x2A);


(0x22 vs 0x2A)
 
Tu recompiles le tout (attention à bien recompiler TOUT, y compris la lib!!) et tu flashes. Ça marche?


 
Alors, j'ai essayé la modification.
Les couleurs ne sont plus inversées, super :D Mais...  
Mais il y a une sorte de scintillement autour des caractères assez désagréables. Ce qui engendre avec des lignes un changement de couleur (j'ai pas pensé à faire une vidéo de ça).
 
 
Vidéos :
Avec la librairie UTFT de rinkydinkelectronics modifiée avec les instructions de rat de combat : https://youtu.be/dqGihjqGHSQ
Zoom sur le phénomène de scintillement : https://youtu.be/ynoxsJN7ifQ
 
Avec la librairie UTFT de BuyDigital : https://youtu.be/JIy6a3YzfEI
RAS. Le texte s'écrit pas super vite, mais aucun soucis de scintillement.
 
 
Edit : le petit code pour faire ces zones de couleurs ;)

Code :
  1. // Fichier pour tester les fonctions d'affichage
  2. #include <UTFT.h>
  3. #include <UTFT_Geometry.h>
  4. extern uint8_t Grotesk24x48[];
  5. // Déclaration de l'écran LCD
  6. UTFT myGLCD ( SSD1963_800, 38, 39, 40, 41 ); // (byte model, int RS, int WR, int CS, int RST, int SER)
  7. UTFT_Geometry geo ( &myGLCD );
  8. void setup() {
  9.     // === INITIALISATOIN ===
  10.     Serial.begin ( 115200 );
  11.     Serial3.begin ( 115200 ); // baudrate par défaut de l'ESP8266
  12.     Serial.println ( F ( "===== DÉBUT DU SETUP =====" ) );
  13.     // On s'occupe de l'écran TFT
  14.     Serial.println ( F ( "Allumage de l'écran LCD..." ) );
  15.     myGLCD.InitLCD();
  16.     pinMode ( 8, OUTPUT );   //backlight
  17.     digitalWrite ( 8, HIGH ); //on
  18.     Serial.println ( F ( "Initialisation de l'écran LCD..." ) );
  19.     // -- Fin Affichage Heure
  20.     Serial.println ( F ( "===== FIN DU SETUP =====" ) );
  21. }
  22. void loop() {
  23.     // pour le moment rien dedans
  24.     myGLCD.clrScr();
  25.     myGLCD.setBackColor ( VGA_TRANSPARENT );
  26.     myGLCD.setFont ( Grotesk24x48 );
  27.     int Ysize = myGLCD.getDisplayYSize();
  28.     int Xsize = myGLCD.getDisplayXSize();
  29.     Serial.print ( F ( "Taille de l'écran :  Xsize=" ) );
  30.     Serial.print ( Xsize );
  31.     Serial.print ( F ( "      Ysize=" ) );
  32.     Serial.println ( Ysize );
  33.     int table_couleurs[6] = {VGA_RED, VGA_LIME, VGA_BLUE, VGA_FUCHSIA, VGA_AQUA, VGA_YELLOW};
  34.     String table_couleurs_txt[6] = {"VGA_RED", "VGA_LIME = VERT", "VGA_BLUE", "VGA_FUCHSIA = Magenta", "VGA_AQUA = Cyan", "VGA_YELLOW"};
  35.     for ( int i = 0 ; i < 6 ; i++ ) {
  36.         myGLCD.setColor ( table_couleurs[i] );
  37.         myGLCD.fillRect ( 0, 0 + i * Ysize / 6, Xsize - 1, ( i + 1 ) * Ysize / 6 - 1 );
  38.         myGLCD.setColor ( VGA_BLACK );
  39.         myGLCD.print ( table_couleurs_txt[i], CENTER, 20 + i * Ysize / 6  );
  40.     }
  41.     delay ( 10000 );
  42. }


Message édité par MilesTEG1 le 05-07-2019 à 19:29:27

---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
n°263940
rat de com​bat
attention rongeur méchant!
Posté le 05-07-2019 à 19:37:33  profilanswer
 

Je pense que ça c'est un problème séparé. Ma modification c'est vraiment qu'un seul bit pour changer BGR en RGB. Il y a peut-être/probablement d'autres choses à modifier dans la lib standard pour cet écran. J'essayerai d'y jeter un nouveau coup-d'oeil demain mais je ne peux rien promettre.

Message cité 1 fois
Message édité par rat de combat le 05-07-2019 à 19:39:56
n°263941
MilesTEG1
Posté le 05-07-2019 à 19:39:41  profilanswer
 

rat de combat a écrit :

Je pense que ça c'est un problème séparé. Ma modification c'est vraiment qu'un seul bit pour changer BGR en RGB. Il y a peut-être d'autres choses à modifier dans la lib standard pour cet écran. J'essayerai d'y jeter un nouveau coup-d'oeil demain mais je ne peux rien promettre.


C'est gentil  :jap: Si tu as un peu de temps, je veux bien, mais rien d'obligatoire.
Je peux utiliser la vieille version de BuyDisplay :) Même si l'écriture du texte est lente...  :pt1cable:  
En tout cas merci d'essayer  :jap:  :jap: [:athome]


Message édité par MilesTEG1 le 05-07-2019 à 19:40:12

---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
n°263977
MilesTEG1
Posté le 06-07-2019 à 10:15:45  profilanswer
 

Hello,
J'ai contacté le vendeur hier, dans l'espoir qu'ils me disent pourquoi ça marche pas super avec la dernière version.
Ils m'ont répondu :D
Avec la dernière version de rinky modifiée par leur soins.
Il fallait effectivement modifier le LCD_Write_DATA(0x22); en LCD_Write_DATA(0x2A);, mais aussi ajouter ce qui suit avant la setXY

Code :
  1. LCD_Write_COM(0xB8);
  2. LCD_Write_DATA(0x0f);    //GPIO is controlled by host GPIO[3:0]=output   GPIO[0]=1  LCD ON  GPIO[0]=1  LCD OFF
  3. LCD_Write_DATA(0x01);    //GPIO0 normal
  4. LCD_Write_COM(0xBA);
  5. LCD_Write_DATA(0x01);    //GPIO[0] out 1 --- LCD display on/off control PIN
 

Il y a aussi une légère modification d'une valeur avant tout ça...

 

Voilà une capture des deux versions.
A gauche la nouvelle version de BuyDisplay basée sur la dernière de Rinky, et à droite la dernière version de rinky (sans les modif de BuyDisplay) :
https://reho.st/medium/self/416b6a36cc4d4aff0e7a6468c19e6e90b8679f22.png

 


Du coup, plus de scintillement, et affichage rapide :D
Nickel :P
Je vais pouvoir retourner à l'affichage des données :D

 

Merci pour votre aide :jap:


Message édité par MilesTEG1 le 06-07-2019 à 10:16:23

---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
n°264007
rat de com​bat
attention rongeur méchant!
Posté le 06-07-2019 à 15:23:29  profilanswer
 

Oui, j'allais faire la même chose, à savoir comparer (encore) les initialisations. Bon ben plus rien à faire... :sleep:

n°264014
MilesTEG1
Posté le 06-07-2019 à 16:53:25  profilanswer
 

rat de combat a écrit :

Oui, j'allais faire la même chose, à savoir comparer (encore) les initialisations. Bon ben plus rien à faire... :sleep:


Yep :D
 
Faut que je me trouve/fasse un algorythme qui me permette de tracer une ligne (horizontale ou verticale) en pointillé entre deux points... (heureusement que je ne veux pas de diagonale  :pt1cable: )


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
n°264016
rat de com​bat
attention rongeur méchant!
Posté le 06-07-2019 à 17:51:50  profilanswer
 

Les lignes (pointillées) horizontales/verticales c'est juste une boucle avec un incrément >1 pixel. Pour les lignes diagonales 45° c'est simple aussi. Pour le reste tu regardes Algo de Bresenham (de mémoire).

n°264019
MilesTEG1
Posté le 06-07-2019 à 18:54:40  profilanswer
 

rat de combat a écrit :

Les lignes (pointillées) horizontales/verticales c'est juste une boucle avec un incrément >1 pixel. Pour les lignes diagonales 45° c'est simple aussi. Pour le reste tu regardes Algo de Bresenham (de mémoire).


Oh ! C'est complexe comme algorithme l'Algo de Bresenham :o

 

Je n'ai besoin de tracer que des verticales et des horizontales.
J'ai me suis fait ceci (avant de voir ta réponse) : Je peux paramétrer la longueur du trait tracé et de l'espace non tracé  :pt1cable:

Code :
  1. void Tracer_Ligne_Horiz_en_Pointille ( int X1, int X2, int Y, int COULEUR, int longueur, int espace ) {
  2.     // Fonction pour tracer une ligne horizontale en pointillés
  3.     // "longueur" est la taille en pixel du trait tracé
  4.     // "espace" est l'espace en pixel de l'espace entre deux traits tracés
  5.     // On va faire en sorte que X1 soit toujours < X2 pour faciliter l'algorythme
  6.     int variable_temp;
  7.     if ( X2 < X1 ) {
  8.         variable_temp = X1;
  9.         X1 = X2;
  10.         X2 = variable_temp;
  11.     }
  12.     int position_curseur = X1;
  13.     myGLCD.setColor ( COULEUR );
  14.     while ( position_curseur <= X2 ) {
  15.         if ( position_curseur + longueur > X2 ) { // La prochaine ligne dépassera la valeur de X2, on trace une ligne plus petite.
  16.             Serial.println ( F ( "--DEBUG Ligne pointillée" ) );
  17.             Serial.println ( F ( "--La prochaine ligne dépassera la valeur de X2, on trace une ligne plus petite." ) );
  18.             myGLCD.drawLine ( position_curseur, Y, X2, Y );  // On trace une ligne jusqu'à X2
  19.             break;
  20.         }
  21.         myGLCD.drawLine ( position_curseur, Y, position_curseur + longueur - 1, Y );  // On trace une ligne de jusqu'à position_curseur + longueur - 1          (-1 parce que sinon on a un px de trop)
  22.         position_curseur += longueur + espace;  // On déplace le curseur de la valeur px tracés + des espace px à ne pas tracer pour se placer au début de la prochaine ligne à tracer
  23.         if ( position_curseur > X2 ) { // Le curseur est déjà au-dela de X2, on ne trace donc rien ici...
  24.             Serial.println ( F ( "--DEBUG Ligne pointillée" ) );
  25.             Serial.println ( F ( "--Le curseur est déjà au-dela de X2, on ne trace donc rien ici..." ) );
  26.             break;
  27.         }
  28.     }
  29. }
  30. void Tracer_Ligne_Vert_en_Pointille ( int X, int Y1, int Y2, int COULEUR, int longueur, int espace ) {
  31.     // Fonction pour tracer une ligne verticale en pointillés
  32.     // "longueur" est la taille en pixel du trait tracé
  33.     // "espace" est l'espace en pixel de l'espace entre deux traits tracés
  34.     // On va faire en sorte que Y2 soit toujours < Y2 pour faciliter l'algorythme
  35.     int variable_temp;
  36.     if ( Y2 < Y1 ) {
  37.         variable_temp = Y1;
  38.         Y1 = Y2;
  39.         Y2 = variable_temp;
  40.     }
  41.     int position_curseur = Y1;
  42.     myGLCD.setColor ( COULEUR );
  43.     while ( position_curseur <= Y2 ) {
  44.         if ( position_curseur + longueur > Y2 ) { // La prochaine ligne dépassera la valeur de Y2, on trace une ligne plus petite.
  45.             Serial.println ( F ( "--DEBUG Ligne pointillée" ) );
  46.             Serial.println ( F ( "--La prochaine ligne dépassera la valeur de Y2, on trace une ligne plus petite." ) );
  47.             myGLCD.drawLine ( X, position_curseur, X, Y2 );  // On trace une ligne jusqu'à Y2
  48.             break;
  49.         }
  50.         myGLCD.drawLine ( X, position_curseur, X, position_curseur + longueur - 1 );  // On trace une ligne de jusqu'à position_curseur + longueur - 1          (-1 parce que sinon on a un px de trop)
  51.         position_curseur += longueur + espace;  /// On déplace le curseur de la valeur px tracés + des espace px à ne pas tracer pour se placer au début de la prochaine ligne à tracer
  52.         if ( position_curseur > Y2 ) { // Le curseur est déjà au-dela de Y2, on ne trace donc rien ici...
  53.             Serial.println ( F ( "--DEBUG Ligne pointillée" ) );
  54.             Serial.println ( F ( "--Le curseur est déjà au-dela de Y2, on ne trace donc rien ici..." ) );
  55.             break;
  56.         }
  57.     }
  58. }
 

Et le rendu est pas mal :
https://reho.st/medium/self/205b91a9e99b9471ccae25fc1558328d2e6f017d.jpg

 


(pour tracer les autres lignes pleines, je me suis aidé d'un tracé sous paint.net réalisé après avoir fait un schéma sur un papier :) pour avoir facilement les coordonnées )
 https://reho.st/self/c93a6e6d2020ec8c46cc7ef83340be75f3749b59.png


Message édité par MilesTEG1 le 06-07-2019 à 18:59:17

---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
n°264197
MilesTEG1
Posté le 08-07-2019 à 14:21:26  profilanswer
 

Hello,
Dites, je me suis créé une fonction qui centre un texte dans une zone définie passée en arguments.
j'ai mis aussi un argument pour la couleur du texte.  
Je souhaiterais mettre un autre argument mais facultatif... (pour la couleur de fond, par défaut transparente).
Mais je ne sais pas trop comment faire... Ce que je lis sur le net me parait étrange...
Vous procédez comment vous ?
 
Voilà le code de cette fonction :

Code :
  1. void Centrer_Texte_dans_Zone ( String _texte, int Y, int X1, int X2, int COULEUR ) {
  2.     // Fonction pour afficher du texte centré horizontalement dans une zone définie par X1 et X2
  3.     // On va faire en sorte que X1 soit toujours < X2 pour faciliter l'algorythme
  4.     int X;
  5.     if ( X2 > X1 ) {
  6.         X = X1 + ( X2 - X1 + 1 - _texte.length() * myGLCD.getFontXsize() ) / 2;
  7.     }
  8.     else {
  9.         X = X2 + ( X1 - X2 - myGLCD.getFontXsize() ) / 2;
  10.     }
  11.     if ( X <= 0 ) {
  12.         Serial.print ( F ( "-- Erreur dans le fonction Centrer_Texte_dans_Zone : la valeur calculée de X est négative ou nulle, elle vaut :" ) );
  13.         Serial.println ( X );
  14.     }
  15.     else {
  16.         myGLCD.setColor ( COULEUR );
  17.         myGLCD.print ( _texte, X, Y );
  18.     }
  19. }


 
 
Merci d'avance
++ Miles
 
 
edit : autre question concernant les fonctions.
Cette fonctionne actuellement avec une chaine de caractère en paramètre.
Comment faire pour l'utiliser aussi pour un nombre entier ? Ou un Float ?
Pour écrire un entier il faut utiliser myGLCD.printNumI ()
et pour écrire un float, il faut myGLCD.printNumF ()

Message cité 1 fois
Message édité par MilesTEG1 le 08-07-2019 à 14:27:56

---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
n°264470
Turkleton
I don't quite understand you
Posté le 10-07-2019 à 19:08:27  profilanswer
 

Ôtez-moi d'un doute : y'a pas de risque pour une Arduino de lui envoyer sur une entrée du 5V provenant d'une autre source, afin d'activer cette entrée (avec les GND reliés bien sûrs) ?


---------------
If you think it could look good, then I guess it should
n°264476
rat de com​bat
attention rongeur méchant!
Posté le 10-07-2019 à 19:19:16  profilanswer
 

Aucun risque si (!) ton Arduino fonctionne en 5V aussi. Attention aussi, il ne faut pas envoyer 5V si l'Arduino lui-même n'est pas alimenté (alimentation du AVR à travers ses diodes de protection). Une résistance série 1k-100k peut éviter des dégâts si tu bricoles. ;)

n°264481
Turkleton
I don't quite understand you
Posté le 10-07-2019 à 20:25:59  profilanswer
 

Cool, merci pour cette réponse (qui va même plus loin que ma question ! :D )
 
J'essaye de faire ça entre une UNO (5V) et un NodeMCU (3.3V), en utilisant un level shifter entre les deux. Mais autant la comm NodeMCU vers UNO fonctionne bien, autant dans l'autre sens y'a rien… Vous auriez déjà eu ce problème ?


---------------
If you think it could look good, then I guess it should
n°264482
rat de com​bat
attention rongeur méchant!
Posté le 10-07-2019 à 20:40:52  profilanswer
 

C'est quoi comme liaison? (série, SPI, I2C, ...) C'est quel level-shifter? Tu as mesuré les tensions? (Tu définis les broches comme GPIO, tu les mets à 0/1 et tu vérifies la tension DC au multimètre) Schéma? Code?


Message édité par rat de combat le 10-07-2019 à 20:41:19
n°264483
Turkleton
I don't quite understand you
Posté le 10-07-2019 à 20:49:47  profilanswer
 

C'est un modèle comme ça : https://www.aliexpress.com/item/5pc [...] 04980.html
https://ae01.alicdn.com/kf/HTB1ZIrkPFXXXXXdXVXXq6xXFXXXs/5pcs-lot-4-channel-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-5V-to-3-3V.jpg_640x640.jpg
 
J'ai pas pensé au multimètre, je vais déjà essayer ça ouais :D


---------------
If you think it could look good, then I guess it should
n°264484
rat de com​bat
attention rongeur méchant!
Posté le 10-07-2019 à 20:51:00  profilanswer
 

Tu as fait attention aux indications "high side" (5V) / "low side" (3.3V)? Tu as bien branché les deux tensions sur le module?

n°264487
crepator4
Deus ex machina
Posté le 10-07-2019 à 21:31:05  profilanswer
 

Tiens j'ai acheté recemment le meme "convertisseur" :D (5 jours a venir sur ebayfr)

 

(Et je l'ai pas encore essayé , message parfaitement utile donc :o )

Message cité 1 fois
Message édité par crepator4 le 10-07-2019 à 21:34:08

---------------
...survivre à ses Medecins...
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  182  183  184  ..  262  263  264  265  266  267

Aller à :
Ajouter une réponse
 

Sujets relatifs
* Réparations de vos appareils électroniques & electromenager * 
Plus de sujets relatifs à : [arduino] Topic Unique blabla @ Arduino


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR