Cours:Multimetre : Différence entre versions
m (→Fichiers) |
(→Programmation sur SimulIDE) |
||
| (11 révisions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
=Planning= | =Planning= | ||
| − | * | + | *Mercredi : 8h30-12h30 14h-17h |
| − | ** | + | ** montage et test de la carte / routage / programmation sur SimulIDE |
| − | ** | + | *Jeudi : 8h30-12h30 14h-17h |
| − | + | ** étude théorique | |
| − | + | *Vendredi : 8h30-17h '''(prévoir le déjeuner sur place)''' | |
| − | * | ||
** programmation : 8h30-14h30 | ** programmation : 8h30-14h30 | ||
** évaluation: 14h30-17h | ** évaluation: 14h30-17h | ||
| Ligne 23 : | Ligne 22 : | ||
'''*Fichiers Kicad''' | '''*Fichiers Kicad''' | ||
**[[Media:2024 FichierEtudiantKiCad.zip]] | **[[Media:2024 FichierEtudiantKiCad.zip]] | ||
| + | '''*Fichiers SimulIDE''' | ||
| + | **[[Media:TEST modes.sim1]] | ||
*liens tinkercad | *liens tinkercad | ||
**[https://www.tinkercad.com/things/jgsCCo0HmtU simulation pour ohmmètre] | **[https://www.tinkercad.com/things/jgsCCo0HmtU simulation pour ohmmètre] | ||
| Ligne 37 : | Ligne 38 : | ||
==Vérification du fonctionnement de la carte== | ==Vérification du fonctionnement de la carte== | ||
| − | *Télécharger le fichier suivant : | + | *Télécharger le fichier suivant qui contient le programme de test à uploader dans l'Arduino.: |
[[Media:test_multimetre.ino.hex|test_multimetre.ino.hex]] | [[Media:test_multimetre.ino.hex|test_multimetre.ino.hex]] | ||
| − | * | + | *Ouvrir un terminal (console en mode texte) avec la ligne de commande suivante : |
avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:Test_multimetre.ino.hex:i | avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:Test_multimetre.ino.hex:i | ||
| + | |||
| + | |||
| + | Une fois le programme téléchargé dans l'arduino nano, lancer un environnement Arduino IDE (sans programme) et démarrer le terminal de l'Arduino: le programme de test attend des commandes à travers un menu pour tester les différents composants de la carte. | ||
| + | |||
| + | Remarque 1 : le port USB0 est parfois à remplacer par le port USB1 et la vitesse de transmission (115200 bit/s) est parfois à positionner à la moitié (57600). | ||
| + | |||
| + | Remarque 2 : le deuxième fichier (.asm) contient le source du programme (en Assembleur!!). bon courage ;) | ||
==Programmation sur tinkercad== | ==Programmation sur tinkercad== | ||
| Ligne 47 : | Ligne 55 : | ||
https://www.tinkercad.com/things/dSQS8on1FL6 | https://www.tinkercad.com/things/dSQS8on1FL6 | ||
| + | ==Programmation sur SimulIDE== | ||
| + | |||
| + | réglages pour utiliser le compilateur Arduino avec SimulIDE : <br> | ||
| + | |||
| + | Aller dans les paramètres (Settings) de SimulIDE et effectuer le paramétrage proposé dans le lien suivant pour pouvoir utiliser le compilateur Arduino avec SimulIDE. <br> | ||
| + | |||
| + | |||
| + | **[[Media:Arduino sous SimulIDE.jpg]] | ||
| + | |||
| + | ==Editeur série== | ||
| + | |||
| + | <source lang=cpp> | ||
| + | |||
| + | void setup() | ||
| + | { | ||
| + | Serial.begin(9600); | ||
| + | } | ||
| + | void loop() | ||
| + | { | ||
| + | Serial.println("running"); | ||
| + | delay(1000); | ||
| + | } | ||
| + | |||
| + | </source> | ||
| − | ==Fonction | + | ==Interruption associée à l'appui sur un bouton== |
| + | |||
| + | <source lang=cpp> | ||
| + | |||
| + | void maFonction() | ||
| + | { | ||
| + | // actions à réaliser à chaque appui | ||
| + | } | ||
| + | |||
| + | void setup() | ||
| + | { | ||
| + | attachInterrupt(numInterruption,maFonction,typeDeChangement); | ||
| + | // numInterruption : 0 ou 1 selon la broche utilisée ( D2 ou D3 ) | ||
| + | // typeDeChangement : FALLING ou RISING ou CHANGE | ||
| + | } | ||
| + | |||
| + | void loop() | ||
| + | { | ||
| + | // si (mode 1) : mesure de résistance | ||
| + | // alors … | ||
| + | // sinon si (mode 2) : mesure de tension | ||
| + | // alors … | ||
| + | // sinon si (mode 3) : mesure de courant | ||
| + | // alors … | ||
| + | } | ||
| + | |||
| + | </source> | ||
| + | |||
| + | ==Fonction affiche7sgt== | ||
<source lang=cpp> | <source lang=cpp> | ||
| Ligne 61 : | Ligne 121 : | ||
affiche7sgt(i); // permettra d'afficher le chiffre i (entre 0 et 9 ! ) | affiche7sgt(i); // permettra d'afficher le chiffre i (entre 0 et 9 ! ) | ||
affiche7sgt(n%10); // permettra d'afficher la valeur des unités de n | affiche7sgt(n%10); // permettra d'afficher la valeur des unités de n | ||
| + | </source> | ||
| + | |||
| + | ==Fonction multiplexage== | ||
| + | |||
| + | <source lang=cpp> | ||
| + | |||
| + | #include <TimerOne.h> | ||
| + | volatile int valeur=0; // volatile est nécessaire lorsqu'on utilise attachInterrupt | ||
| + | int digit=1; // variable qui indique sur quel digit on affiche la valeur | ||
| + | |||
| + | void multiplexage() | ||
| + | { | ||
| + | // la variable digit change de valeur à chaque exécution de la fonction (de 1 à 4) | ||
| + | // si digit vaut 1, on affiche la valeur des unités de la variable valeur | ||
| + | // sinon si digit vaut 2, on affiche la valeur des dizaines de la variable valeur | ||
| + | // ... | ||
| + | |||
| + | } | ||
| + | |||
| + | void setup() { | ||
| + | //initialiser les choses à initialiser ! | ||
| + | //mise en place de l'action périodique | ||
| + | Timer1.initialize(5000); | ||
| + | Timer1.attachInterrupt(multiplexage); | ||
| + | } | ||
| + | |||
| + | void loop() | ||
| + | { | ||
| + | valeur = valeur + 1 ; | ||
| + | delay(100); | ||
| + | } | ||
</source> | </source> | ||
Version actuelle datée du 4 novembre 2025 à 11:17
Sommaire
Planning
- Mercredi : 8h30-12h30 14h-17h
- montage et test de la carte / routage / programmation sur SimulIDE
- Jeudi : 8h30-12h30 14h-17h
- étude théorique
- Vendredi : 8h30-17h (prévoir le déjeuner sur place)
- programmation : 8h30-14h30
- évaluation: 14h30-17h
KiCad
- tutoriels KiCad
Saisie de schéma
Réalisation d'un PCB
Fichiers
*Fichiers Kicad
*Fichiers SimulIDE
- liens tinkercad
- Liens feuilles de calculs
- Fichiers eagle :
Programmation
Vérification du fonctionnement de la carte
- Télécharger le fichier suivant qui contient le programme de test à uploader dans l'Arduino.:
- Ouvrir un terminal (console en mode texte) avec la ligne de commande suivante :
avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:Test_multimetre.ino.hex:i
Une fois le programme téléchargé dans l'arduino nano, lancer un environnement Arduino IDE (sans programme) et démarrer le terminal de l'Arduino: le programme de test attend des commandes à travers un menu pour tester les différents composants de la carte.
Remarque 1 : le port USB0 est parfois à remplacer par le port USB1 et la vitesse de transmission (115200 bit/s) est parfois à positionner à la moitié (57600).
Remarque 2 : le deuxième fichier (.asm) contient le source du programme (en Assembleur!!). bon courage ;)
Programmation sur tinkercad
https://www.tinkercad.com/things/dSQS8on1FL6
Programmation sur SimulIDE
réglages pour utiliser le compilateur Arduino avec SimulIDE :
Aller dans les paramètres (Settings) de SimulIDE et effectuer le paramétrage proposé dans le lien suivant pour pouvoir utiliser le compilateur Arduino avec SimulIDE.
Editeur série
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.println("running");
delay(1000);
}
Interruption associée à l'appui sur un bouton
void maFonction()
{
// actions à réaliser à chaque appui
}
void setup()
{
attachInterrupt(numInterruption,maFonction,typeDeChangement);
// numInterruption : 0 ou 1 selon la broche utilisée ( D2 ou D3 )
// typeDeChangement : FALLING ou RISING ou CHANGE
}
void loop()
{
// si (mode 1) : mesure de résistance
// alors …
// sinon si (mode 2) : mesure de tension
// alors …
// sinon si (mode 3) : mesure de courant
// alors …
}
Fonction affiche7sgt
// ! bien déclarer les broches en sorties !
void affiche7sgt(uint8_t n)
{
PORTB=(PORTB&0xf0)|(n&0x0f);
}
// exemple d'utilisation
affiche7sgt(2); // permettra d'afficher la valeur 2
affiche7sgt(i); // permettra d'afficher le chiffre i (entre 0 et 9 ! )
affiche7sgt(n%10); // permettra d'afficher la valeur des unités de n
Fonction multiplexage
#include <TimerOne.h>
volatile int valeur=0; // volatile est nécessaire lorsqu'on utilise attachInterrupt
int digit=1; // variable qui indique sur quel digit on affiche la valeur
void multiplexage()
{
// la variable digit change de valeur à chaque exécution de la fonction (de 1 à 4)
// si digit vaut 1, on affiche la valeur des unités de la variable valeur
// sinon si digit vaut 2, on affiche la valeur des dizaines de la variable valeur
// ...
}
void setup() {
//initialiser les choses à initialiser !
//mise en place de l'action périodique
Timer1.initialize(5000);
Timer1.attachInterrupt(multiplexage);
}
void loop()
{
valeur = valeur + 1 ;
delay(100);
}