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

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  140  141  142  143  144  145
Auteur Sujet :

[arduino] Topic Unique blabla @ Arduino

n°174161
ObsydianKe​nobi
peloton suicida
Posté le 03-09-2017 à 17:18:16  profilanswer
 

Reprise du message précédent :
Fépété la doc chinoise :o


---------------
Long-range goals keep you from being frustrated by short-term failures. RIP VC
mood
Publicité
Posté le 03-09-2017 à 17:18:16  profilanswer
 

n°174162
DarkHorse
Posté le 03-09-2017 à 17:21:10  profilanswer
 

ObsydianKenobi a écrit :

Fépété la doc chinoise :o


 
http://gofile.me/3heZs/KBpZM433W
 
Amuses toi bien :o


---------------
Chevrolet S10 Xtreme owner
n°174164
rat de com​bat
attention rongeur méchant!
Posté le 03-09-2017 à 18:18:29  profilanswer
 

T'es sûr pour l'identification du TBmachin? Un "100 MHz - 1000 MHz RF/MICROWAVE SGL POLE SEVEN THROW SWITCH" c'est pas quelque chose que je m'attendrais à voir sur une carte de commande moteur. Certes on peut parfois abuser d'un CI pour faire autre chose avec mais là ça m'étonnerait beaucoup, ça ne doit pas être un CI très répandu et probablement plutôt cher (HF-voodoo).
edit: Sur une telle carte on devrait plutôt trouver soit des MOSFET pour faire un pont H ou un CI commande moteur spécialisé (qui en principe n'est qu'un pont H aussi).

 

Le 74XX244 doit simplement servir de buffer (comme prévu) pour les entrées et/ou sorties (plutôt ça) numériques je suppose.

Message cité 1 fois
Message édité par rat de combat le 03-09-2017 à 18:19:26
n°174165
DarkHorse
Posté le 03-09-2017 à 18:26:34  profilanswer
 

rat de combat a écrit :

T'es sûr pour l'identification du TBmachin? Un "100 MHz - 1000 MHz RF/MICROWAVE SGL POLE SEVEN THROW SWITCH" c'est pas quelque chose que je m'attendrais à voir sur une carte de commande moteur. Certes on peut parfois abuser d'un CI pour faire autre chose avec mais là ça m'étonnerait beaucoup, ça ne doit pas être un CI très répandu et probablement plutôt cher (HF-voodoo).
edit: Sur une telle carte on devrait plutôt trouver soit des MOSFET pour faire un pont H ou un CI commande moteur spécialisé (qui en principe n'est qu'un pont H aussi).
 
Le 74XX244 doit simplement servir de buffer (comme prévu) pour les entrées et/ou sorties (plutôt ça) numériques je suppose.


 
En effet tu as raison, sur le composant il y a 2 codes, le deuxième m'amène ici: https://www.sparkfun.com/datasheets [...] 612FNG.pdf


---------------
Chevrolet S10 Xtreme owner
n°174166
rat de com​bat
attention rongeur méchant!
Posté le 03-09-2017 à 18:31:09  profilanswer
 

Oui ça ça colle beaucoup mieux. :jap:

 

Par contre cette carte est étrange, un port USB et ça parle de Wifi mais je ne vois rien qui ressemble à une antenne. :??:
Tu as un lien direct vers cette doc (juste par curiosité)? Ton lien gofile ne marche pas chez moi et j'aime pas ce genre de sites (avec des tonnes de JS dessus).

 

edit: Il n'y a aucun autre CI sur cette carte (de l'autre côté?) à part le 244 et le machin pour moteurs, pas de µC? Je demande car je vois I2C écrit sur la carte. Si il n'y a pas de µC avec la doc des deux CI et un multimètre (et de la patience) il ne devrait pas être trop difficile de comprendre comment utiliser ce truc.

Message cité 1 fois
Message édité par rat de combat le 03-09-2017 à 18:33:47
n°174168
jimbofarra​r
Posté le 03-09-2017 à 18:50:46  profilanswer
 

C'est un shield pour arduino Uno et assimilés


---------------
Un putain d'son qui pète comme un cul bordé d'mogettes.
n°174170
DarkHorse
Posté le 03-09-2017 à 18:53:30  profilanswer
 

rat de combat a écrit :

Oui ça ça colle beaucoup mieux. :jap:  
 
Par contre cette carte est étrange, un port USB et ça parle de Wifi mais je ne vois rien qui ressemble à une antenne. :??:  
Tu as un lien direct vers cette doc (juste par curiosité)? Ton lien gofile ne marche pas chez moi et j'aime pas ce genre de sites (avec des tonnes de JS dessus).
 
edit: Il n'y a aucun autre CI sur cette carte (de l'autre côté?) à part le 244 et le machin pour moteurs, pas de µC? Je demande car je vois I2C écrit sur la carte. Si il n'y a pas de µC avec la doc des deux CI et un multimètre (et de la patience) il ne devrait pas être trop difficile de comprendre comment utiliser ce truc.


 
Le lien mène directement sur le fichier de mon NAS, j'ai pas trouvé de doc en ligne de cette carte. La seule doc que j'ai c'est les fichiers que j'ai eu avec un CD.  
 
Il y a une carte Wi-Fi branché en USB sur cette carte.  
 
Voici le lien du projet au complet:
 
https://www.amazon.ca/Kudao-wireles [...] B018AL9484


---------------
Chevrolet S10 Xtreme owner
n°174172
rat de com​bat
attention rongeur méchant!
Posté le 03-09-2017 à 19:10:21  profilanswer
 

Ah d'accord, ça aurait été bien de donner le lien directement...
 
Par contre il y a un truc que je ne comprends pas: Il doit y avoir un autre processeur quelque part, un petit Arduino (basé sur un AVR du moins, il y a en a d'autres je crois) ne sera jamais capable d'interfacer une webcam par USB et tout ça.
 
Concernant le lien chez moi ça ne marche pas, dans l'onglet réseau de FF je vois un problème de sécurité je ne sais pas quoi, probablement car du Javascript essaye d'accéder à une autre adresse, same origin policy machin bidule j'y connais rien, en tout cas ça ne marche pas. Peu importe, je lis pas le chinois de toute façon, c'était juste par curiosité...
 
Sinon comme je disais: Si il n'y a pas de µC au pire avec un multimètre on doit trouver comment utiliser ce truc (tu veux utiliser ça en dehors de ce robot c'est ça?).

n°174174
jimbofarra​r
Posté le 03-09-2017 à 19:11:51  profilanswer
 

rat de combat a écrit :

Ah d'accord, ça aurait été bien de donner le lien directement...
 
Par contre il y a un truc que je ne comprends pas: Il doit y avoir un autre processeur quelque part, un petit Arduino (basé sur un AVR du moins, il y a en a d'autres je crois) ne sera jamais capable d'interfacer une webcam par USB et tout ça.
 
Concernant le lien chez moi ça ne marche pas, dans l'onglet réseau de FF je vois un problème de sécurité je ne sais pas quoi, probablement car du Javascript essaye d'accéder à une autre adresse, same origin policy machin bidule j'y connais rien, en tout cas ça ne marche pas. Peu importe, je lis pas le chinois de toute façon, c'était juste par curiosité...
 
Sinon comme je disais: Si il n'y a pas de µC au pire avec un multimètre on doit trouver comment utiliser ce truc (tu veux utiliser ça en dehors de ce robot c'est ça?).


jimbofarrar a écrit :

C'est un shield pour arduino Uno et assimilés



---------------
Un putain d'son qui pète comme un cul bordé d'mogettes.
n°174181
Aline BOQS
En recherche Rakbah !
Posté le 03-09-2017 à 20:16:14  profilanswer
 

rat de combat a écrit :

Concernant le lien chez moi ça ne marche pas, dans l'onglet réseau de FF je vois un problème de sécurité je ne sais pas quoi, probablement car du Javascript essaye d'accéder à une autre adresse, same origin policy machin bidule j'y connais rien, en tout cas ça ne marche pas. Peu importe, je lis pas le chinois de toute façon, c'était juste par curiosité...


 :hello:  
 
Je ne sais pas si tu as réussi depuis, mais je t'ai mis le pdf en question sur 1fichier :
https://1fichier.com/?snrscmwk2c
 
 :jap:  


---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
mood
Publicité
Posté le 03-09-2017 à 20:16:14  profilanswer
 

n°174295
DarkHorse
Posté le 04-09-2017 à 15:04:16  profilanswer
 

rat de combat a écrit :

Ah d'accord, ça aurait été bien de donner le lien directement...


Cela n'apporte rien de plus au problème si ce n'est qu'il y a une carte Wi-Fi.
 

rat de combat a écrit :

 
Par contre il y a un truc que je ne comprends pas: Il doit y avoir un autre processeur quelque part, un petit Arduino (basé sur un AVR du moins, il y a en a d'autres je crois) ne sera jamais capable d'interfacer une webcam par USB et tout ça.
 
Concernant le lien chez moi ça ne marche pas, dans l'onglet réseau de FF je vois un problème de sécurité je ne sais pas quoi, probablement car du Javascript essaye d'accéder à une autre adresse, same origin policy machin bidule j'y connais rien, en tout cas ça ne marche pas. Peu importe, je lis pas le chinois de toute façon, c'était juste par curiosité...
 
Sinon comme je disais: Si il n'y a pas de µC au pire avec un multimètre on doit trouver comment utiliser ce truc (tu veux utiliser ça en dehors de ce robot c'est ça?).


 
Je vais tester au multimètre :jap:


---------------
Chevrolet S10 Xtreme owner
n°174303
ObsydianKe​nobi
peloton suicida
Posté le 04-09-2017 à 15:31:44  profilanswer
 


 
Merci DS216 :o


---------------
Long-range goals keep you from being frustrated by short-term failures. RIP VC
n°174356
rat de com​bat
attention rongeur méchant!
Posté le 04-09-2017 à 18:06:08  profilanswer
 

Aline BOQS a écrit :

:hello:  
Je ne sais pas si tu as réussi depuis, mais je t'ai mis le pdf en question sur 1fichier :
https://1fichier.com/?snrscmwk2c
 :jap:

Merci bien. Un click et direct un pdf en retour, voilà un bon site! :jap:  
Par contre j'ai bien compris, c'est le pdf que DarkHorse a posté (à travers le lien qui ne marche pas chez moi)? Parce que là je ne comprends plus rien, c'est pas une doc chinoise ça, c'est un schéma clair qui devrait permettre d'utiliser la carte sans problème non? (Bon après ça parle du L298 comme driver moteur mais soit je suppose que c'est compatible.) Du coup je comprends pas le problème. :??: :??: Ca doit être moi...

n°174388
Aline BOQS
En recherche Rakbah !
Posté le 04-09-2017 à 20:14:33  profilanswer
 

Oui oui, c'est bien le fichier qu'il a posté et que son nas met 1 plombe à envoyer ^^
 
Je n'ai pas trop compris ce qu'il ne comprends pas non plus, mais il parlait
peut-être du schéma éléctronique en lui-même et non de "texte en chinois".  :D


---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°174389
DarkHorse
Posté le 04-09-2017 à 20:42:56  profilanswer
 

rat de combat a écrit :

Merci bien. Un click et direct un pdf en retour, voilà un bon site! :jap:  
Par contre j'ai bien compris, c'est le pdf que DarkHorse a posté (à travers le lien qui ne marche pas chez moi)? Parce que là je ne comprends plus rien, c'est pas une doc chinoise ça, c'est un schéma clair qui devrait permettre d'utiliser la carte sans problème non? (Bon après ça parle du L298 comme driver moteur mais soit je suppose que c'est compatible.) Du coup je comprends pas le problème. :??: :??: Ca doit être moi...


 
Désolé de ne pas avoir un serveur de fichier professionnel à la maison :o
 
Ouais en effet sur mon laptop tout va bien dans le PDF, depuis mon ordi fixe Adobe m'affiche de jolis carrés partout ou il y a du texte, c'est sur que ça va bien mieux là
 

Aline BOQS a écrit :

Oui oui, c'est bien le fichier qu'il a posté et que son nas met 1 plombe à envoyer ^^
 
Je n'ai pas trop compris ce qu'il ne comprends pas non plus, mais il parlait
peut-être du schéma éléctronique en lui-même et non de "texte en chinois".  :D


 
 
Normal, mon NAS est en veille quand il n'est pas utilisé, donc quand tu veux le fichier, il faut d'abord qu'il sorte de sa veille :o

Message cité 1 fois
Message édité par DarkHorse le 04-09-2017 à 20:44:03

---------------
Chevrolet S10 Xtreme owner
n°174418
rat de com​bat
attention rongeur méchant!
Posté le 05-09-2017 à 00:22:57  profilanswer
 

DarkHorse a écrit :

Désolé de ne pas avoir un serveur de fichier professionnel à la maison :o

Ce que je disais sur le lien n'était en rien dirigé contre toi, c'est juste que j'aime pas trop activer le JS (et parfois faire x clicks, attendre, regarder de la pub stupide, ...) pour télécharger un simple fichier sur un site que je connais pas... Sans dire que même avec JS là ça ne marchait pas. Le lien que donnait Aline BOQS fonctionne directement, mais bien sûr en utilisant ce site là (ou tout autre site du même genre) le fichier ne sera pas stocké sur ton NAS et donc tu n'as plus aucun contrôle dessus.

Citation :

Ouais en effet sur mon laptop tout va bien dans le PDF, depuis mon ordi fixe Adobe m'affiche de jolis carrés partout ou il y a du texte, c'est sur que ça va bien mieux là

Ah d'accord, je comprends mieux le problème...

n°174419
DarkHorse
Posté le 05-09-2017 à 03:06:26  profilanswer
 

Je pense qu'il y en aura de plus en plus du JS dans les pages web sans vouloir te décourager. Mais tout ce qui est synology a l'air d'être plutôt bien fait.  
 
En tout cas en connaissant la source de mon problème je devrais m'en sortir. Merci pour vos feedback :jap:


---------------
Chevrolet S10 Xtreme owner
n°174536
rat de com​bat
attention rongeur méchant!
Posté le 05-09-2017 à 19:11:47  profilanswer
 

DarkHorse a écrit :

Je pense qu'il y en aura de plus en plus du JS dans les pages web

Ah ça c'est sûr oui et c'est pas du tout une bonne chose (à mon avis)! Enfin bref, complètement HS ici. :o

n°174542
n@thou
Scandinavie ♥
Posté le 05-09-2017 à 20:09:08  profilanswer
 

Hey,  
Avec un Arduino Uno, on peut lancer une action en différé ?
Du style :
- on appuie sur un bouton
- décompte 5, 4, 3, 2, 1, 0...
- lance une action  (= déclenche un reflex Canon dans mon cas)
 
Le décompte avec affichage 7 segments, ça va à peu près mais... c'est tout :o
Et si je cherche un truc impossible à faire, autant que j'arrête de chercher :whistle:

n°174544
Natopsi
☭ Sodium Metal ☭
Posté le 05-09-2017 à 20:29:04  profilanswer
 

Les doigts dans le nez, et si tu veux apprendre un peu plus fait ça avec un OS temps réel:
https://create.arduino.cc/projecthu [...] ino-ebc3cc


---------------
ACH/VDSHFRCoin:7Z2K2a9BLZ1yo1v8uMr4rg7qD3vtBFXZ6p◈1435mm◈
n°174560
n@thou
Scandinavie ♥
Posté le 05-09-2017 à 22:05:23  profilanswer
 

Oula... Vraiment ça serait volontiers mais ça dépasse mes compétences là :/
Je suis pas vraiment du milieu

 

Pour le moment je cherche encore comment réaliser mon petit montage basique [:tinostar]

 

Ça se passe comment dans cette catégorie ? Topic unique ici, chacun y va de sa bidouille ou topic par user ?

n°174578
Elbarto
Posté le 06-09-2017 à 01:05:31  profilanswer
 

n@thou a écrit :

Hey,
Avec un Arduino Uno, on peut lancer une action en différé ?
Du style :
- on appuie sur un bouton
- décompte 5, 4, 3, 2, 1, 0...
- lance une action  (= déclenche un reflex Canon dans mon cas)

 

Le décompte avec affichage 7 segments, ça va à peu près mais... c'est tout :o
Et si je cherche un truc impossible à faire, autant que j'arrête de chercher :whistle:

 

l'algorithme semble simple ici :

 

- détecter l'appui sur le bouton
- si le bouton a été enclenché --> faire une pause de X secondes
- à la fin de la pause : lancer l'action ( déclenchement de l'appareil photo )
- si le bouton n'a pas été appuyé --> ben tu fais rien, tu boucles sur la vérification de l'état du bouton

 

peut-être la fonction delay() ?

 

https://www.arduino.cc/en/Reference/Delay

 

https://openclassrooms.com/courses/ [...] n-poussoir
https://openclassrooms.com/courses/ [...] es-calculs

 

un truc tout con comme ça :

 
Code :
  1. void loop() // on boucle pour vérifier l'état du bouton
  2. {
  3.     si (le bouton a été appuyé)
  4.     {
  5.         j'émets un bip pour avertir que je vais bientôt déclencher l'appareil photo
  6.         je fais une pause de 7 secondes ( pour simuler l'action en différée )
  7.         à la fin de la pause je déclenche l'appareil photo
  8.     }
  9. }
 

bien sûr pas d'affichage sur un écran du compte à rebours ( pour que le programme reste simple ), mais ça reste jouable

Message cité 1 fois
Message édité par Elbarto le 06-09-2017 à 01:18:30
n°174593
JPlnx
Posté le 06-09-2017 à 09:31:00  profilanswer
 

n@thou a écrit :

Hey,  
Avec un Arduino Uno, on peut lancer une action en différé ?
Du style :
- on appuie sur un bouton
- décompte 5, 4, 3, 2, 1, 0...
- lance une action  (= déclenche un reflex Canon dans mon cas)
 
Le décompte avec affichage 7 segments, ça va à peu près mais... c'est tout :o
Et si je cherche un truc impossible à faire, autant que j'arrête de chercher :whistle:


 
Y a pas un retardateur de base sur les réflexes Canon ?
En tout cas c'est pas un truc très compliqué à faire avec un Arduino pour info voici un projet qui existant qui fait ce que tu envisages et bien plus encore : http://photoduino.com/ (il existe d'autre projets dans ce genre).  

n°174596
makinoe
Posté le 06-09-2017 à 09:34:43  profilanswer
 

Bonjour à tous  :hello:  
Je suis nouveau en Arduino, j'ai reçu ma carte hier et j'ai commencé à faire des tests avec le capteur d'humidité du sol, par contre je fais face à un petit problème de division.
(Je passe la plus grosse partie du code, en gros je récupère 10 valeurs et je divise par 10 la somme totale)

Code :
  1. for(int a = 0;a<index;a++)
  2. {
  3.   somme +=tab[a];
  4. }
  5. Serial.print("Somme =  " );
  6. Serial.print(somme);
  7. Serial.print("\n" );
  8. int somme_finale = (somme/10);
  9. Serial.print("Moyenne = " );
  10. Serial.print(somme_finale);


 
Sauf qu'en sortis j'obtiens :
 

Code :
  1. Somme = 5025
  2. Moyenne = 502503


 
D'après ce que j'ai compris la division ce fait bien, par contre au lieu d'avoir 502,503 ou mieux juste 502, j'obtient ce nombre, comment puis-je faire pour ne garder que les nombres entier? Est ce que la sortie n'est pas capable d'afficher les virgules?
 
Merci d'avance  :jap:

n°174598
Natopsi
☭ Sodium Metal ☭
Posté le 06-09-2017 à 09:48:27  profilanswer
 

Essaie avec 10.0 ou 10.0f pour forcer le compilateur à traiter la division en flottant.


---------------
ACH/VDSHFRCoin:7Z2K2a9BLZ1yo1v8uMr4rg7qD3vtBFXZ6p◈1435mm◈
n°174612
Aline BOQS
En recherche Rakbah !
Posté le 06-09-2017 à 12:57:16  profilanswer
 

Y'aurait pas une erreur à la ligne 9 ?
 
Ca ne devrait pas plutôt être : int Moyenne = (somme/10); ?


---------------
-=* Feedback de Liline *=- _._ -=* Ptit bazar à Liline *=-  
n°174616
n@thou
Scandinavie ♥
Posté le 06-09-2017 à 13:16:05  profilanswer
 

Elbarto a écrit :

 

l'algorithme semble simple ici :

 

- détecter l'appui sur le bouton
- si le bouton a été enclenché --> faire une pause de X secondes
- à la fin de la pause : lancer l'action ( déclenchement de l'appareil photo )
- si le bouton n'a pas été appuyé --> ben tu fais rien, tu boucles sur la vérification de l'état du bouton

 

peut-être la fonction delay() ?

 

https://www.arduino.cc/en/Reference/Delay

 

https://openclassrooms.com/courses/ [...] n-poussoir
https://openclassrooms.com/courses/ [...] es-calculs

 

un truc tout con comme ça :

 
Code :
  1. void loop() // on boucle pour vérifier l'état du bouton
  2. {
  3. si (le bouton a été appuyé)
  4. {
  5. j'émets un bip pour avertir que je vais bientôt déclencher l'appareil photo
  6. je fais une pause de 7 secondes ( pour simuler l'action en différée )
  7. à la fin de la pause je déclenche l'appareil photo
  8. }
  9. }
 

bien sûr pas d'affichage sur un écran du compte à rebours ( pour que le programme reste simple ), mais ça reste jouable


Merci pour ta réponse :jap:

 


C'est le cheminement que j'ai en tête également mais avec le décompte sur un afficheur 7 segments pour indiquer le délai restant avant déclenchement.
HFR4Droid, je regarde ça en détail en rentrant ce soir :)

JPlnx a écrit :

 

Y a pas un retardateur de base sur les réflexes Canon ?
En tout cas c'est pas un truc très compliqué à faire avec un Arduino pour info voici un projet qui existant qui fait ce que tu envisages et bien plus encore : http://photoduino.com/ (il existe d'autre projets dans ce genre).

 

Si il y a un retardateur mais 2s ou 10s.
Le premier trop court, le second trop long :D
Je regarde le lien, merci :jap:

n°174620
makinoe
Posté le 06-09-2017 à 13:59:13  profilanswer
 

Natopsi a écrit :

Essaie avec 10.0 ou 10.0f pour forcer le compilateur à traiter la division en flottant.


 
Je testerais ce soir  :jap:  
 

Aline BOQS a écrit :

Y'aurait pas une erreur à la ligne 9 ?
 
Ca ne devrait pas plutôt être : int Moyenne = (somme/10); ?


 
C'est juste le nom de la variable qui est trompeur  :)  

n°174637
pota
Posté le 06-09-2017 à 16:43:06  profilanswer
 

makinoe a écrit :

Bonjour à tous  :hello:  
Je suis nouveau en Arduino, j'ai reçu ma carte hier et j'ai commencé à faire des tests avec le capteur d'humidité du sol, par contre je fais face à un petit problème de division.
(Je passe la plus grosse partie du code, en gros je récupère 10 valeurs et je divise par 10 la somme totale)

Code :
  1. for(int a = 0;a<index;a++)
  2. {
  3.   somme +=tab[a];
  4. }
  5. Serial.print("Somme =  " );
  6. Serial.print(somme);
  7. Serial.print("\n" );
  8. int somme_finale = (somme/10);
  9. Serial.print("Moyenne = " );
  10. Serial.print(somme_finale);


 
Sauf qu'en sortis j'obtiens :
 

Code :
  1. Somme = 5025
  2. Moyenne = 502503


 
D'après ce que j'ai compris la division ce fait bien, par contre au lieu d'avoir 502,503 ou mieux juste 502, j'obtient ce nombre, comment puis-je faire pour ne garder que les nombres entier? Est ce que la sortie n'est pas capable d'afficher les virgules?
 
Merci d'avance  :jap:


 
Pourquoi tu divises par 10 ? Faut pas plutôt diviser par index ?

n°174638
ObsydianKe​nobi
peloton suicida
Posté le 06-09-2017 à 16:43:54  profilanswer
 

Je suppose que index est défini à 10 plus haut :o


---------------
Long-range goals keep you from being frustrated by short-term failures. RIP VC
n°174640
pota
Posté le 06-09-2017 à 16:46:31  profilanswer
 

ObsydianKenobi a écrit :

Je suppose que index est défini à 10 plus haut :o


Oui j'ai lu trop vite le début. Je remplacerais par index quand même :o

n°174659
makinoe
Posté le 06-09-2017 à 18:14:35  profilanswer
 

En faite je suis idiot :pt1cable:  
J'affiche chaque valeur, en plus de la valeur moyenne, sauf qu'après la valeur moyenne je n'avais pas de \n, donc l'arrondi ce fait bien, c'est juste que les 3 chiffres après sont la valeurs suivante :o

n°174692
rat de com​bat
attention rongeur méchant!
Posté le 07-09-2017 à 01:08:57  profilanswer
 

Effectivement si tu as que des int ton µC va faire le calcul en int (ou plutôt le compilateur va générer le code qui va bien pour faire ainsi) et donc tu as ton arrondi automatiquement.
Cette histoire de float et de int c'est un piège parfois et il faut bien connaître ça (comme pleins d'autres trucs en C, les bases quoi...).  
En effet si il n'y a que du entier parmi les opérands (int ou des constantes entières==sans virgule) le calcul se fera en int, même si la variable qui prend le résultat est un float!
Si on veut faire le calcul on flottant (=avec décimales) il faut forcer au moins un des opérands (=variables ou constantes) en float. Si il y a une constante on peut rajouter ".0" (ou ".0f" car il y a aussi 'd' pour un double mais peu importe, c'est pas le sujet ici), si c'est une variable il faut faire un cast (terme anglais) vers float. Il est par contre inutile (mais pas faux) de le faire pour chacun des opérands du calcul. Il suffit d'avoir un seul opérand en flottant pour que tout le calcul se fasse en float. Après si la variable qui prend le résultat est un int le calcul sera quand même fait en float mais la variable recevra que la partie entière. Ce qui compte pour le type de calcul (flottant/entier) c'est les types des opérands.
 
Attention avec le terme "calcul" que j'utilise dans le sens "opération". Il est inutile de forcer plus d'une opérand en float sur un calcul, mais on peut faire plusieurs calculs sur une même ligne et donc on peut avoir besoin d'avoir plusieurs ".0" ou casts sur une même ligne. Dans le doute (et quand on debugge pour savoir pourquoi ce fichu bout de code tout simple ne marche pas - on connait tous cette situation, non? :o ) un ".0" ou un cast vers float de trop ne fait pas de mal.
Cf. K&R p. 109 §A6.5: "Many operators cause conversions [...]. The effect is to bring the operands into a common type, which is also the type of the result. This pattern is called the usual arithmetic conversions."
 
Juste une remarque puisque je parle de cast: On m'a appris "un cast c'est une arme", autrement dit il faut vraiment savoir ce qu'on fait si on en utilise. Il y a très peu de situations où il y en a vraiment besoin, souvent les gens en mettent pour essayer de faire partir une erreur / un warning mais c'est pas pour autant que le résultat sera celui qu'on veut, au contraire! (Je pense aux histoires de pointeur et "makes pointer from integer" ou les warnings concernant printf() et les différents "%-machin" (c'est quoi le nom correct? :o ) pour les différents types de variables.)
 
Quelque exemples (compilés et testés sur ordinateur et même compilés avec AVR-GCC et vérifié (très superficiellement!!) le listing assembleur, je suis fatigué et je veux vraiment pas dire de conneries - j'espère que c'est (pas) le cas :o ):
 
EDIT: :o Il y a une connerie dans le code, comme l'a remarqué fort justement Walter White il faudrait diviser par 3 et non par 2 pour avoir la moyenne de trois nombres, mais au final ce n'est pas important, il ne s'agit pas de montrer le calcul de moyenne ici mais les histoires de types de variable.
 

Code :
  1. #include <stdio.h>
  2.  
  3. //la moyenne de 3, 5, 7 est (3+5+7)/2=7,5
  4.  
  5. void test1(void)
  6. {
  7.    int a=3;
  8.    int b=5;
  9.    int c=7;
  10.    
  11.    int moyenne=(a+b+c)/2; //que du int -> calcul en int
  12.    
  13.    printf("test1: moyenne: %d\n", moyenne); //affichage: 7
  14. }
  15.  
  16. void test2(void)
  17. {
  18.    int a=3;
  19.    int b=5;
  20.    int c=7;
  21.    
  22.    float moyenne=(a+b+c)/2; //toujours que du int! (ce qui compte c'est les types des opérands uniquement) -> calcul en int
  23.    
  24.    printf("test2: moyenne: %f\n", moyenne); //affichage: 7
  25. }
  26.  
  27. void test3(void)
  28. {
  29.    int a=3;
  30.    int b=5;
  31.    int c=7;
  32.    
  33.    float moyenne=(a+b+c)/2.0; //2.0 c'est un float -> division en float
  34.    
  35.    printf("test3: moyenne: %f\n", moyenne); //affichage: 7.5
  36. }
  37.  
  38. void test4(void)
  39. {
  40.    int a=3;
  41.    int b=5;
  42.    float c=7;
  43.    
  44.    float moyenne=(a+b+c)/2; //une variable de type float -> additions en float
  45.     //et donc aussi division car un des opérands (qui est le résultat de la deuxième addition) est de type float
  46.    
  47.    printf("test4: moyenne: %f\n", moyenne); //affichage: 7.5
  48. }
  49.  
  50. void test5(void)
  51. {
  52.    int a=3;
  53.    int b=5;
  54.    int c=7;
  55.    
  56.    float moyenne=(a+b+c)/2.0f; //2.0f c'est un float (et même explicitement avec le 'f') -> division en float
  57.    
  58.    printf("test5: moyenne: %f\n", moyenne); //affichage: 7.5
  59. }
  60.  
  61. void test6(void)
  62. {
  63.    int a=3;
  64.    int b=5;
  65.    int c=7;
  66.    
  67.    float moyenne=((float)a+b+c)/2; //cast vers float sur une des variables ->  additions et donc aussi division en float
  68.    
  69.    printf("test6: moyenne: %f\n", moyenne); //affichage: 7.5
  70. }
  71.  
  72. void test7(void)
  73. {
  74.    int a=3;
  75.    int b=5;
  76.    int c=7;
  77.    
  78.    float moyenne=((float)a+b+c)/2.0; //calcul en float mais inutile de mettre le cast
  79.     //ET une constante en flottant dans cet exemple (mais c'est pas faux)
  80.    
  81.    printf("test7: moyenne: %f\n", moyenne); //affichage: 7.5
  82. }
  83.  
  84. void test8(void)
  85. {
  86.    int a=3;
  87.    int b=5;
  88.    int c=7;
  89.    
  90.    int moyenne=((float)a+b+c)/2; //tout le calcul en float mais la variable qui prend le résultat est un int -> on perd les décimales
  91.    
  92.    printf("test8: moyenne: %d\n", moyenne); //affichage: 7
  93. }
  94.  
  95. void test9(void) ////////////////////////
  96. {
  97.    int a=3;
  98.    int b=5;
  99.    int c=7;
  100.    
  101.    float moyenne=2.0*((a+b+c)/2); //la multiplication se fera en float mais
  102.     //PAS les additions (peu importe) ni la division (problème) -> on perd les décimales
  103.    
  104.    printf("test9: moyenne: %f\n", moyenne); //affichage: 14
  105. }
  106.  
  107. void test10(void)
  108. {
  109.    int a=3;
  110.    int b=5;
  111.    int c=7;
  112.    
  113.    float moyenne=2*((a+(float)b+c)/2); //les additions se feront en float (cast vers float d'un opérand) et donc tout le reste aussi
  114.  
  115.    printf("test10: moyenne: %f\n", moyenne); //affichage: 15
  116. }
  117.  
  118.  
  119. //int à la fin pour éviter de devoir écrire des prototypes de fonctions, c'est pas bien mais je suis fainéant...
  120. int main(void)
  121. {
  122.    test1();
  123.    test2();
  124.    test3();
  125.    test4();
  126.    test5();
  127.    test6();
  128.    test7();
  129.    test8();
  130.    test9();
  131.    test10();
  132.    return 0;
  133. }


 
edit: Quelque \n ne feront pas de mal...

Message cité 1 fois
Message édité par rat de combat le 10-09-2017 à 21:15:21
n°174702
makinoe
Posté le 07-09-2017 à 09:28:36  profilanswer
 

Sympa les petits exemples  :jap:  
Honte sur moi quand même étant ancien dev c++  :pt1cable:  :o  
Au final j'ai réussi à faire fonctionner le capteur d'humidité et le capteur de lumières et j'ai aussi découvert la fonction map qui est ma fois fort utile (Je me suis cassé la tête pendant 10min pour essayé de faire une équivalence avant de découvrir cette fonction).

n°174819
rat de com​bat
attention rongeur méchant!
Posté le 07-09-2017 à 16:14:20  profilanswer
 

rat de combat a écrit :

Il est inutile de forcer plus d'une opérand en float sur un calcul, mais on peut faire plusieurs calculs sur une même ligne et donc on peut avoir besoin d'avoir plusieurs ".0" ou casts sur une même ligne.

Honnêtement là j'ai un gros doute. :o Vu la "propagation du type d'opérand" (une opération fait en float sortira un float qui sera utilisé comme opérand pour une autre opération qui va donc aussi se faire en float) un seul cast/".0" placé au bon endroit devrait tojours suffire pour ne pas perdre de précision / les décimales non - ou pas? :o
Décidémment le C c'est pas facile parfois. :pt1cable: Un pro qui peut tirer ça au clair svp?


Message édité par rat de combat le 07-09-2017 à 16:16:29
n°174904
Walter Whi​te
Posté le 08-09-2017 à 10:09:13  profilanswer
 

Quelqu'un a déclenché l'[:alertequalitay] ?
Sinon pour info, pour avoir la moyenne de trois nombres il faut diviser par 3, pas par 2 :o

n°174907
Coq
Volatile en Versatile.
Posté le 08-09-2017 à 10:43:39  profilanswer
 

Merci pour cette alerte qualité d'inités, j'ai bcp lolé  [:nikoluc]  
 

Spoiler :

Ou pas  [:martha fabrer:3]


---------------
Hystérie mortifère démoniaque.
n°174952
rat de com​bat
attention rongeur méchant!
Posté le 08-09-2017 à 14:57:39  profilanswer
 

Walter White a écrit :

Sinon pour info, pour avoir la moyenne de trois nombres il faut diviser par 3, pas par 2 :o

Ah!!!! La honte! :o :o Voilà ce qui arrive quand on poste en pleine nuit. :(  
Enfin bon, après il suffit de remplacer "moyenne" par "un_certain_calcul" et ça sera bon, ce que je voulais montrer c'est pas comment faire une moyenne mais les histoires de float et int.
 
A part ça j'ai pas compris ce que tu veux dire par l'alerte qualité... :o

n°174975
flash23
Posté le 08-09-2017 à 17:55:00  profilanswer
 

Qui donc s'est senti obligé de remonter une Alerte Qualité sur des bases de C ?  [:elena gates:2]


---------------
Entre lésine et hétaïre, il faut choisir.
n°175162
discm
Posté le 10-09-2017 à 20:56:15  profilanswer
 

Electrocut au hasard ?
 
Sinon question que je croyais assez simple à la base :o
 
J'ai un système avec une horloge temps réel, qui vérifie en boucle si un appui a été effectué (le TR sert à vérifier que l'horaire va bien pour effectuer l'action).
 
Le système fonctionne enfin grâce aux amis du Lab que je ne préfère pas citer ici pour ne pas leur faire du tort. Maintenant, petite coquetterie de ma part, je voudrais insérer un menu avec des appuis de clavier pour régler l'horaire ou modifier des options. Hé ben je ne sais même pas comment le faire fonctionner. Des idées pour intégrer un système pas trop débile ? Je me sers du shield avec écran 16x2 et 5 touches en série vuia résistances.
 
Merci pour votre aide.


---------------
Discm.
n°175166
rat de com​bat
attention rongeur méchant!
Posté le 10-09-2017 à 21:12:32  profilanswer
 

Difficile avec si peu d'infos. De manière générale pour les menus je pense tout de suite "machine d'état". L'article Wikipédia à l'air bien incompréhensible, mais le principe est tout bête. Par contre vu ma dernière connerie ici et l'heure j'ai pas très envie d'écrire une longue explication, mais sur internet ou même dans ce forum on doit trouver des infos plus digestes. Finalement ça revient à un bête switch-case.
 
Mais avant tout faudrait vérifier si il n'existe pas un truc tout fait pour Arduino, le contraire m'étonnerais à vrai dire.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  140  141  142  143  144  145

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-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR