Problème avec Code::Blocks

Salut tout le monde, alors voilà, j’étais tranquillement en train de tester un code (pour faire une calculette) et j’ai commencé par faire ma fonction (que j’ai créée) : calculette, mais code::blocks de reconnait pas cette fonction et me dit qu’il faut qu’elle n’est pas déclaré, pouvez vous m’aidez ?

#include <Arduino.h>

int x;
int y;
int op;
int resultatfinal;

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    x = 60;
    y = 5;
    op = 1;
    resultatfinal = calculette(x,y,op);

}

int calculette(int nombre1, int nombre2, int operation)
{   
    float resultat;
    switch(operation)
    {
    case 1 :
        resultat = nombre1 + nombre2;
        break;
    case 2 :
        resultat = nombre1 - nombre2;
        break;
    case 3 :
        resultat = nombre1 * nombre2;
        break;
    case 4 :
        resultat = nombre1 / nombre2;
        break;
    }
    return resultat;
}

Bonjour, Bravo pour les balises "code" mais tu n'es pas dans la bonne rubrique. Il fallait le poster ici

En mettant ta fonction devant le setup ou en faisant une déclaration cela marchera peut être mieux @+

Ok super, je le déplace, en tout cas merci, ça fonctionne ;)

Ce qu’il faut bien comprendre c’est qu’au final programmer un micro-contrôleur revient à faire de la programmation en C/C++ tout ce qu’il y a de classique.

Le cas de l’EDI Wiring/Arduino est particulier.
Pour simplifier la vie des débutants l’EDI Wiring/Arduino a “inventé” :

  • les fonctions setup() et loop()
  • la pré-déclaration automatique des fonctions.
    A partir du fichier ino l’EDI Wiring/Arduino crée un programme “cpp” qui contient la fonction main() qui elle même intègre la boucle infinie (ce que Wiring/Arduino appelle loop) .

Ces “choses” là n’existent pas nativement dans les EDI classiques comme Code::Blocks ou Eclipse.
Des plug-ins peuvent ajouter ces possibilités mais ils ne sont pas obligatoirement complets.

Si tu utilises un EDI classique et universel il est préférable de connaître les principes de base de la programmation en C/C++ classique car il y aura un certain nombre de “choses” qu’il faudra faire toi-même.

Je vois, mais une fois, j’ai voulu mettre une bibliothèque <IRremote.h> (pour les télécommandes infrarouges) et ça n’as pas fonctionné ! Le logiciel Code::Blocks prend des fichiers, alors qu’arduino prend des dossiers :confused:

La raison : Arduino pense à ta place et c'est toi qui doit penser pour Code::Blocks.