Cours:Multimetre : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
m (Fichiers)
m (Programmation)
Ligne 47 : Ligne 47 :
 
https://www.tinkercad.com/things/dSQS8on1FL6
 
https://www.tinkercad.com/things/dSQS8on1FL6
  
 +
==Editeur série==
  
==Fonction affiche==
+
<source lang=cpp>
 +
 
 +
void setup()
 +
{
 +
  Serial.begin(9600);
 +
}
 +
void loop()
 +
{
 +
  Serial.println("running");
 +
  delay(1000);
 +
}
 +
 
 +
</source>
 +
 
 +
==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 104 :
 
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 du 18 octobre 2025 à 17:54

Planning

  • Lundi : 8h30-12h30 14h-17h
    • dossier : 8h30-11h15 14h-17h
    • formation KiCad de 11h30 à 12h30
  • Mardi : 8h30-...
    • montage et test de la carte / routage
  • Mercredi : 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

Programmation

Vérification du fonctionnement de la carte

  • Télécharger le fichier suivant :

test_multimetre.ino.hex

  • Programmer dans un terminal avec la ligne de commande suivante :
avrdude -v -patmega328p -carduino -P/dev/ttyUSB0 -b115200 -D -Uflash:w:Test_multimetre.ino.hex:i

Programmation sur tinkercad

https://www.tinkercad.com/things/dSQS8on1FL6

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);
}