Bonjour ,
Je voudrais savoir s'il y a une différence entre un arduino uno et un raspberry pour une initiation au développement embarqué .
lequel est le plus adapté pour faire du dév C .
lequel est plus souple d'utilisation .
merci bcp
-----
Bonjour ,
Je voudrais savoir s'il y a une différence entre un arduino uno et un raspberry pour une initiation au développement embarqué .
lequel est le plus adapté pour faire du dév C .
lequel est plus souple d'utilisation .
merci bcp
https://www.randco.fr/actualites/201...pi-vs-arduino/
Il semble que si tu veux mettre la main dans le cambouis, c'est mieux d'avoir un arduino.
L'arduino permet évidemment la programmation en C et est beaucoup plus facile d'accès que la Raspberry, la mise en oeuvre demande 5 minutes.
Par contre à ce qu'on m'a expliqué la Raspberry nécessite beaucoup plus de travail pour démarrer, longue compilation de nombreuses library, bref c'est plus puissant mais beaucoup plus lourd.
Pour débuter sans se faire peur l'arduino est très bien.
merci à vous
Pour faire simple, l'un est un microcontroleur (dans Arduino) et l'autre est un PC avec un système d'exploitation (le Raspberry)
Ça dépend donc qu'est ce que tu entends par embarqué car c'est carrément différent.
Là où il n'y a pas de solution, il n'y a pas de problème.
et bien celui pour lequel il est plus facile de retrouver des composants à interconnecter avec (leds , capteurs ...)
Pour moi (qui a fait des études largement majoritairement en électronique mais qui a une licence en informatique) il y a deux niveaux en développement informatique embarqués.
Niveau 1: tu fais du C proche du hardware. L'electronicien est plus à l'aise (compilateur C vs Datasheet des composants et de son microcontroleur )
Niveau 2 : tu fais du C proche du système d'exploitation. L'informaticien est plus à l'aise (compilateur C vs bibliothèques système et autres framework, API, glibc etc....)
Bon il y a le niveaux que tu choisies mais il faut aussi rester rationnel par rapport au projet. Si tu veux faire une barrière infrarouge qui lorsqu'elle est coupée, fait sonner un buzzer.... Le choix entre Arduino et Raspberry est vite fait. Comme je disais ce dernier est un PC et se trimballer un Linux avec un système de fichiers, un serveur X (bureau graphique), gestion d'une souris, clavier, sortie HDMI, 1Go de RAM etc... Pour une barrière infrarouge ? Ça n'a pas de sens.
Là où il n'y a pas de solution, il n'y a pas de problème.
Merci Vincent , cela devient de plus en plus clairPour moi (qui a fait des études largement majoritairement en électronique mais qui a une licence en informatique) il y a deux niveaux en développement informatique embarqués.
Niveau 1: tu fais du C proche du hardware. L'electronicien est plus à l'aise (compilateur C vs Datasheet des composants et de son microcontroleur )
Niveau 2 : tu fais du C proche du système d'exploitation. L'informaticien est plus à l'aise (compilateur C vs bibliothèques système et autres framework, API, glibc etc....)
Bon il y a le niveaux que tu choisies mais il faut aussi rester rationnel par rapport au projet. Si tu veux faire une barrière infrarouge qui lorsqu'elle est coupée, fait sonner un buzzer.... Le choix entre Arduino et Raspberry est vite fait. Comme je disais ce dernier est un PC et se trimballer un Linux avec un système de fichiers, un serveur X (bureau graphique), gestion d'une souris, clavier, sortie HDMI, 1Go de RAM etc... Pour une barrière infrarouge ? Ça n'a pas de sens.
Salut,
Sinon entre ces 2 mondes il ya les esp8266 qui sont super accecible, fiables - permette de faire de l'electronique legere avec une porte de sortie vers l'informatique en wifi.
On peut aussi codé en c++, ce qui sympa pour les debutants (fini les buffer overflow à moindre effort).
Et c'est compatible arduino il me semble (pas testé).
Je ne m'aventure pas trop pret du java pour cause de traumatisme etant jeunne padawan mais oui effectivement java c'est de la prog objet.
Le c++ est du c object et pour le debutant le fait d'avoir l'object string (chaine de caracteres) à disposition aide grandement à manipuler les données sans avoir à utiliser des pointeurs char * de taille limitée (avec le risque de lire/ecrire à coté des case memoire alloué = buffer overflow).
L'object string est composé de char* pour faire simple, il existe plein de methodes toute prete pour les manipuler : chercher une chaine de caracteres, la convertir en nombre entier, coller 2 chaines de carateres ensemble, etc...
En C faut faire tout ca à la mano, c'est plus long et il ya plus de risque d'erreur - c'est aussi un bon apprentissage.
<< my 2 cents >>
Le C est un langage de programmation fonctionnelle
Le C++ est un langage orienté objet
Le Java est un langage objet (tout comme le C# au passage pour avoir l'équivalent dans le monde du C)
Pour moi le C est bien adapté aux uCPU, coder en C++ sur un CPU est faisable (Arduino) mais je trouve que l'on s'éloigne du matériel et que l'on perd de vue les ressources disponibles/utilisées (ce qui pour moi est mal mais c'est un avis discutable)
Le C++ est bien adapté à des projets plus complexes et sur une machine disposant de bonnes ressources (allocation dynamique d'objet, polymorphisme sont très utilises quand on code avec une BDD et des datagrid dans un webservice par exemple, mais ça perd de son sens si on a 512 octets de RAM et un CPU 8b à 8MHz)
Java et C# sont des langages objet (donc pur objet), il sont la plupart du temps interprétés ou pseudo-compilés, la mémoire est géré de façon cool, le système est intelligent (marshalling et garbage collector par exemple)
Pour moi :
uCPU -> C
R-Pi (ou autre PC) -> C# ou Java
Le C++ sera à choisir lorsque l'on veut faire du code qui va vite (petit CPU, drivers, gros calculs ...etc...)
Dernière modification par Seb.26 ; 03/04/2017 à 09h58.
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
N'importe quoi .....
Non, ou plutôt "pas que" : C++ est multi-paradigme; il peut être utilisé en POO mais supporte une programmation non-objet.Le C++ est un langage orienté objet
Oui, pour java et C#, mais je ne comprends pas ce que veut dire :Le Java est un langage objet (tout comme le C# au passage pour avoir l'équivalent dans le monde du C)
pour avoir l'équivalent dans le monde du CS'emm.dé avec du C++ dans ce cas, faut le vouloir. Ce sont les cas ou java et C# sont parfaitement adaptés.Le C++ est bien adapté à des projets plus complexes et sur une machine disposant de bonnes ressources (allocation dynamique d'objet, polymorphisme sont très utilises quand on code avec une BDD et des datagrid dans un webservice par exemple)
... pas dans ce sens là ... Linuxman99 est bien loin de ces considérations ...
-> tu écris des fonctions et ton code est exécuté ligne à ligne, fonctions après fonctions ...
Comme tous les langages ... rien ne t’empêche de faire du pseudo C en Java ... c'est stupide mais ça marche ...Non, ou plutôt "pas que" : C++ est multi-paradigme; il peut être utilisé en POO mais supporte une programmation non-objet.
On parlait du Java, j'ai juste donné l'équivalent du monde C ...Oui, pour java et C#, mais je ne comprends pas ce que veut dire :
C'était un exemple à la c.. ... mais peu importeS'emm.dé avec du C++ dans ce cas, faut le vouloir. Ce sont les cas ou java et C# sont parfaitement adaptés.
Ce post n'était pas un cours pour une personne qui sait déjà codé mais une tentative d’aperçu pour à un débutant, maintenant si tu aimes couper les cheveux en quatre fais toi plaisir mais ce pots va être de moins en moins utile pour celui qui l'a commencé ... ... tu sais, la confiture ...
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
Désolé, mais les mots ont un sens.
La "programmation fonctionnelle" suppose des langages adaptés (quoiqu'on trouve des "ajouts" fonctionnel sur certains langage comme le C#).
Le C c'est de la programmation impérative, ce qui est exactement le contraire.
Non, Java n'est pas multi-paradigme (pas plus que C#). En dehors de l'objet point de salut; que tu veuilles modéliser comme un gougnafier après, c'est ton droit, mais de l'objet modélisé en mode gougnafier reste de l'objet.Comme tous les langages ... rien ne t’empêche de faire du pseudo C en Java ... c'est stupide mais ça marche ...
Je ne comprends pas; précise ? quel 'équivalent du monde C ?On parlait du Java, j'ai juste donné l'équivalent du monde C ...
Précisément; comme c'est destiné à quelqu'un qui a une très faible connaissance du sujet, la pire des choses à faire est de lui balancer quelque chose d'aussi évidemment faux que "C est un langage de programmation fonctionnelle".Ce post n'était pas un cours pour une personne qui sait déjà codé mais une tentative d’aperçu pour à un débutant, maintenant si tu aimes couper les cheveux en quatre fais toi plaisir
C'est quoi cette idée de "multiparadigme"?
Pour info l'esp8266 en c++ donne en fonctionnement une heap dispo de 40ko de ram pour l'allocation memoire, avec 2 connections tcp. C'est pas foudroyant mais ca marche tres bien.
Je serai prof d'informatique embarqué pour debutant, ca serai la plateforme de predilection que je choisirai - pas cher et un resultat utile est tres vite atteint.
C'est pourtant évident : un langage supportant plusieurs paradigme de programmation.
https://fr.wikipedia.org/wiki/Paradigme_(programmation)
La programmation fonctionnelle, c'est encore autre chose (voir LISP). Tu voulais surement parler de programmation procédurale.Le C est un langage de programmation fonctionnelle
Pas forcément, on peut faire sans POO en C++, mais du coup, on ne gagne pas grand chose par rapport au C mis à part quelques petites choses comme les références par exemple.Le C++ est un langage orienté objet
J'ai bien aimé programmer en C# sur un équivalent d'arduino : la PANDA.
C'est bien theorique cette notion de paradigme.
Il ne semble pas avoir trente six solutions si on souhaite faire de la programmation sur de petite unité de calcul type µControleur - on general on pas beaucoup de choix niveau compileur ou interpreteur pour les chanceux utilisateurs de langage de haut niveau (perf? finesse du timming des io?).
ASM (pour un debutant j'ai des doutes, pour les masos à la rigueur) ou C avec les interruptions bas niveau (procedural ou evenementiel?)
Perso j'aime bien coder en C++ avec QT (evenementiel) mais je dois avouer que sur ARM (raspberry, orange) ben ce genre d'environnement n'est pas evident à etre operationnel car il implique par exeample d'avoir des drivers videos à peu pres potables. Savoir coder en C, ca permet de commencer à coder plus rapidement sur la plus part des becanes exotiques quite a programmer un peu (bcp) plus longtemps.
Donc la base ==> GCC ou G++, le reste c'est philosophique!
Ca n'engage que moi mais je ne crois pas qu'un debutant part de la theorie de paradigme pour choisir sa plateforme et son language de prog.
Au contraire on s'appuit sur les tutos de debutant pour en mesurer les difficultés et son accessibilité, on s'adapte à la toolchain qui depasse de beaucoup la comprehension du debutant, au moins au depart.
Pour ma modeste experience j'ai pu programmer comme je voulais des PIC16F, PIC32, ESP8266 et de l'ARMV7 mais aussi du code plus standard sur du linux X86 - X64.
Ce que j'en retiens c'est mon besoin du C et C++.
Je ne me suis pas dit pour exagerer, bon debutant, quel compilo fait du QML en embarqué - Ah tiens cette carte à 500€ piece le fait c'est parti!