Bonjour à tous,
Je suis nouveau dans la communauté arduino, et je rencontre quelques problèmes concernant une interruption externe.
J'ai programmé mon atmega328, puis placé sur mon circuit imprimé. Le microcontrôlleur fonctionne avec son horloge interne à 8MHz, et j'ai connecté une resistance de 10k à la broche reset. Le problème est que, l'interruption ne se fait jamais, et fait redémarrer le circuit
(une sorte de reset).
Voici le code, de mon côté, je sèche:
#include <math.h>
int bouton = 0;
volatile float maximum=700;
int dizaine;
int unite;
float val;
void setup()
{
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(15, OUTPUT);
pinMode(16, OUTPUT);
for (int i = 3; i < 14; i++)
{
pinMode(i, OUTPUT);
}
pinMode(2, INPUT);
digitalWrite(2,HIGH);
attachInterrupt(bouton, normalisation, CHANGE);
}
int nombre_d(int number_d) {
if (number_d == 0)
{
digitalWrite(1, HIGH);
digitalWrite(15, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(8, LOW);
}
if (number_d == 1)
{
digitalWrite(1, HIGH);
digitalWrite(15, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(8, LOW);
}
if (number_d == 2)
{
digitalWrite(1, LOW);
digitalWrite(15, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(8, HIGH);
}
if (number_d == 3)
{
digitalWrite(1, HIGH);
digitalWrite(15, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(8, HIGH);
}
if (number_d == 4)
{
digitalWrite(1, HIGH);
digitalWrite(15, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(8, HIGH);
}
if (number_d == 5)
{
digitalWrite(1, HIGH);
digitalWrite(15, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(8, HIGH);
}
if (number_d == 6)
{
digitalWrite(1, HIGH);
digitalWrite(15, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(8, HIGH);
}
if (number_d == 7)
{
digitalWrite(1, HIGH);
digitalWrite(15, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(8, LOW);
}
if (number_d == 8)
{
digitalWrite(1, HIGH);
digitalWrite(15, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(8, HIGH);
}
if (number_d == 9)
{
digitalWrite(1, HIGH);
digitalWrite(15, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(8, HIGH);
}
}
int nombre_u(int number_u) {
if (number_u == 0)
{
digitalWrite(16, HIGH);
digitalWrite(12, HIGH);
digitalWrite(10, HIGH);
digitalWrite(13, LOW);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(11, HIGH);
}
if (number_u == 1)
{
digitalWrite(16, LOW);
digitalWrite(12, LOW);
digitalWrite(10, LOW);
digitalWrite(13, LOW);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(11, LOW);
}
if (number_u == 2)
{
digitalWrite(16, HIGH);
digitalWrite(12, LOW);
digitalWrite(10, HIGH);
digitalWrite(13, HIGH);
digitalWrite(9, HIGH);
digitalWrite(7, LOW);
digitalWrite(11, HIGH);
}
if (number_u == 3)
{
digitalWrite(16, LOW);
digitalWrite(12, LOW);
digitalWrite(10, HIGH);
digitalWrite(13, HIGH);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(11, HIGH);
}
if (number_u == 4)
{
digitalWrite(16, LOW);
digitalWrite(12, HIGH);
digitalWrite(10, LOW);
digitalWrite(13, HIGH);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(11, LOW);
}
if (number_u == 5)
{
digitalWrite(16, LOW);
digitalWrite(12, HIGH);
digitalWrite(10, HIGH);
digitalWrite(13, HIGH);
digitalWrite(9, LOW);
digitalWrite(7, HIGH);
digitalWrite(11, HIGH);
}
if (number_u == 6)
{
digitalWrite(16, HIGH);
digitalWrite(12, HIGH);
digitalWrite(10, HIGH);
digitalWrite(13, HIGH);
digitalWrite(9, LOW);
digitalWrite(7, HIGH);
digitalWrite(11, HIGH);
}
if (number_u == 7)
{
digitalWrite(16, LOW);
digitalWrite(12, LOW);
digitalWrite(10, HIGH);
digitalWrite(13, LOW);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(11, LOW);
}
if (number_u == 8)
{
digitalWrite(16, HIGH);
digitalWrite(12, HIGH);
digitalWrite(10, HIGH);
digitalWrite(13, HIGH);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(11, HIGH);
}
if (number_u == 9)
{
digitalWrite(16, LOW);
digitalWrite(12, HIGH);
digitalWrite(10, HIGH);
digitalWrite(13, HIGH);
digitalWrite(9, HIGH);
digitalWrite(7, HIGH);
digitalWrite(11, HIGH);
}
}
void normalisation() {
maximum=analogRead(0);
}
void loop() {
val=(analogRead(0)/maximum)*100;
dizaine=round(floor(val/10));
unite=round(floor(val-10*floor(val/10)));
if ( dizaine > 9 ) {
dizaine=9;
unite=9;
}
nombre_d(dizaine);
nombre_u(unite);
delay(300);
}