Messages : 1122 Date d'inscription : 04/12/2020 Age : 58 Localisation : 14700
Sujet: Re: Arduino pour les nuls? .... 06.01.21 12:31
F5JGK a écrit:
Bonjour, j'avance petit a petit, et j'ai bien galéré sur le codage binaire sur les sorties digitales !
en partant de l'exemple de Vincent: var & B01000000 == 1 ne donne pas 1 mais 2 (si bien sur var contient le 2ieme bit). en fait, on peut se passer du B01000000, et ecrire 2 :
var & 2 == 2 ca fait la même chose ( et biensur 4,8,13,etc ... pour les autres sorties .
Mais, pour des raisons que j'ignore,
if(var & 2 == 2) ne fonctionne pas, je suis obligé de faire :
var2 = var & 2 if(var2 == 2)
enfin, c'est super, j'ai donc les 8 sorties digitales en fonction d'un nombre entre 0 et 255.
il me reste a creer la gestion du nombre ( bouton + et -, tempo, memoire etc ...
c'est super l'apprentissage de l'arduino, mais le C est farci de syntaxe dont on oublie vite un detail, par rapport au basic que je connais bien, c'est quand meme plus complexe !
je comprends ceux qui comme moi debute, cherchaient a le faire en basic !
A mon avis c'est un problème de priorité des opérateurs & et == essayez cette syntaxe : if ((var &2)==2) je pense que ça devrait fonctionner Dans cette syntaxe , on calcule d'abord var & 2 puis on applique le résultat au ==
_________________
73 de F5TYH Luc
F5JGK
Messages : 77 Date d'inscription : 08/12/2020 Localisation : 64
Sujet: Re: Arduino pour les nuls? .... 06.01.21 14:19
ok en effet, c'est peut etre cela, je vais essayer .
F5JGK
Messages : 77 Date d'inscription : 08/12/2020 Localisation : 64
Sujet: Re: Arduino pour les nuls? .... 06.01.21 14:21
F5TYH a écrit:
Bonjour à tous et 73.
Pour les conversions binaires , à mon avis , rien ne vaut mieux de passer par l'hexadécimal. Un chiffre en hexa est codé sur 4 bits : --> 16 possibilités (base 16) .... C'est une petite gymnastique à apprendre mais après , c'est bien pratique. En C , un chiffre hexa s'écrit sous la forme 0x8C (mettre 0x avant le nombre hexa)
73 à tous
ok, mais dans mon exemple, le but etait de recuperer separement chaque bit d'un nombre pour adresser chaque sortie logique associée.
F5TYH
Messages : 1122 Date d'inscription : 04/12/2020 Age : 58 Localisation : 14700
Sujet: Re: Arduino pour les nuls? .... 06.01.21 14:41
F5JGK a écrit:
F5TYH a écrit:
Bonjour à tous et 73.
Pour les conversions binaires , à mon avis , rien ne vaut mieux de passer par l'hexadécimal. Un chiffre en hexa est codé sur 4 bits : --> 16 possibilités (base 16) .... C'est une petite gymnastique à apprendre mais après , c'est bien pratique. En C , un chiffre hexa s'écrit sous la forme 0x8C (mettre 0x avant le nombre hexa)
73 à tous
ok, mais dans mon exemple, le but etait de recuperer separement chaque bit d'un nombre pour adresser chaque sortie logique associée.
Bonjour , et 73.
je pense que ce code devrait fonctionner :
Code:
/* si le bit 8 de var est à 1 pour faire ça je fais un ET bit à bit */ if((var & B10000000) == 1) digitalWrite(14, HIGH); /* sinon */ else digitalWrite(14, LOW);
/* si le bit 7 de var est à 1 pour faire ça je fais un ET bit à bit */ if((var & B01000000) == 1) digitalWrite(13, HIGH); /* sinon */ else digitalWrite(13, LOW);
/* si le bit 6 de var est à 1 pour faire ça je fais un ET bit à bit */ if((var & B00100000) == 1) digitalWrite(12, HIGH); /* sinon */ else digitalWrite(12, LOW);
......
sinon avec l'hexa , ça donne ça :
Code:
/* si le bit 8 de var est à 1 pour faire ça je fais un ET bit à bit */ if((var & 0x80) == 1) digitalWrite(14, HIGH); /* sinon */ else digitalWrite(14, LOW);
/* si le bit 7 de var est à 1 pour faire ça je fais un ET bit à bit */ if(((var & 0x40) == 1) digitalWrite(13, HIGH); /* sinon */ else digitalWrite(13, LOW);
/* si le bit 6 de var est à 1 pour faire ça je fais un ET bit à bit */ if((var & 0x20) == 1) digitalWrite(12, HIGH); /* sinon */ else digitalWrite(12, LOW);
une petite astuce pour le binaire: le fait de décaler un bit vers la droite (en rajoutant un 0 à gauche) revient à diviser par 2 1000 --> 8 0100 --> 4 0010 --> 2 0001 --> 1
et quand on le décale vers la gauche( en rajoutant un 0 à droite) cela revient à multiplier par 2
0001 --> 1 0010 --> 2 0100 --> 4 1000 --> 8
73 à tous
_________________
73 de F5TYH Luc
Vincent et Dagui aiment ce message
F5JGK
Messages : 77 Date d'inscription : 08/12/2020 Localisation : 64
Sujet: Re: Arduino pour les nuls? .... 06.01.21 16:16
Bonjour Luc, en fait ca fonctionne comme je le disais un peu plus haut. j'utilise en effet 1,2,4,8 etc ... au lieu de B00000001 etc ... juste parceque c'est plus visuel et rapide pour moi.
Bon, je suis super content, ca avance ! j'ai maintenant incrémentation, décrémentation du code par 2 bouton. 1 mémoire fixe par un bouton ( le code du cx 27 puisque c'est pour un poste CB )
il me reste a implémenter la fonction scanner ( qui va nécessiter 2 ES numériques ) et , j'aimerai y rajouter un affichage des CX sur un afficheur 4 x 7 segments mais qui va necessiter beaucoup d'autres ES et c'est la que ca coince, j'arrive deja presque au maxi rien qu'avec ce montage !
IMG_20210106_161443.jpg
F5TYH aime ce message
F5JGK
Messages : 77 Date d'inscription : 08/12/2020 Localisation : 64
Sujet: Re: Arduino pour les nuls? .... 08.01.21 20:53
ca vaut ce que ca vaut, mais j'arrive a gerer les boutons comme je veux ( anti rebond et incrementation a vitesse choisie si appuie prolongé sur le bouton :
// incrementation du code binaire tobyBouton1 = digitalRead(12); if (tobyBouton1 == 0){ if (tobybouton11 == 0){ tobybouton11 = 1; tempo1 = 1; toby++; convNumBin(); // fonction de codage binaire } }
// tempo anti rebond et delais avant +1 tempo1 = tempo1 + 1; delay(50); // 0,05s if (tempo1 == 5){ // 0,5s tempo1 = 0; tobybouton11 = 0; }
je ne sais pas si on peut concerve des valeurs en memoires permanante ? du style, je programme des canaux predefinis , mais c'est via la programmation, ils sont fixés "a vie" peut on memoriser quelques valeurs ?
F5TYH aime ce message
Vincent
Messages : 172 Date d'inscription : 26/12/2020 Age : 43 Localisation : Achiet le Grand (62)
Sujet: Re: Arduino pour les nuls? .... 08.01.21 21:10
Bonjour, Déjà bravo pour la rapidité de prise en main, c'est impressionnant !
Oui ton micro possède de la mémoire EEPROM 1024 octets 100 000 cycles erase ou write avant problème de bit défectueux. 20 ans de rétention à 85°C et 100 ans à 25°C (d'après le constructeur mais bon courage pour vérifier )
ps : as tu pu essayer les pertinentes propositions de Luc sur la priorité des opérateurs &, == ? Sa remarque était intéressante et je n'ai pas eu l'occasion de tester.
F5JGK
Messages : 77 Date d'inscription : 08/12/2020 Localisation : 64
Sujet: Re: Arduino pour les nuls? .... 09.01.21 18:00
Merci !
Ok pour la mémoire epprom, je vais voir ça de plus près .
En fait,j ai le tord de m 'etre arrêté dans l apprentissage une fois que j avais , ou du moins croyais que j avais le minimum de savoir pour faire avancer mon projet, mais il y a encore du travail Je continu donc l'école Arduino !
Ce qu'il me manque maintenant, c'est des ports es ! Je pensais qu'ils existait des cartes d'extension es, mais je n' ai pas trouvé, par contre il semble qu'il faille utiliser une carte Arduino méga qui a plus de ports, mais a condition d'en trouver une avec le même processeur que la Uno si je comprends bien, pour ne pas avoir de pb de compilation .
Vincent
Messages : 172 Date d'inscription : 26/12/2020 Age : 43 Localisation : Achiet le Grand (62)
Sujet: Re: Arduino pour les nuls? .... 09.01.21 19:58
Bonjour, Tu as plusieurs options pour augmenter le nombre d'I/O, ça va de la solution radicale à la solution low cost. Tu as besoin de beaucoup d'entrées/sorties ?
- Tu peux changer de carte Arduino et prendre une Arduino Mega 2560 (le micro n'est plus un ATmega328P mais un ATmega2560), les outils sont les mêmes, les programmes facilement portables sur cette cibles, les microcontrôleurs sont de la même famille et tu auras bien plus d'I/O.
- Tu peux acheter des shield (cartes d'extension) I/O expander, on doit en trouver chez Sparkfun,
- Tu peux câbler le composant I/O expander sur une plaque d'essai et le piloter avec des fils connectés à ton Arduino. Des gens ont fait des bibliothèques pour piloter un MCP23008 ou un MCP23017 depuis Arduino. Ils se pilotent en I2C ou SPI selon la référence choisie.
F5JGK
Messages : 77 Date d'inscription : 08/12/2020 Localisation : 64
Sujet: Re: Arduino pour les nuls? .... 10.01.21 20:15
Bonsoir,
Dans le kit de démarrage que j' ai acheté , Velleman vma501, il y a un ci 74hc595. Sur ce coup, Velleman ne fait pas fort, non seulement, il n'est strictement rien livré avec la boîte, pas de doc, pas de cd, mais en plus d'avoir a deviner qu'il faut aller sur leur site pour télécharger un semblant de guide , il y a dans la boîte des choses qui ne sont même pas mentionné dans le guide ! Notamment ce circuit, qui, en cherchant sur le net, correspondrait à ce que je veux ( il converti un octet série en 8 bit // ) Je pense que ça doit être un équivalent à celui que tu proposais en 3 ieme option ?
C'est intéressant, parceque ça prends 3 sorties pour en produire 8, mais si on en rajouté 1 , ça ne prend qu'un bit de plus pour en produire 8 ...
C'est bien , car du coup, ça ne limite plus les idées !
F5TYH
Messages : 1122 Date d'inscription : 04/12/2020 Age : 58 Localisation : 14700
Sujet: Re: Arduino pour les nuls? .... 10.01.21 21:33
Bonjour et 73 à tous.
Sinon , pour les sorties , tu peux utiliser un multiplexeur 74HC4051D : sur le CI tu as 3 bits d'entrée (de 000 à 111) donc 8 possibilités et tu as 8 fils de sortie , s'activant selon la combinaison que tu as mis à l'entrée. Par contre , 1 seule de ces sortie ne pourra être active à l'instant t
73 et bonne soirée
_________________
73 de F5TYH Luc
Vincent
Messages : 172 Date d'inscription : 26/12/2020 Age : 43 Localisation : Achiet le Grand (62)
Sujet: Re: Arduino pour les nuls? .... 10.01.21 21:51
Bonjour, Le composant que je proposais est un peu plus complet car chaque broche peut être configurée soit en entrée soit en sortie. Ta solution avec le registre à décalage ou celle de Luc avec le multiplexer/demultiplexer analogique sont également très intéressantes.
A+
F5JGK
Messages : 77 Date d'inscription : 08/12/2020 Localisation : 64
Sujet: Re: Arduino pour les nuls? .... 11.01.21 18:01
Bonjour, pour l'applis qui m'intéresse ( quelques entrées de boutons, et de l'état du squelch , et les sorties pour le pll02 et les afficheurs, le bon vieux 74 devrait faire l affaire, d'autant plus que j' ai compris comment ça marche ! Et donc vais pouvoir le programmer moi même .
Ce que je ne sais pas encore, c'est comment raccorder les 8 bits au pll02 qui est soudé . Idéalement, je suppose que au lieu d'un inter bipole a 8 lignes, des portes ET commandé par un poussoir seraient pas mal. ( Et relativement facile a faire )
Et enfin, il me faudra souder tout ce montage , quand ça perchées bien sûr la plaque a trous , sur une plaque a souder , parceque concevoir le CI, ça doit être pas difficile, mais faut les outils pour le générer aussi !
Au passage, pour les bleus tels moi, qui veulent utiliser le cours "Arduino a l'école", même dernière version, il y a quelques erreurs . Ça fait un exercice cela dit !
F5TYH
Messages : 1122 Date d'inscription : 04/12/2020 Age : 58 Localisation : 14700
Sujet: Re: Arduino pour les nuls? .... 11.01.21 18:03
F5JGK a écrit:
Bonjour, pour l'applis qui m'intéresse ( quelques entrées de boutons, et de l'état du squelch , et les sorties pour le pll02 et les afficheurs, le bon vieux 74 devrait faire l affaire, d'autant plus que j' ai compris comment ça marche ! Et donc vais pouvoir le programmer moi même .
Ce que je ne sais pas encore, c'est comment raccorder les 8 bits au pll02 qui est soudé . Idéalement, je suppose que au lieu d'un inter bipole a 8 lignes, des portes ET commandé par un poussoir seraient pas mal. ( Et relativement facile a faire )
Et enfin, il me faudra souder tout ce montage , quand ça perchées bien sûr la plaque a trous , sur une plaque a souder , parceque concevoir le CI, ça doit être pas difficile, mais faut les outils pour le générer aussi !
Au passage, pour les bleus tels moi, qui veulent utiliser le cours "Arduino a l'école", même dernière version, il y a quelques erreurs . Ça fait un exercice cela dit !
Bonjour et 73 à tous. Pour les circuits imprimés , j'utilise eagle sous Linux
_________________
73 de F5TYH Luc
F5JGK
Messages : 77 Date d'inscription : 08/12/2020 Localisation : 64
Sujet: Re: Arduino pour les nuls? .... 11.01.21 20:41
Ça commence mal, je n' ai pas linux ! Et ça fait trop pour le même OM, d'apprendre l' Arduino, le C et linux en même temps Surtout que , après, il faut le graver le ci . J'ai connu l'époque où on les faisait soi même avec un et perchlorure de fer , mais c'était il y a longtemps ! Je n'ai plus le matos .
A la limite, peut être que un des 2 magasins d'elec du coin réalise cela ? A voir ...
F5TYH
Messages : 1122 Date d'inscription : 04/12/2020 Age : 58 Localisation : 14700
Sujet: Re: Arduino pour les nuls? .... 11.01.21 21:01
F5JGK a écrit:
Ça commence mal, je n' ai pas linux ! Et ça fait trop pour le même OM, d'apprendre l' Arduino, le C et linux en même temps Surtout que , après, il faut le graver le ci . J'ai connu l'époque où on les faisait soi même avec un et perchlorure de fer , mais c'était il y a longtemps ! Je n'ai plus le matos .
A la limite, peut être que un des 2 magasins d'elec du coin réalise cela ? A voir ...
Bonsoir et 73. Pour Eagle , il existe aussi sous Windows . Je l'utilise sous Linux par ce que j'utilise Linux sur mon PC. Si j'avais windows , j'utiliserai Eagle version Windows. C'est d'ailleurs sous MS-DOS que je l'ai utilisé pour la 1ere fois en 1991 au pro de l'époque (conception de cartes à microcontrôleurs)
73 à tous
_________________
73 de F5TYH Luc
Vincent
Messages : 172 Date d'inscription : 26/12/2020 Age : 43 Localisation : Achiet le Grand (62)
Sujet: Re: Arduino pour les nuls? .... 11.01.21 21:51
Bonjour, Eagle est un très bon outil, il est ergonomique et intuitif. J'ai testé KiCAD mais il est plus complexe et il vaut mieux avoir déjà avoir bossé avec des outils de CAO pour réduire le temps d'apprentissage.
Dans les outils en ligne et gratuit tu as EasyEDA, c'est celui que j'utilise (tout récemment), il a l'air d'être marié au fabricant chinois https://jlcpcb.com/ et de ce que j'ai vu tout a été pensé pour que ce soit facile de la conception à l'envoie en fabrication.
Les Chinois sont très fort dans les circuits imprimés, quand j'étais dans l'industrie j'ai même assisté à la mort de nos fabricants européen (BARCO, Atlantec, ...) les PCB que j'ai fini par devoir commander en chine, faute d'alternative, étaient d'une qualité parfaite et le prix incroyablement bas.
A tire d'exemple, je n'ai pas d'action chez JLCPCB : 5 pcb de 10cm x 10cm, 2 couches, vernis épargne vert (le grand classique), finition des pastilles et empreintes par étamage = 2$ ! 2$ pour les 5 ! ça veut dire que tu payeras en réalité quasiment que les frais de ports.
Quant bien même tu prendrais la finition or chimique (c'est ce qu'on prend dans l'industrie pour assurer une bonne planéité des composants CMS qui seront soudés et aussi pour avoir un meilleur qualité de stockage) ça ferait 18.70$ les 5 soit environ 4$ le PCB.
Citation :
Ce que je ne sais pas encore, c'est comment raccorder les 8 bits au pll02 qui est soudé . Idéalement, je suppose que au lieu d'un inter bipole a 8 lignes, des portes ET commandé par un poussoir seraient pas mal. ( Et relativement facile a faire )
Il faudrait voir un schéma, je sais ce qu'est une PLL mais ce pll02 et je ne suis pas sur d'avoir compris.
A+
F5JGK
Messages : 77 Date d'inscription : 08/12/2020 Localisation : 64
Sujet: Re: Arduino pour les nuls? .... 11.01.21 23:30
Ok, je ne savais pas qu'on pouvait pour pas cher se faire faire les ci ! Je vais voir si je peux dessiner facilement mon plan , il ne faut pas que ça devienne une grosse galère a apprendre !
Le pll02, c'est une vielle connaissance ! C'est grâce à lui que je me suis intéressé à la technique de la radio . Voir le schéma qui suit, C'est le circuit intégré qui gère le vco des postes CB a base de platine cybernet, qui équipait de grandes marques de l'époque comme Yam international, Tagra, Midland etc ... C'est grâce à lui que j'ai appris ce qu'était le code binaire , et par conséquence, comment rajouter des fréquences a un poste CB
Donc l'encodeur n'est pas comme un poste moderne, il donne a chaque position , un code sur 8 bits, qui attaque directement le PLL, et de même pour les afficheurs a led.
Messages : 77 Date d'inscription : 08/12/2020 Localisation : 64
Sujet: Re: Arduino pour les nuls? .... 14.01.21 15:43
Bonjour,
Question du jour, mes idées venant avec l'avancement du projet ! se pose al question des tableaux : par exemple, imaginons un tableau avec 4 colonnes, 1 le code binaire du PLL 2 le canal a afficher sur 3 digit ( 2 pour le v=canal de 1 a 40 et 1 pour si canal bis ) 3 la bande de 40 cx ( Normale, Inf sup etc … )
Messages : 77 Date d'inscription : 08/12/2020 Localisation : 64
Sujet: Re: Arduino pour les nuls? .... 20.01.21 18:19
Bonjour,
Petite avancée : Concernant ce bloc 4 digits : J' ai trouvé comment on peut faire afficher un nombre ( a plusieurs chiffres ) en fait ça doit exister, mais comme je n'ai trouvé que comment adresser chaque digit séparément , j'ai fait une fonction qui sépare chaque chiffre d'un nombre ( unité, dizaine, centaine etc ... ) et l'envoi a chaque digit.
Je n'ai pas trouvé comment on fait afficher les ":" ou pas au milieu.
De même, la limitation est , qu'on ne peut afficher que de 0 a 9 et de A à F . Pas d'autres caractères a priori. Si on cherche a afficher autre chose sur un digit, ça a un impact sur les autres digits ! C'est embêtant, parceque je voulais afficher par ex "InF" ou "Sup", et un petit carré pour signaler les canaux bis .
On trouve des afficheurs a 8 digits, mais je ne sais pas s'ils ont la même limitation .
F5JGK a écrit:
Bonjour, J'ai trouvé un bloc d'afficheur 4 digits avec un décodeur a 5 euro ( velleman vma 425 )
F5TYH
Messages : 1122 Date d'inscription : 04/12/2020 Age : 58 Localisation : 14700
Sujet: Re: Arduino pour les nuls? .... 20.01.21 18:56
Bonjour et mes meilleurs 73.
Concernant l'afficheur , pourquoi ne pas utiliser un afficheur LCD 2 lignes 16 caractères à la place du LED? Car il existe déjà une librairie pour l'Arduino pour le piloter :https://www.gotronic.fr/pj2-03319-2239.pdf
J'ai déjà utilisé cet afficheur par le passé c'est vraiment pas mal
PS : j'ai redimensionné la taille de quelques photos du post car elles étaient trop grandes
Mes meilleur 73 à tous
_________________
73 de F5TYH Luc
F5TYH
Messages : 1122 Date d'inscription : 04/12/2020 Age : 58 Localisation : 14700
Sujet: Re: Arduino pour les nuls? .... 20.01.21 19:09
F5JGK a écrit:
Bonjour,
Question du jour, mes idées venant avec l'avancement du projet ! se pose al question des tableaux : par exemple, imaginons un tableau avec 4 colonnes, 1 le code binaire du PLL 2 le canal a afficher sur 3 digit ( 2 pour le v=canal de 1 a 40 et 1 pour si canal bis ) 3 la bande de 40 cx ( Normale, Inf sup etc … )
je voudrais que suivant la valeur du code binaire en cours "pll" , les valeurs "bande" et "canal" soient suivant le tableau.
pouvez vous me dire dans quel domaine orienter ma recherche de doc pour gerer ce genre de tableau ?
alors je découvre l'intérêt de l'Arduino et surtout ce qui tourne autour !
dans mon magasin d'électronique préféré , j'ai trouvé un bloc d'afficheur 4 digits avec un décodeur a 5 euro ( velleman vma 425 )
mais aussi une carte Arduino mega a 29€ ,
ou le shield VMA201 a 5€
C'est génial, ca permet des montages avec quelques composants pas trop deg sans circuit imprimé spécifique !
pour te donner mon avis , je ferais un tableau à 1 dimension de 40 (40 canaux )lignes contenant chacune le code du PLL correspondant. et à coté j'aurais une variable prenant les valeurs 1 ,2 ou 3 indiquant la bande (inf, norm et sup). Ce sera , à mon avis nettement moins gourmand en mémoire que d'avoir un tableau de 120 lignes