Les différences entre le C standard et le C Arduino

Fermé
Batpillet - Modifié par Batpillet le 15/03/2015 à 21:11
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 18 mars 2015 à 22:01
Bonsoir,
Je suis en première et je dois préparer un projet qui soulève les différences entre les langages C standard et C Arduino. J'ai beau chercher je ne trouve pas grand chose... J'en appel à ceux qui connaissent un peu cette plateforme. Pour l'instant tout ce que je sais c'est que le C Arduino est une simplification du C standard avec certaines limitations.
En espérant pouvoir m'aider,
cordialement Baptiste
A voir également:

2 réponses

Seichiroku Messages postés 140 Date d'inscription dimanche 15 mars 2015 Statut Membre Dernière intervention 8 novembre 2015 7
15 mars 2015 à 21:13
Salut

je suis aussi actuellement amené a utiliser ce logiciel..... veux-tu que je demande a mon prof ?
0
Bonsoir
merci de votre réponse rapide :)
Oui ce serais super si vous pouviez avoir quelques informations sur ces différences car je bloque pas mal sur le sujet :/... En fait je débute en programmation et je ne connais pas très bien les deux langages...
0
Seichiroku Messages postés 140 Date d'inscription dimanche 15 mars 2015 Statut Membre Dernière intervention 8 novembre 2015 7
16 mars 2015 à 17:22
Oki
Perso je le vois demain donc j'essayerai d'y penser
0
Seichiroku Messages postés 140 Date d'inscription dimanche 15 mars 2015 Statut Membre Dernière intervention 8 novembre 2015 7
17 mars 2015 à 12:51
il me dit que tu dois contacter Mr.Canné de l'académie de Nantes
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
17 mars 2015 à 22:06
Bonjour,

Je ne connais pas arduino, mais un peu le C standard.
Déjà de quel norme C parles-tu ? ISO C89/90 ou C99 ?

Tu peux commencer par poster un exemple de programme arduino et on peut te dire ce qui n'est pas standard. Qu'en penses-tu ?

Note : pour poster ton code, utilise bien la balise <code c>.
Exemple :
<code c>ici tu mets ton code</code>
0
Bonsoir,

Merci de vos réponses :)
Alors pour la norme, je ne la connais malheureusement pas :/
En fait les programmes arduino sont composés de 2 parties: le setup et le loop. (initialisation et boucle comme vous l'aurez compris) c'est pour l'instant la seule différence que j'ai pu constater en comparant avec le langage C.

Voici un exemple de programme qui permet de mesurer en continu tres simplement la température a l'intérieur d'une pièce:

 //Déclaration et initialisation des variables
  float mesure=0;        //Variable pour le stockage mesure retournée par le capteur
  float tension=0;       //Variable pour le stockage de la tension 
  float temperature=0;   //Variable pour le stockage de la température 
  float tempmin=100;     //Temperature min
  float tempmax=0;       //Temperature max
  int portana0 = 0;      //Numéro du port analogique sur lequel la température est mesurée

//Traitements initialisation
  void setup()
  {
    analogReference(INTERNAL); //Permet de fixer la temperature de refernce à 1,1 volt
    Serial.begin(9600);        //initialisation de la liaison série à 9 600 bauds
  }

//Traitements itératifs
  void loop()
  {
    mesure = analogRead(portana0);  //Lecture de la valeur fournie par le capteur de température
    tension = mesure * 1.1 / 1024;  //Conversion en tension (en volt)
    
    temperature = tension * 100;    //Conversion en température (en degré Celsius)
    if (temperature < tempmin) {tempmin = temperature;} //Calcul temperature mini
    if (temperature > tempmax) {tempmax = temperature;} //Calcul temperature maxi
    
    //Envoi de la tension et des températures au PC par la liaison série pour affichage dans la console
    Serial.print("Tension : "); Serial.print (tension); Serial.print(" Volts - ");         
    Serial.print("Temperatures :"); 
    Serial.print(" >Actuelle : "); Serial.print (temperature); 
    Serial.print(" >Mini : "); Serial.print (tempmin); 
    Serial.print (" >Max : "); Serial.println (tempmax);
    //Attente de 5 secondes avant de faire une nouvelle mesure
    delay(5000);                    
  }


Voici la liste des mots clés chez Arduino : http://arduino.cc/en/Reference/HomePage

Merci de votre aide ! :)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
17 mars 2015 à 22:27
Alors déjà :
//Déclaration et initialisation des variables
Pas bon en ISO C89/90. On utilise /*...*/. Mais ok en C99.

Les variables globales sont déconseillées.

void setup()
Prototype partiellement défini. Il vaut mieux mettre : voir setup(void)
Idem pour les autres prototypes.

tension = mesure * 1.1 / 1024;
Les variables sont de type float, mais tu multiplies avec un double. Du coup, conversion en double puis reconversion en float. Il vaudrait mieux n'utiliser que des float (1.1f) ou mettre les variables en double (conseillé sauf raison particulière).

delay(5000);
Ce n'est pas standard.

Voilou pour commencer.

Cdlt,
0
Super merci pour ces informations :)
quelques questions : quelle sont les différences entre les 2 normes ? Et en C comment est-ce que l'on pose un délai du type "delay(5000);" ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
18 mars 2015 à 22:01
La différence entre les 2 normes pourrait faire un article complet (d'ailleurs, il y a des blogs qui en parlent). Mais ce qu'on peut dire, c'est que certaines fonctionnalités du C++ ont été portées en C.
Le C ne prévoit pas de manière standard la pause. Les fonctions du type delay(...) s'appuient sur des fonctions systèmes (API windows par exemple).

Cdlt,
0