dans le cadre d'un tp pour mon école je suis sensé faire une simulation sur proteus avec un ATMEGA328P , sur papier c'est simple , on a une une tension qui passe par un diviseur de tension avec une photorésistance, si la tension est supérieure à 2,5V on envoie par une pin de sortie 5V et si elle est inférieure , on "envoie" 0V
int val;
float tension;
void setup() {
}
void loop() {
val=analogRead(8); //Recupere la valeur analogique
tension=(val*5)/1000; // Transformer la valeur en tension
if(tension>2,5) //Si la tension est supérieure à 2,5
{
digitalWrite(5,1); // On envoie une tension de 5V
}
else //sinon
{
digitalWrite(5,0); // On met une tension à 0V
}
}
Cependant là ou j'ai un problème c'est sur proteus , je n'ai pas réussi à trouver d'explications claire sur l'utilisation du micro contrôleur , certains branche en AVC d'autres non , pour le code certains prennent l'avant dernier lien d'autre le dernier et même sur les pins ce n'est vraiment pas claire. Bref si quelqu'un pouvait m'aider j'en serais extrêmement reconnaissant , voir ci-dessous le montage proteus.
En C/C++ une nombre décimal s'écrit 2.5 et non 2,5
Ce que tu fais ici c'est que tu compares à 2 puis tu prends la valeur 5 donc la condition est toujours vraie et le if () est toujours exécuté
Remarques:
il n'y a pas de pin analogique 8 (numérotée 8 dans le framework) pour un atmega328
le calcul de la tension est fausse. Le convertisseur a 1024 pas et non 1000.
Merci pour les corrections! Même en regardant la datasheet de l'ATMEGA je ne comprend pas à quoi correspond les différentes pins , serait-il possible de m'éclairer la dessus ?
val étant un int, le calcul (val*5)/1000 est un entier qui sera converti en réel pour l'affecter à tension. Cette dernière ne pourra donc contenir que des valeurs entières
C'est la première fois que je travaille sur un micro contrôleur directement donc j'ai juste essayer de faire ce que je connais de arduino ? Que faudrait-il faire ici ?