Cours:Multimetre

De troyesGEII
Révision datée du 4 novembre 2025 à 11:08 par F.sisternas (discussion | contributions) (Programmation sur SimulIDE)
Aller à : navigation, rechercher

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

Programmation

Vérification du fonctionnement de la carte

  • Télécharger le fichier suivant qui contient le programme de test à uploader dans l'Arduino.:

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


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

à venir : réglages pour permettre d'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);
}