Cours:Multimetre

De troyesGEII
Révision datée du 4 novembre 2025 à 11:16 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

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. suivre le lien suivant et

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