Cours:Multimetre

De troyesGEII
Révision datée du 18 octobre 2025 à 17:54 par F.sisternas (discussion | contributions) (Programmation)
Aller à : navigation, rechercher

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