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

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  229  230  231  ..  278  279  280  281  282  283
Auteur Sujet :

[arduino] Topic Unique blabla @ Arduino

n°377041
Lermite
Posté le 12-07-2022 à 18:25:06  profilanswer
 

Reprise du message précédent :
Une question honteuse de noob sur le hardware  :pfff:  
Les connexions à mon Arduino Mega sont pour l'instant "assurées" par les fils d'un vieux câble ethernet récupéré je ne sais où à la préhistoire  [:panzemeyer]  
Ca fonctionne mais ces fils me paraissent bien minces par rapport aux connecteurs  :heink:  
 
https://i.ibb.co/gwPpFqL/20220712-181538-8-4-300.jpg
 
Existerait-il un connecteur mono-broche, voire à deux broches, réellement adapté à ces connecteurs?  :??:
 
Rassurez-vous, le montage actuel est provisoire.
Le définitif attendra que tous les capteurs prévus soient en place. L'ensemble sera alors dans un boîtier fermé, mais ça fera toujours peur à voir à l'intérieur  :D


Message édité par Lermite le 12-07-2022 à 18:27:05
mood
Publicité
Posté le 12-07-2022 à 18:25:06  profilanswer
 

n°377046
rat de com​bat
attention rongeur méchant!
Posté le 12-07-2022 à 18:59:29  profilanswer
 

Il y a les connecteurs dit "Dupont", mais en principe ils sont à sertir donc faut une pince adaptée et potentiellement chère. Après pour du bricolage perso on doit pouvoir les souder ou alors tu prends des barrettes (?) Dupont mâles que tu coupes (à la pince coupante c'est très facile) et tu soudes tes fils dessus. Perso je fais comme ça.

Message cité 2 fois
Message édité par rat de combat le 12-07-2022 à 19:00:25
n°377047
Lermite
Posté le 12-07-2022 à 19:15:29  profilanswer
 

rat de combat a écrit :

Il y a les connecteurs dit "Dupont", mais en principe ils sont à sertir donc faut une pince adaptée et potentiellement chère. Après pour du bricolage perso on doit pouvoir les souder ou alors tu prends des barrettes (?) Dupont mâles que tu coupes (à la pince coupante c'est très facile) et tu soudes tes fils dessus. Perso je fais comme ça.

Excellent, merci  :jap:  
Les sertissage requérant une pince spécifique ne m'ont jamais arrêté dans le sens où j'y arrive toujours avec une de mes pinces (coupantes, plates, multiprise, étau,..), même si le résultat est évidemment plus approximatif  [:briseparpaing]  
Et au pire, effectivement, une soudure et c'est plié.

n°377048
crazytiti
http://crazytiti.free.fr/
Posté le 12-07-2022 à 19:19:32  profilanswer
 

Pour avoir une version chinoise de la pince à dupont je trouve ça kif kif avec la pince à bec classique une fois qu'on a le coup de main.


Message édité par crazytiti le 12-07-2022 à 19:19:52

---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°377054
rat de com​bat
attention rongeur méchant!
Posté le 12-07-2022 à 19:46:06  profilanswer
 

J'ai dans mes favoris un lien Ali pour une pince IWISS IWS-3220 que quelqu'un avait conseillé dans ce forum (me souviens plus qui). Elle est en promo pour encore un jour, je me demande si c'est une bonne affaire. En effet j'avais récemment pris un kit de connecteurs Dupont et avoir une pince adaptée serait quand même plus facile que devoir bricoler avec la pince plate ou le fer à souder... En même temps c'est 31€ quand même... (Oui, pour une pince à sertir c'est certainement pas cher, mais c'est 31€ quoi... :o ).

 

EDIT: Ce kit que je n'ai pas encore testé, donc je ne peux rien dire sur la qualiteuh! https://www.aliexpress.com/item/32818460747.html

 

EDIT2: J'ai un doute, je pense plutôt que j'avais trouvé la réf de cette pince dans un article HaD. :o


Message édité par rat de combat le 12-07-2022 à 19:53:56
n°377072
SuperSic
Posté le 12-07-2022 à 21:17:28  profilanswer
 

Il y a un TU ESP32 (& cie) ou on peut en parler ici ?


---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
n°377083
Lermite
Posté le 12-07-2022 à 22:38:39  profilanswer
 

SuperSic a écrit :

Il y a un TU ESP32 (& cie) ou on peut en parler ici ?


Dans la mesure où il peut être programmé avec Arduino Studio, je pense qu'il est en phase avec le thème du topic.
Je l'ai déjà sollicité au sujet d'un ESP-01S et je n'ai pas été fusillé  :D

n°377086
crepator4
Deus ex machina
Posté le 12-07-2022 à 23:12:49  profilanswer
 

rat de combat a écrit :

Il y a les connecteurs dit "Dupont", mais en principe ils sont à sertir donc faut une pince adaptée et potentiellement chère. Après pour du bricolage perso on doit pouvoir les souder ou alors tu prends des barrettes (?) Dupont mâles que tu coupes (à la pince coupante c'est très facile) et tu soudes tes fils dessus. Perso je fais comme ça.

 

je m'emmerde plus j'achete les lots sur la bay ou mamazon :
https://www.amazon.fr/Elegoo-Breadb [...] 01JD5WCG2/

 

en 10 et 20cm , sinon les header/barrete dupont +soudure aussi , dont le contact electrique me semble plus franc , selon ce qui a à cabler

  


Message cité 1 fois
Message édité par crepator4 le 12-07-2022 à 23:13:22

---------------
...survivre à ses Medecins...
n°377090
Aline BOQS
Alsacobéquois.
Posté le 13-07-2022 à 05:16:08  profilanswer
 

crepator4 a écrit :


 
je m'emmerde plus j'achete les lots sur la bay ou mamazon :
https://www.amazon.fr/Elegoo-Breadb [...] 01JD5WCG2/


+1
Ouaip, pareil.
Ce qui fait que j'ai toujours un peu de stock d'avance => ces trucs-là finissent toujours par être utiles tôt ou tard.
 
"Mieux vaut les avoir quand j'en ai pas besoin, que pas les avoir quand j'en ai besoin"  [:maxvirtuel]


---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°377123
calagan57
BF3 : calagan57
Posté le 13-07-2022 à 16:12:21  profilanswer
 

Hello à tous!
 
Ya des connaisseurs en Fritzing?
 
J'ai créé un composant pour mon projet AS5600  :jap: à partir d'un composant ayant le même nombre de pin (connu sur le net)
Au niveau "platine essai" ça fonctionne  :jap:  
 
https://rehost.diberie.com/Picture/Get/r/79651
 
Par contre au niveau "schematic" pas moyen d'avoir les 7 pins d'attribuées malgré avoir nommé les "propriétés objet" dans inkscape... il y a une pin qu'il ne veut pas prendre (même la sélection graphique ne fonctionne pas... :sweat: )
https://rehost.diberie.com/Picture/Get/r/79652
 
Une idée?  
 
Je partage mon svg si vous avez le temps de regarder  ;)  
https://www.transfernow.net/dltrans [...] t_fritzing
 
ùoi qui était tout content d'avoir réussi la première étape... [:tinostar]  
 
Merci à vous!


---------------
Waterbox
mood
Publicité
Posté le 13-07-2022 à 16:12:21  profilanswer
 

n°377132
rat de com​bat
attention rongeur méchant!
Posté le 13-07-2022 à 17:46:40  profilanswer
 

SuperSic a écrit :

Il y a un TU ESP32 (& cie) ou on peut en parler ici ?

Non, c'est ban direct. :o  
 
Bien sûr on peut en parler, ce sujet a été abordé ici pleins de fois déjà.

n°377340
SuperSic
Posté le 16-07-2022 à 14:42:33  profilanswer
 

:hello:
 
Il y a un truc à la con qui me bloque sur ESP32/Arduino. [:vizera]
 
J'ai récupéré un tuto pour avoir une synchro NTP ( https://randomnerdtutorials.com/esp [...] r-arduino/ , c'est le même code sur la plupart des sites quand on cherche ce type de toto :sleep: ).
 
La synchro NTP fonctionne bien : j'ai la bonne date/heure en appelant la fonction printLocalTime().
Mon souci, c'est que je voudrais récupérer la date/heure sous forme de String pour la concaténer à l'intérieur d'un message mais je bloque à cause de la structure utilisée pour stocker l'heure avec cette libraire.
 
Une partie du code de la fonction printLocalTime()

Code :
  1. void printLocalTime(){
  2.   struct tm timeinfo;
  3.   if(!getLocalTime(&timeinfo)){
  4.     Serial.println("Failed to obtain time" );
  5.     return;
  6.   }
  7.   Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S" );
  8.   ...
  9. }


 
J'aimerais avoir un message du style : "mon message 16/07/2022 14:40:00".
 
Vous captez comment utiliser cette structure/variable timeinfo pour faire ça ?
 
:jap:


Message édité par SuperSic le 16-07-2022 à 14:43:29

---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
n°377348
rat de com​bat
attention rongeur méchant!
Posté le 16-07-2022 à 16:27:11  profilanswer
 

T'as sprintf sur ton bidule?

 
Code :
  1. char buf[TAILLE_BUFFER];
  2. sprintf(buf, "mon message %02d/%02d/%04d %02d:%02d:%02d", timeinfo.tm_mday, timeinfo.tm_mon+1, tminfo.tm_year+1900, timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);


https://cplusplus.com/reference/ctime/tm/

 

Après ça c'est du C, en C++/Arduino doit y avoir plus élégant peut-être mais connais pas moi. :o

 

Si t'as pas sprintf on peut se débrouiller avec itoa ou au pire un truc 100% custom.

Message cité 1 fois
Message édité par rat de combat le 16-07-2022 à 16:32:43
n°377522
calagan57
BF3 : calagan57
Posté le 18-07-2022 à 22:04:52  profilanswer
 

Hello!
 
J'avance tout doucement sur mon joystick... :sweat:  
 
Utilisation de capteur AS5600 en I2C et d'un écran OLD SSD1306 pour lire l'angle instantanément.
 
Bah ça fonctionne  [:heyk]  
https://youtube.com/shorts/TWVtyDXR1q0?feature=share
 

Citation :


#include "AS5600.h"
#include "Wire.h"
#include <Adafruit_SSD1306.h> // Appelle libraire
 
AS5600 as5600;   //  use default Wire
Adafruit_SSD1306 ecranOLED(128, 64, &Wire, -1); // Instanciation
 
 
void setup()
{
  ecranOLED.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  ecranOLED.clearDisplay();
  Serial.begin(115200);
  Wire.begin();
  as5600.begin(4);  //  set direction pin.
  as5600.setDirection(AS5600_CLOCK_WISE);  // default, just be explicit.
}
 
 
void loop()
{
 ecranOLED.setTextColor(WHITE); ecranOLED.clearDisplay();
 
  ecranOLED.setTextSize(2); ecranOLED.setCursor(30,0); ecranOLED.print("Degre" );
  ecranOLED.setTextSize(3); ecranOLED.setCursor(20,30);
  ecranOLED.print(as5600.rawAngle() * AS5600_RAW_TO_DEGREES);
  ecranOLED.display();
   
 
  Serial.print(as5600.readAngle());
  Serial.print("\t" );
  Serial.println(as5600.rawAngle() * AS5600_RAW_TO_DEGREES);
 
  delay(5);
}


 
Prochaine étape j'ajoute un multiplexer TCA9548A car AS5600 en I2C ça va pas aller  :pt1cable: (je ne ne ferai pas de multiplexage I2C soft car j'ai déjà le TCA9548A  :D )
 
par contre j'ai un peu de mal à comprendre comment "transposer" ma commande "ecranOLED.print(as5600.rawAngle() * AS5600_RAW_TO_DEGREES);" avec le multiplexer  [:sateeva:2]  
 
Aller inondez moi de votre savoir  :D  
 
 :hello:  
 


---------------
Waterbox
n°377526
rat de com​bat
attention rongeur méchant!
Posté le 18-07-2022 à 22:14:25  profilanswer
 

calagan57 a écrit :

par contre j'ai un peu de mal à comprendre comment "transposer" ma commande "ecranOLED.print(as5600.rawAngle() * AS5600_RAW_TO_DEGREES);" avec le multiplexer  [:sateeva:2]

J'ai pas regardé la doc du multiplexeur, mais en principe - vu qu'on parle Arduino :o - il faudra une lib' dédiée et probablement aussi pouvoir dire à la lib' pour l'OLED de passer par l'autre lib' multiplexeur. Autrement dit c'est pas gagné. Après je ne connais pas ton niveau en code, si tu sais faire une lib' toi-même ça devrait aller. Je regarderais la doc du multiplexeur pour t'en dire plus si tu veux.

 

EDIT: Ton message est en double, tu peux en supprimer un?

Message cité 1 fois
Message édité par rat de combat le 18-07-2022 à 22:15:01
n°377534
crazytiti
http://crazytiti.free.fr/
Posté le 18-07-2022 à 23:32:12  profilanswer
 

crazytiti a écrit :

J'ai lu la doc vite fait, ça ressemble à une espece de gros relai.
Donc en gros
1) tu adresse le TCA en lui disant quel chemin tu veux activer
2) tu adresse ton AS5600 comme si il était directement branché
3) tu adresse le TCA avec un autre chemin
4) tu adresse ton Oled comme s'il était directement branché.

 

=> ca veut dire que tu structure ton code pour savoir quand tu a besoin d’accéder à tel ou tel périph I2C

 

exemple avec ton setup et une méthode que je viens d'inventer   TCA.set_channel(n);

 
Code :
  1. void setup()
  2. {
  3.   TCA.set_channel(1);
  4.   ecranOLED.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  5.   ecranOLED.clearDisplay();
  6.   Serial.begin(115200);
  7.   TCA.set_channel(2);
  8.   Wire.begin();
  9.   as5600.begin(4);  //  set direction pin.
  10.   as5600.setDirection(AS5600_CLOCK_WISE);  // default, just be explicit.
  11. }
 

Edit : pour ta commande
ecranOLED.print(as5600.rawAngle() * AS5600_RAW_TO_DEGREES);
Il faut la découper en 2 en utilisant une variable (j'imagine que ton angle est un float) :

 

TCA.set_channel(2);
float valeur = as5600.rawAngle() * AS5600_RAW_TO_DEGREES;
TCA.set_channel(1);
ecranOLED.print(valeur );

Message cité 1 fois
Message édité par crazytiti le 18-07-2022 à 23:34:27

---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°377540
calagan57
BF3 : calagan57
Posté le 19-07-2022 à 07:03:39  profilanswer
 

rat de combat a écrit :

J'ai pas regardé la doc du multiplexeur, mais en principe - vu qu'on parle Arduino :o - il faudra une lib' dédiée et probablement aussi pouvoir dire à la lib' pour l'OLED de passer par l'autre lib' multiplexeur. Autrement dit c'est pas gagné. Après je ne connais pas ton niveau en code, si tu sais faire une lib' toi-même ça devrait aller. Je regarderais la doc du multiplexeur pour t'en dire plus si tu veux.
 
EDIT: Ton message est en double, tu peux en supprimer un?


 
Hello!
 
merci pour ton retour  :jap: . En fait je pensais aussi qu'il faille une librairie "TCA9548A" mais en fait non c'est un simple "aiguillage/routage" à faire (enfin quand je dis simple c'est qu'il n'y a pas de librairie quoi  :lol: )  
 

crazytiti a écrit :


 
exemple avec ton setup et une méthode que je viens d'inventer   TCA.set_channel(n);
 

Code :
  1. void setup()
  2. {
  3.   TCA.set_channel(1);
  4.   ecranOLED.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  5.   ecranOLED.clearDisplay();
  6.   Serial.begin(115200);
  7.   TCA.set_channel(2);
  8.   Wire.begin();
  9.   as5600.begin(4);  //  set direction pin.
  10.   as5600.setDirection(AS5600_CLOCK_WISE);  // default, just be explicit.
  11. }


 
Edit : pour ta commande  
ecranOLED.print(as5600.rawAngle() * AS5600_RAW_TO_DEGREES);
Il faut la découper en 2 en utilisant une variable (j'imagine que ton angle est un float) :
 
TCA.set_channel(2);
float valeur = as5600.rawAngle() * AS5600_RAW_TO_DEGREES;
TCA.set_channel(1);
ecranOLED.print(valeur );


 
Super merci d'avoir pris le temps de regarder! je teste ça ce soir  :jap:  


---------------
Waterbox
n°377542
rat de com​bat
attention rongeur méchant!
Posté le 19-07-2022 à 07:40:38  profilanswer
 

Attention, le code de crazytiti ne va pas compiler puisqu'il dit avoir inventé la méthode TCA.set_channel(). Au pire si tu t'en sors pas j'essayerai à mon tour de regarder ce soir, dans la journée j'aurais pas le temps aujourd'hui.

n°377557
calagan57
BF3 : calagan57
Posté le 19-07-2022 à 13:37:51  profilanswer
 

merci c'est sympa à vous  :jap:  je veux bien un peu d'aide  :whistle:  
 
je pense ajouter le multiplexeur comme ceci (en tenant compte de vos remarques) (je ne suis pas devant l'arduino là  :whistle: ):

Citation :

#include "AS5600.h"
#include "Wire.h"
#include <Adafruit_SSD1306.h>
 
AS5600 as5600;  
Adafruit_SSD1306 ecranOLED(128, 64, &Wire, -1);  
 
 
void TCA9548A(uint8_t bus){
  Wire.beginTransmission(0x70);  // TCA9548A address is 0x70
  Wire.write(1 << bus);          // send byte to select bus
  Wire.endTransmission();
  Serial.print(bus);
}

 
void setup()
{
Serial.begin(115200);
Wire.begin();
 
TCA9548A(regarder le port OLED) ;
ecranOLED.begin(SSD1306_SWITCHCAPVCC, 0x3C);
ecranOLED.clearDisplay();

TCA9548A(regarder le port AS5600) ;

as5600.begin(4); // set direction pin.
as5600.setDirection(AS5600_CLOCK_WISE); // default, just be explicit.
}
 
 
void loop()
{
 
TCA9548A(regarder le port AS5600) ;
 
float valeur = as5600.rawAngle() * AS5600_RAW_TO_DEGREES;
 
TCA9548A(regarder le port OLED)
;
ecranOLED.setTextColor(WHITE); ecranOLED.clearDisplay();
ecranOLED.setTextSize(2); ecranOLED.setCursor(30,0); ecranOLED.print("Degre" );
ecranOLED.setTextSize(3); ecranOLED.setCursor(20,30);
ecranOLED.print(valeur);
ecranOLED.display();
 
 
Serial.print(as5600.readAngle());
Serial.print("\t" );
Serial.println(as5600.rawAngle() * AS5600_RAW_TO_DEGREES);
 
delay(5);
}
 

 
 
ça vous semble correct? :whistle:  
 
Le truc qui me chipote c'est qu'à aucun moment j'ai rentré l'adresse hex du AS5600  :pt1cable:


Message édité par calagan57 le 19-07-2022 à 13:39:27

---------------
Waterbox
n°377572
crazytiti
http://crazytiti.free.fr/
Posté le 19-07-2022 à 15:00:58  profilanswer
 

Vu que le as5600 a une adresse fixe elle doit être en dur dans sa library...


---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°377573
calagan57
BF3 : calagan57
Posté le 19-07-2022 à 15:07:45  profilanswer
 

crazytiti a écrit :

Vu que le as5600 a une adresse fixe elle doit être en dur dans sa library...


 
 [:toji] vu comme ça ma question parait soudainement  très conne  :lol:  
 
merci pour le recadrage  :D  :jap:


Message édité par calagan57 le 19-07-2022 à 15:13:48

---------------
Waterbox
n°377586
calagan57
BF3 : calagan57
Posté le 19-07-2022 à 18:27:34  profilanswer
 

Re!
 
Bon je suis tout ému j'ai réussi (après moult essais  :o ) mon premier sketch!! [:volta]  
 
https://rehost.diberie.com/Picture/Get/t/80309
 
https://youtube.com/shorts/7D1xkdOz-ck?feature=share

Citation :

#include "AS5600.h"
#include "Wire.h"
#include <Adafruit_SSD1306.h> // Appelle libraire
 
AS5600 as5600;   //  use default Wire
Adafruit_SSD1306 ecranOLED(128, 64, &Wire, -1); // Instanciation
 
 
void TCA9548A(uint8_t bus){
  Wire.beginTransmission(0x70);  // TCA9548A address is 0x70
  Wire.write(1 << bus);          // send byte to select bus
  Wire.endTransmission();
  Serial.print(bus);
}
 
void setup()
{
 
  Serial.begin(115200);
  Wire.begin();
   
  TCA9548A(1);
  ecranOLED.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  ecranOLED.clearDisplay();
 
  TCA9548A(0);
  as5600.begin(4);  //  set direction pin.
  as5600.setDirection(AS5600_CLOCK_WISE);  // default, just be explicit.
 
   TCA9548A(2);
  as5600.begin(4);  //  set direction pin.
  as5600.setDirection(AS5600_CLOCK_WISE);  // default, just be explicit.
}
 
 
void loop()
{
 
  TCA9548A(0) ;
  word valeurY = as5600.readAngle();
 
  TCA9548A(2) ;
  word valeurX = as5600.readAngle();
 
  TCA9548A(1);
  ecranOLED.setTextColor(WHITE); ecranOLED.clearDisplay();
  ecranOLED.setTextSize(1); ecranOLED.setCursor(0,0); ecranOLED.print("Axe Y" );
  ecranOLED.setTextSize(1); ecranOLED.setCursor(0,20);
  ecranOLED.print(valeurY);
  ecranOLED.setTextSize(1); ecranOLED.setCursor(0,38); ecranOLED.print("Axe X" );
  ecranOLED.setTextSize(1); ecranOLED.setCursor(0,55);
  ecranOLED.print(valeurX);
  ecranOLED.display();
   
 
  Serial.print(valeurX);
  Serial.print("\t" );
  Serial.println(valeurY);
 
}


 
J'ai modifié aussi :
 
-supression de delay() (ça crée un input lag sinon, non?  :??: )
- changé la fonction "as5600.rawAngle()" en "as5600.readAngle()" ce qui me donne une valeur de 12bits (0 à 4096)  
- suite à ça j'ai changé le "float" en "word" pour économiser de la place j'ai bon non?  :o  
 
Prochaine étape:
 
- ajout de la librairie arduino "joystick 2.0" pour reconnaitre les 2 axes sous windows  [:klaus von braun:1]  
 
Si vous avez des conseils et remarques je suis preneur!  :jap:  
 
 :hello:


Message édité par calagan57 le 19-07-2022 à 18:34:20

---------------
Waterbox
n°377591
rat de com​bat
attention rongeur méchant!
Posté le 19-07-2022 à 19:18:10  profilanswer
 

Bravo pour t'être débrouillé. :jap:  
 
L'avantage du word (je suppose que c'est du uint16_t?) par rapport au float c'est surtout qu'il vaut mieux éviter les "gros" calculs, soit les float, sur les AVR. Un PC te fera la conversion en un rien du tout mais vraiment, un AVR est beaucoup plus lent et surtout il n'a pas de partie matérielle pour accélérer ce genre de calculs (FPU etc).

n°377594
calagan57
BF3 : calagan57
Posté le 19-07-2022 à 19:43:13  profilanswer
 

merci pour ton retour  :jap:  
 
Oui ça varie de  0 à 4096 seulement  :jap:  
 
Bon on passe à la libraire joystick  [:moonbloood:2]
 
Edit :
 
Je me permets de vous demander comment je pourrais faire ce montage et le code arduino (pour ouvrir/fermer 100ms)
https://rehost.diberie.com/Picture/Get/r/80320
 
En fait c'est pour programmer la résolution 12bits du capteur sur un angle (45° dans mon cas) au lieu des 360°  :jap:  
Ici la vidéo explicative (option B  ;) )
https://youtu.be/Dwc4hFgNP5I?t=126
 
Vous pensez que c'est jouable?
 
Merci!  :hello:


Message édité par calagan57 le 19-07-2022 à 20:01:27

---------------
Waterbox
n°377621
crazytiti
http://crazytiti.free.fr/
Posté le 19-07-2022 à 22:50:34  profilanswer
 

oui c'est possible.
Il faut que tu change l'état de ta pin d'arduino : si tu la met en entrée ça laisse libre et donc tu devrais pouvoir mesurer 5V avec un voltmetre comme sur leur dessin.
Après tu change l'état au niveau bas et tu met la pin en output avec un delay de 100ms puis tu remet en input.
 
Ps : chapeau pour ton premier sketch :)


---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°377979
SuperSic
Posté le 24-07-2022 à 19:42:50  profilanswer
 

rat de combat a écrit :

T'as sprintf sur ton bidule?
 

Code :
  1. char buf[TAILLE_BUFFER];
  2. sprintf(buf, "mon message %02d/%02d/%04d %02d:%02d:%02d", timeinfo.tm_mday, timeinfo.tm_mon+1, tminfo.tm_year+1900, timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);


https://cplusplus.com/reference/ctime/tm/
 
Après ça c'est du C, en C++/Arduino doit y avoir plus élégant peut-être mais connais pas moi. :o  
 
Si t'as pas sprintf on peut se débrouiller avec itoa ou au pire un truc 100% custom.


Désolé pour le temps de réponse, j'ai fait un break dans la programmation. Oui, il y a bien sprintf().
 
J'ai fait une fonction getLocalTime() pour retourner la date au format désirée.

Code :
  1. char* getLocalTime(){
  2.     char buffTime[50];
  3.    
  4.     struct tm timeinfo;
  5.     if(!getLocalTime(&timeinfo)){
  6.       Serial.println("Failed to obtain time" );
  7.       return "Failed to obtain time";
  8.     }
  9.  
  10.     sprintf(buffTime, "Door opened at %02d/%02d/%04d %02d:%02d:%02d", timeinfo.tm_mday, timeinfo.tm_mon+1, timeinfo.tm_year+1900, timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
  11.     return buffTime;
  12. }


 
Dans void loop(), j'ai une partie du code pour récupérer la date courante à partir de la fonction getLocalTime()

Code :
  1. void loop() {
  2.     ...
  3.     buffMessage = getLocalTime();
  4.     ...
  5. }


 
La variable buffMessage est déclarée comme ceci

Code :
  1. char buffMessage[50];


 
Mais quand je compile, j'ai une erreur [:vizera]

Citation :

incompatible types in assignment of 'char*' to 'char [50]'


 
Vu l'erreur, j'ai essayé de changer le type de retour de getLocalTime() de char* à char[]  mais j'obtiens une nouvelle erreur encore moins claire. :lol:

Citation :

too few arguments to function 'bool getLocalTime(tm*, uint32_t)'


 
Des suggestions ? :??:  
Je ne comprends pas d'où vient l'erreur.


---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
n°377982
rat de com​bat
attention rongeur méchant!
Posté le 24-07-2022 à 20:44:57  profilanswer
 

Attention! En C on ne peut pas assigner les tableaux avec l'opérateur "=" ou retourner un tableau depuis une fonction (pas sans astuce du moins). Et les chaînes de caractères bah c'est en fait des tableaux de char[]. Même si tu réussis à compiler ton code tu vas retourner un pointeur vers une variable locale qui n'existe plus, autrement dit tu vas droit dans le mur.

 

Vu que Arduino c'est du C++ tu devrais regarder String etc, il doit y avoir moyen de faire ce que tu veux de manière propre et élégante, mais je ne saurais t'aider. :o Bien sûr on peut aussi faire en C, mais comme je disais, vaut mieux utiliser les fonctionnalités C++ que propose Arduino.

 

EDIT: Je viens de remarquer aussi que ta propre fonction a le même nom que la fonction de la lib' -> collision! (voir pire si ça compile appel récursif infini -> boum!)


Message édité par rat de combat le 24-07-2022 à 21:34:11
n°377993
SuperSic
Posté le 25-07-2022 à 09:22:28  profilanswer
 

Ah ouais, la joie des langages "bas niveau/typé" :D
 
J'ai réussi à faire fonctionner le code en jouant avec les String et les char[]. Merci :jap:
 
getLocalTime()

Code :
  1. String getLocalTime(){
  2.     char buffTime[50];
  3.    
  4.     struct tm timeinfo;
  5.     if(!getLocalTime(&timeinfo)){
  6.       Serial.println("Failed to obtain time" );
  7.       return "Failed to obtain time";
  8.     }
  9.  
  10.     sprintf(buffTime, "Door opened at %02d/%02d/%04d %02d:%02d:%02d", timeinfo.tm_mday, timeinfo.tm_mon+1, timeinfo.tm_year+1900, timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
  11.     Serial.print("getLocalTime() : " );
  12.     Serial.println(buffTime);
  13.     return (String)buffTime;
  14. }


 
La déclaration de buffMessage en String

Code :
  1. String buffMessage;


 
Et l'appel dans loop()

Code :
  1. void loop {
  2. buffMessage = getLocalTime();
  3.     Serial.println(buffMessage);
  4. }


 
Et en sortie, j'obtiens ce que je veux dans le buffer :)

Citation :

09:21:09.944 -> getLocalTime() : Door opened at 25/07/2022 07:21:09
09:21:09.944 -> Door opened at 25/07/2022 07:21:09


 
Pour ton Edit, je vais voir pour changer le nom de ma fonction.


---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
n°378044
rat de com​bat
attention rongeur méchant!
Posté le 25-07-2022 à 16:10:32  profilanswer
 

C'est pas parce que ça fonctionne que c'est correct. :o Tu utilises un cast, or ça il ne faut jamais le faire à moins de savoir exactement ce qu'on fait. Je dirais que ta solution est HB (et tu risques d'avoir une mauvaise surprise - ou pas selon ce qu'en fait le compilateur), il faudrait plutôt déclarer buffTime en String aussi et utiliser les fonctions C++ pour le "remplir". Mais comme je disais je ne saurais t'aider, je ne maîtrise pas le C++.
 
Sinon du moins en C une fonction qui ne prend aucun argument se déclare avec "void" entre les parenthèses. Et si je ne me trompe pas un compilateur C++ considère tout le prototype d'une fonction (donc nom + arguments + ce que la fonction retourne) pour les différencier, ça doit être pour ça que ton code compile malgré la collision de nom.
 
Par ailleurs, à ta place je vérifierais que tu as bien les warnings compilateur activé. Perso (et je ne suis plus un débutant en C je dirais :o ) je compile toujours avec -Wall -Wextra voir -Werror.

n°378258
calagan57
BF3 : calagan57
Posté le 28-07-2022 à 12:20:39  profilanswer
 

Hello!
 
Désolé pour le semi HS (mais j'utilise un arduino pour commander tout ça  :o )

 
 il y a des personnes qui maitrisent les logiciel de création PCB?  
J'ai soudé mes premiers CMS avec beaucoup de difficultés [:ane-trav:3] (le shift register  [:kirk_lee_hammett:10] )
https://rehost.diberie.com/Picture/Get/r/81361
Mais ça fonctionne!  :sol:  
 
Maintenant je cherche à faire le joystick gauche et donc à faire un miroir de ce PCB  :pt1cable:   Sur fusion le modèle 3D rien de plus simple mais pour le PCB (piste etc...) je ne sais pas du tout comment faire  :sweat:  
Une idée de comment faire ça? C'est fait sous fusion mais je peux récupérer les fichiers du PCB  :jap:  donc faire sur un autre logiciel  :jap:  
 
https://rehost.diberie.com/Picture/Get/r/81362
 
merci à vous pour votre aide!  
 


---------------
Waterbox
n°378261
crazytiti
http://crazytiti.free.fr/
Posté le 28-07-2022 à 13:47:27  profilanswer
 

J'ai jamais fait de pcb sous fusion (vielle école, kicad ...) mais il doit bien y avoir une fonction miroir quelque part ?
 
Par contre je vois qu'il y a des composants multi-pattes, ceux-là si tu fait miroir sur leur empreinte ça ne vas plus correspondre.
Je pense qu'il vaut mieux que tu refasse le pcb avec tes petits (gros ?) doigts.


---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°378262
calagan57
BF3 : calagan57
Posté le 28-07-2022 à 14:06:02  profilanswer
 

Merci pour ton retour  :jap:  
 
alors la réalisation du PCB n'est pas de moi  ;)  j'ai juste commandé le PCB et soudé  :D  Du coup je ne sais pas comment faire la modif (et si c'est possible) sous fusion 360  ;)  
 
Sous kicad ca serait possible? Je suis justement en train de regarder les vidéos Eric Peronnin sur kicad  ;)  
 
L'impératif est d'importer la forme du PCB et de placer les switch à un emplacement très précis  ;)  je peux récupérer les DWG/DXF pour les importer sur kicad?
 
merci  :hello:


---------------
Waterbox
n°378275
crazytiti
http://crazytiti.free.fr/
Posté le 28-07-2022 à 17:06:37  profilanswer
 

Je ne sais pas ...


---------------
Le PC est une drogue... Téléchargez mes modèles 3D pour que j'ai du filament gratuit :-D https://www.printables.com/fr/@Crazytiti_1456354
n°378279
rat de com​bat
attention rongeur méchant!
Posté le 28-07-2022 à 17:59:17  profilanswer
 

Il y a un sujet dédié PCB, peut-être il y a des gens qui savent? https://forum.hardware.fr/hfr/elect [...] _645_1.htm
 
Dans Kicad5 je ne trouve pas d'option pour importer du DXF à première vue, soit j'ai pas vu soit ce n'est pas possible. Après il y a Kicad6 aussi déjà.

n°378290
Natopsi
☄️Just end it already!☄️
Posté le 28-07-2022 à 21:39:42  profilanswer
 

T'as juste besoin du contour? Parce-que bon pour tout ce qui est composants et pistes ça va juste pas être possible le miroir.
 
Sinon te démerder pour créer un DXF avec la forme et tu as fichier>importer>graphique


Message édité par Natopsi le 28-07-2022 à 21:48:18

---------------
ACH/VDSHFRCoin◈1435mm⚡
n°378291
calagan57
BF3 : calagan57
Posté le 28-07-2022 à 21:53:28  profilanswer
 

Merci à vous!
 
 :jap:  
 
Merci pour le link du topic PCB  ;)  
 
Effectivement on peut importer un dxf avec contour et trous de perçage dans un calque "user.drawings" et on peut replacer les composants au bon endroit. Ensuite on refait un dxf qu'avec le contour que l'on place dans le calque Edge.cuts  :jap:
 
J'attaque l'autre pcb maintenant  [:cyd125:9]  
 


---------------
Waterbox
n°378293
SuperSic
Posté le 28-07-2022 à 22:56:28  profilanswer
 

rat de combat a écrit :

C'est pas parce que ça fonctionne que c'est correct. :o Tu utilises un cast, or ça il ne faut jamais le faire à moins de savoir exactement ce qu'on fait. Je dirais que ta solution est HB (et tu risques d'avoir une mauvaise surprise - ou pas selon ce qu'en fait le compilateur), il faudrait plutôt déclarer buffTime en String aussi et utiliser les fonctions C++ pour le "remplir". Mais comme je disais je ne saurais t'aider, je ne maîtrise pas le C++.
 
Sinon du moins en C une fonction qui ne prend aucun argument se déclare avec "void" entre les parenthèses. Et si je ne me trompe pas un compilateur C++ considère tout le prototype d'une fonction (donc nom + arguments + ce que la fonction retourne) pour les différencier, ça doit être pour ça que ton code compile malgré la collision de nom.
 
Par ailleurs, à ta place je vérifierais que tu as bien les warnings compilateur activé. Perso (et je ne suis plus un débutant en C je dirais :o ) je compile toujours avec -Wall -Wextra voir -Werror.


Pour l'instant, j'essaye de faire qqc de fiable et qui fonctionne. Pour la beauté du code, on verra après. :D


---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
n°378353
rat de com​bat
attention rongeur méchant!
Posté le 29-07-2022 à 17:28:15  profilanswer
 

Ouais... :o Excuse moi mais comme je disais, ce bricolage risque de te peter à la g... tôt ou tard (selon ce qu'en a fait le compilateur). Et le "je verai plus tard pour la beauté/propreté du code" faut s'en méfier, car bien trop souvent ce "plus tard" n'arrive jamais au final. Tu fais comme tu veux, mais à ta place je regarderai quand même vite fait sur internet "c++ sprintf" ou un truc du genre pour trouver comment faire ça plus proprement (String partout et aucun cast).

n°378724
SuperSic
Posté le 04-08-2022 à 18:30:07  profilanswer
 

J'ai commencé mais pour l'instant, sans succès.
 
Question plus électronique.
En cours, j'ai tjs appris qu'i fallait mettre une résistance devant une LED. Depuis que je joue avec des arduino/esp, j'ai testé sans et pas de souci (bon forcément, la LED éclaire plus fort sans résistance en amont). Est-ce qu'il y a une contre-indication à ne pas mettre de résistance ? :??:


---------------
"Les soldats vivent. Et se demandent pourquoi." Toubib (La Compagnie noire) | [TU] Pronomoo
n°378725
Aline BOQS
Alsacobéquois.
Posté le 04-08-2022 à 18:36:45  profilanswer
 

Probablement.  :D  
J'en ai une qui a fini par péter à force de faire des tests avec elle. Elle n'a pas résisté très longtemps et n'a opposé
aucune résistance.
 [:khalis]


---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°378727
Lermite
Posté le 04-08-2022 à 18:45:39  profilanswer
 

SuperSic a écrit :

J'ai commencé mais pour l'instant, sans succès.
 
Question plus électronique.
En cours, j'ai tjs appris qu'i fallait mettre une résistance devant une LED. Depuis que je joue avec des arduino/esp, j'ai testé sans et pas de souci (bon forcément, la LED éclaire plus fort sans résistance en amont). Est-ce qu'il y a une contre-indication à ne pas mettre de résistance ? :??:


Une led commence à s'allumer quand la tension à ses bornes atteint une certaine valeur, généralement de l'ordre de 2V.
Si la tension monte plus haut, le courant et donc la luminosité vont augmenter très vite, et une fois atteint un courant dépassant celui que peut supporter la led, ou si elle surchauffe trop longtemps, elle sera détruite.
Comme une led se régule en courant, il faut d'abord la tester avec une alim de labo pour déterminer sa tension à la luminosité désirée, ainsi que le courant tout en contrôlant que ce dernier reste dans les clous des spécifications.
Une fois cette tension et ce courant déterminés, que l'on nomme Vf et I, le plus simple pour retrouver cette luminosité est d'ajouter en série une résistance R = (Vcc - Vf)/I.
 
Par exemple, si l'alimentation est en 5V et la led doit tourner avec 2,2 V et 10 mA, la résistance en série devra être de 280 Ω.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  229  230  231  ..  278  279  280  281  282  283

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-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)