Compatibilité entre un code fonctionnant dans un Arduino Nano et un ATtiny85
bonjour, j'ai réalisé un code pour:
- allumer 2 leds flash avec une entrée qui change d'état;
- monter un relais lorsqu'un capteur effet hall envoi une fréquence supérieure à un consigne.
le code fonctionne très bien dans le nano mais pas dans l'attiny85.
je suis convaincu que c'est un problème de déclaration des e/s de l'attiny.
je ne trouve pas de syntaxe des spécifs de ce µp
voici le code "nano"
voici le code "attiny85
dans celui-i les leds s'allument bien en fonction de l'état de "etatcommand" mais pas la comparaison de la durée.
si quelqu'un peut m'aider..merci d'avance
- allumer 2 leds flash avec une entrée qui change d'état;
- monter un relais lorsqu'un capteur effet hall envoi une fréquence supérieure à un consigne.
le code fonctionne très bien dans le nano mais pas dans l'attiny85.
je suis convaincu que c'est un problème de déclaration des e/s de l'attiny.
je ne trouve pas de syntaxe des spécifs de ce µp
voici le code "nano"
code: [select]
/*************************************
* flash et controle de débit *
* pour cnc6040 avec un attiny85 *
* flash-et-debit-nano juil 17 *
**************************************/
/****************************
* définition des constantes *
*****************************/
int laps1 = 20; // temps d'allumage leds
int laps2 = 100; //temps d'extinction des leds
int consigne = 0;
int consigne2 = 0;
int etatcommand = 0;
unsigned long duree,dureeh,dureel,duree2;
// entrée
int commandeflash =a5; //
int entreemesure = 4; //
int analogconsigne =a2; //
//sortie
#define led_sortie 2 // pin 4 patte 3 led flash
#define sortiedebitcorrect 3 // pin 3 patte 2 débit correct
void setup()
{
pinmode(entreemesure, input);
pinmode(entreemesure, input_pullup);
pinmode(commandeflash , input); // on déclare le "commandeflash" en entrée (2)
pinmode(analogconsigne, input);
digitalwrite(commandeflash, low); //on active la résistance de pull-up en mettant la broche à l'état bas (mais cela reste toujours une entrée)
/**************************
* declaration des sorties *
**************************/
pinmode(led_sortie, output ); //on declare ledaensortie en sortie
digitalwrite(led_sortie, low);//on force la sortie au repos.
pinmode(sortiedebitcorrect, output ); //on declare ledcensortie en sortie (entreemesure 13)
digitalwrite(sortiedebitcorrect, low );//on force ledcensortie au repos.
serial.begin(9600);
}
void loop()
{
consigne = analogread(analogconsigne);
dureeh = pulsein(entreemesure, high);
dureel = pulsein(entreemesure, low);
duree = dureeh+dureel;
duree2 = (duree/150);
if (duree2 >=(consigne) || duree2 <10)
// 238.40 = 41hz = 45l/h
//duree2 = 993 = 10hz = 10l/h
//duree2 = 198 = 50hz = 55l/h
//duree2 = 99 = 100hz = 110l/h
{
digitalwrite(sortiedebitcorrect,low);
}
else
{
digitalwrite(sortiedebitcorrect,high);
}
etatcommand = analogread(commandeflash);
if (etatcommand >= 800)
{
digitalwrite(led_sortie,high);
delay (laps1);
digitalwrite(led_sortie,low);
delay (laps2);
digitalwrite(led_sortie,high);
delay (laps1);
digitalwrite(led_sortie,low);
delay (laps2);
digitalwrite(led_sortie,high);
delay (laps1);
digitalwrite(led_sortie,low);
delay (laps2);
digitalwrite(led_sortie,high);
delay (laps1);
digitalwrite(led_sortie,low);
delay (laps2);
}
delay(500);
serial.print("duree2 :");
serial.print(duree2);
serial.print("\n\r");
serial.print("consigne :");
serial.print(consigne);
serial.print("\n\r");
serial.print("etatcommand :");
serial.print(etatcommand);
serial.print("\n\r");
}
voici le code "attiny85
code: [select]
/*************************************
* flash et controle de débit *
* pour cnc6040 avec un attiny85 *
* flash-et-debit-attiny85 juil 17 *
**************************************/
/****************************
* définition des constantes *
*****************************/
int laps1 = 20; // temps d'allumage leds
int laps2 = 100; //temps d'extinction des leds
int consigne = 0;
int consigne2 = 0;
int etatcommand = 0;
unsigned long duree,dureeh,dureel,duree2;
// entrée
int commandeflash = 1; // pin 1 patte 6 "la broche est en route".
int entreemesure = 0; // pin 0 patte 5 capteur à effet hall
int analogconsigne = a2; // pin 2 patte 7 potentiomètre de consigne
//sortie
#define led_sortie 4 // pin 4 patte 3 led flash
#define sortiedebitcorrect 3 // pin 3 patte 2 débit correct
void setup()
{
pinmode(entreemesure, input);
pinmode(analogconsigne, input);
pinmode(commandeflash , input);
/**************************
* declaration des sorties *
**************************/
pinmode(led_sortie, output ); //on declare led en sortie
digitalwrite(led_sortie, low);//on force la sortie au repos.
pinmode(sortiedebitcorrect, output ); //on declare relais en sortie
digitalwrite(sortiedebitcorrect, low );//on force à 0 relais en sortie
+----+
}
void loop()
{
consigne = analogread(analogconsigne);
dureeh = pulsein(entreemesure, high);
dureel = pulsein(entreemesure, low);
duree = dureeh+dureel;
duree2 = (duree/150);
if (duree2 >=(consigne) || duree2 <10)
// 238.40 = 41hz = 45l/h
//duree2 = 993 = 10hz = 10l/h
//duree2 = 198 = 50hz = 55l/h
//duree2 = 99 = 100hz = 110l/h
{
digitalwrite(sortiedebitcorrect,low);
}
else
{
digitalwrite(sortiedebitcorrect,high);
}
etatcommand = digitalread(commandeflash);
if (etatcommand == high)
{
digitalwrite(led_sortie,high);
delay (laps1);
digitalwrite(led_sortie,low);
delay (laps2);
digitalwrite(led_sortie,high);
delay (laps1);
digitalwrite(led_sortie,low);
delay (laps2);
digitalwrite(led_sortie,high);
delay (laps1);
digitalwrite(led_sortie,low);
delay (laps2);
digitalwrite(led_sortie,high);
delay (laps1);
digitalwrite(led_sortie,low);
delay (laps2);
}
delay(500);
}
" dans celui-i les leds s'allument bien en fonction de l'état de "etatcommand" mais pas la comparaison de la durée.
si quelqu'un peut m'aider..merci d'avance
la patte 7 de l attiny85 est a1
remplacer
int analogconsigne = a2; // pin 2 patte 7 potentiomètre de consigne
par
int analogconsigne = a1; // pin 2 patte 7 potentiomètre de consigne
remplacer
int analogconsigne = a2; // pin 2 patte 7 potentiomètre de consigne
par
int analogconsigne = a1; // pin 2 patte 7 potentiomètre de consigne
Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Compatibilité entre un code fonctionnant dans un Arduino Nano et un ATtiny85
arduino
Comments
Post a Comment