Cours:Multimetre : Différence entre versions
(→Programmation sur SimulIDE) |
|||
| Ligne 57 : | Ligne 57 : | ||
==Programmation sur SimulIDE== | ==Programmation sur SimulIDE== | ||
| − | à venir : réglages pour permettre d'utiliser le compilateur Arduino avec SimulIDE | + | à venir : réglages pour permettre d'utiliser le compilateur Arduino avec SimulIDE |
| + | **[[Media:Fichier:Arduino sous SimulIDE.jpg]] | ||
==Editeur série== | ==Editeur série== | ||
Version du 4 novembre 2025 à 11:08
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
à 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);
}