| trivium |
Posté le 15/04/2007 à 11h44 |

|
Bonjour, je suis débutant en électronique et j'aimerais apprendre un language de programmation. On m'a conseillé le C et on m'a dit que le Basic était plus Facile mais le C plus complet...
Connaissez vous des sites qui permettent d'apprendre ce language pour microcontrolleur et non pour les jeux.
Merci |
| fabarbuck |
Posté le 15/04/2007 à 14h48 |
|
Hello!
Alors... déja, avant de choisir, il faut savoir un peu de quoi il retourne Je vais te faire une rapide description, en espérant pas te perdre en cours de route.
Déja, un langage de programmation, pour quoi faire? c'est la principale question que tu dois te poser, pas de savoir si on t'a conseillé le c/le basic/le java/un autre langage...
En l'occurence, tu veux visiblement programmer des microcontrolleurs et des robots.
Analysons comment ces bestiolles fonctionnent pour comprendre ce qu'impliquent les choix. Déja, sans faire un discours super long sur comment marche un processeur, tu sais peut etre que ton langage, qu'il soit C ou basic, ne sera pas traité de la meme manière. Dans TOUS les cas, un microcontrolleur (un processeur) ne sait qu'exécuter des instructions.
Quand ton programme est écrit en C, il est compilé. Ca signifie qu'un programme (le compilateur) va traiter ton (tes) fichiers source pour générer un exécutable, c'est à dire une suite d'instructions que le processeur sait exécuter, et qui correspondent à ce que tu as décrit dans ton code C.
Un programme écrit en basic, lui (en général) n'est pas compilé, mais interprêté ; ca signifie que sur le microcontrolleur, il y a un programme (un interpreteur) qui tourne en permanence, et va exécuter une séquence d'insctructions correspondates à ce que tu as écrit en basic ; c'est un peu comme si tu écrivais du langage machine pour l'interpreteur, qui, heureusement pour toi, est plus 'facile pour les humains' que le langage machine réel du microcontrolleur.
Quelle différence me dira tu?
Hé bien il y en a tout un tas. La plus évidente, c'est qu'il te faut choisir un interpreteur si tu veux faire du basic, et le mettre sur ton microcontrolleur. Malheureusement, ce n'est pas toujours gratuit. La seconde, c'est que avec le C, tu peux certes tout faire, mais... il faut que tu décrives tout! La ou un basic adapté a un microcontrolleur te permettra d'écrire directement un truc du genre 'Affiche_ecran(salut les zamis)', en C, il y a de fortes chances pour que tu aies à initialliser ton afficheur, le port sur lequel il est branché, constituer la chaine de caractères que tu veux affichier, et utiliser un sous programme qui l'envoie sur le bon port... en gros, tu maitrises tout, mais ca fait pas mal de choses à maitriser 
A ceci près biensur qu'on trouve tout un tas de squelettes de programmes C, de sous programmes tout faits pour des taches courantes, etc...
En fait, je dirais que le principal avantage du basic, c'est que si tu achetes le matos qui va bien, en 15mn tu pourras faire des choses, modifier des trucs par ci par la ; le principal avantage du C, c'est que a partir du moment ou tu as le temps d'apprendre, rien ne t'es impossible.
Du coup... je pense que la 'bonne' manière de procéder, c'est de démarrer en basic 'pour faire marcher le truc tout de suite', puis, progressivement, de mettre les mains dans le cambouis en comprenant mieux comment le microcontrolleur fonctionne, exécute du code, etc... et donc, de faire un bref passage par l'assembleur (langage machine du microcontrolleur) qui est LE SEUL langage qui te donne une vraie compréhension de ce que fait ton microcontrolleur, puis pour revenir à un langage plus pratique à utiliser, et ce, quel qu'il soit...
(et donc je t'invite à tester un peu le C, java, forth... et meme d'essayer de maitriser a fond basic, en regardant comment c'est foutu, un interpreteur... pour en comprendre les forces et faiblesses!).
Biensur, le C est très répandu et connaitre le C est une bonne idée si tu veux programmer (meme dans un autre langage), parce que c'est... bha une référence clé, on va dire.
Bon, sinon, pour revenir à nos moutons... tu veux des sites pour apprendre le C pour microcontrolleurs? Il n'y en a pas vraiment... en fait, je te conseille d'apprendre les rudiments du langage (qui sont génériques), avant de te pencher sur comment on fait quand on vise un microcontrolleur.
Pour la 2e partie, tourne toi vers www.pobot.org, tuxgraphics.com, avrfreaks.net, ... et puis biensur le site du constructeur du microcontrolleur que tu auras choisi !!! |
| trivium |
Posté le 15/04/2007 à 17h16 |

|
Merci pour toutes ces explications !
C'est une bonne idée que tu me propose de programmer en Basic et d'en venir progressivement au C ! Par contre, pour tout t'avouer je n'ai aucune envie d'apprendre l'assembleur ! C'est quelque chose qui va me prendre trop de temps à apprendre. En ce qui concerne le Basic, connais tu des sources ?
J'hésite un peu au fait parce que les possibilités du C sont tellement grande que je pense que le basic va se perdre petit à petit ... J'aimerais vraiment commencer le C tout de suite :sad: Toi, sais tu programmer en C ? As tu des programme que tu pourrais m'envoyer pour que je vois un peu la structure... Aussi, tout les microcontrolleur accepte t ils d'etre programmés en C ? Existe t-il des plaque electronique possedant dejà un microcontrolleur qu on a plus qu a programmer et a connecter au moteurs a l aide de ports ?
Merci ^_^ |
| nicolas |
Posté le 15/04/2007 à 19h18 |

|
Si tu veux te mettre au C le plus vite possible, je te conseillerais ce lien au cas où tu connaîtrais pas : http://www.siteduzero.com/
Il y a un tuto que je trouve bien réalisé qui permet d'apprendre le C à partir de .... zéro ^_^
Je pense qu'il vaut mieux que tu commences par là avant de te plonger dans les lignes de codes ^_^
[quote]Aussi, tout les microcontrolleur accepte t ils d'etre programmés en C ?[/quote]
Ca dépend du compilateur choisi. Ils supportent souvent un très grand éventail de microcontrôleurs.
Citation : triviumExiste t-il des plaque electronique possedant dejà un microcontrolleur qu on a plus qu a programmer et a connecter au moteurs a l aide de ports ?
Possèdant déjà un microcontrôleur je crois pas (mais je peux me tromper, j'ai pas le souvenir d'en avoir déjà vu).
Mais tu as des kits de développement comprenant un tas d'interfaces et une plaque d'essai pour câbler le microcontrôleur. Faut compter 150 à 250€ selon les modèles.
|
| trivium |
Posté le 15/04/2007 à 21h59 |

|
Merci Nicolas, je connais bien le site du zero j'y ai appris d'autres languages mais le probleme c'est que quad tu as fini un tuto comme celui là, tu ne sais toujours pas à quoi correspond TRIS A TRIS B . Je ne sais même pas ce qu'est un Bit et malgrès plusieurs trucs lus, je ne vois toujours pas à quoi ça correspond. est ce qu on peu dire que la patte d'un microcontrolleur RA1 correspond au bit 1 et que RA2 correspond au Bit 2 ou ça n'a rien a voir ? |
| nicolas |
Posté le 16/04/2007 à 10h44 |

|
Pour savoir à quoi correspond TRISA, TRISB ect ..., faut potasser la doc du microncontrôleur à programmer (Ce sont des registres qui permettent de configurer les broches des ports A et B en entrée ou en sortie). C'est une des premières choses à faire avant de taper du code ^_^
Citation : triviumJe ne sais même pas ce qu'est un Bit
C'est une variable qui ne peut prendre comme valeur que 0 ou 1 (tu le savais vraiment pas ou j'ai mal compris?)
Citation : triviumest ce qu on peu dire que la patte d'un microcontrolleur RA1 correspond au bit 1 et que RA2 correspond au Bit 2 ou ça n'a rien a voir ?
Oui en effet ^_^ . Ce sont les bits du port A |
| fabarbuck |
Posté le 16/04/2007 à 16h29 |
|
Histoire de fournir quelques precisions:
- commencer par le basic te permettra surement d'obtenir plus rapidement des resultats... c'est a peu pres le seul avantage que j'y vois ; ou alors, ca peut etre bien si tu veux pas te prendre la tete avec le C (ce qui n'est pas le cas, donc...). Autrement, attaquer directement par le C est possible ; en particulier si tu as deja des notions de programmation dans d'autres langages (quels qu'ils soient).
Le gros inconvenient du basic vis a vis du C, cest que ca va te couter plus cher!
- a propos de l'assembleur: ca n'est plus utile quand tu programmes en C pour un pc (quoique... si tu veux vraiment bien faire les choses, si), mais pour un microcontrolleur, ca me parait inevitable d'avoir au moins des notions. Je ne te parle pas de concevoir une application complexe et d'etre expert en assembleur, mais ne rien y connaitre du tout est un gros handicap. Comme l'a dit nicolas, programmer en C un microcontrolleur requiert que tu connaisses sa documentation malgre tout, et pour bien la comprendre, il faut que tu puisses tater vite fait de lassembleur, ou au moins comprendre les principes de base. Tout ce que je peux te recommander, c'est de recuperer une datasheet et de commencer a la lire, meme en survolant.
- Pour les sources pour basic, malheureusement je n'ai pas trop de pistes a te proposer, n'etant pas un utilisateur de ce langage pour microcontrolleurs.
- Je sais (un peu) programmer en C, mais je ne pense pas qu'il y ait des exemples que je pourrais te fournir qui soient fondamentalement originaux/que tu ne trouverais pas sur internet. Il faut voir aussi que la structure de certains programmes est intimement liee au type de microcontrolleur que tu as choisi, et ce pour plusieurs raisons: la premiere est que d'un microcontrolleur a l'autre, le compilateur peut varier, et les mnemoniques speciales pour utiliser les fonctions bas niveau changent. D'autre part, les ressources etant differentes d'une famille de uC a lautre, on y accede differement... et donc le C est different!
- Je dirais que oui, tous les microcontrolleurs peuvent etre programmes en C. Il faut par contre se renseigner sur le compilateur (est il gratuit? etc etc etc)
- pour ce qui est de connecter un microcontrolleur a un ou plusieurs moteurs, je dirais que ca se passe plus tard... il te faut deja faire un hello world (faire clignotter une led, dans le cas du microcontroleur), la suite viendra facilement apres.
- cote kits de developpement, selon ton budget, ca peut varier. Je pense que tu peux trouver pour moins cher que ce que Nicolas propose, mais apres, ca depend de ce que tu vas vouloir sur ton kit... deja, un interpreteur basic et tout le toutim fera surement monter la note.......... mais regarde par exemple ca:
http://futurlec.com/BasicControllers.shtml
http://futurlec.com/DevelopmentBoards.shtml
- pour tes questions suivantes, je te conseille vivement de choisir une famille de microcontrolleurs, et de télécharger la doc, et de prendre du temps pour la lire. Il y a un énorme débat sur quelle famille choisir... personnellement j'utilise des AVR d'Atmel, mais les PIC de Microchip sont pas mal répandus... et si tu es chaud, tu peux te frotter directement a des ARM, par exemple la famille lpc2xxx de NXP (cf les cartes de dev sur les liens au dessus). La, ton choix depend de tout un tas de choses: ce que tu veux en faire, ce que tu veux utiliser, ce que tu sais deja, etc.... et c'est une autre question :P |
| trivium |
Posté le 16/04/2007 à 18h14 |

|
Oh ! Merci pour toutes les infos ! Disons que, si je commence à programmer en basic, que me conseilleriez vous comme microcontrolleur ? j'ai vu chez les fribottes qu'on parlait de 16F84... En ce qui concerne le programmateur de microcontrolleur, vous me conseillez quoi ?
Merci @+
EDIT:
Citation : triviumest ce qu on peu dire que la patte d'un microcontrolleur RA1 correspond au bit 1 et que RA2 correspond au Bit 2 ou ça n'a rien a voir ?
Citation : nicolasOui en effet . Ce sont les bits du port A
Si il est vrai que le port A correspond aux pins qui se trouvent a gauche et le POrt B correspond aux pins qui se trouvent à droite, alors quand tu dis " Ce sont les pins du port A" ce n'est pas toujours vrai si ?
Si on prend cette image par exemple:
On remarque que RA1 est sur le POrt B alors que RA2 est sur le port A vu que RA2 est a gauche et RA1 à droite. Je me trompe ? |
| nicolas |
Posté le 17/04/2007 à 00h28 |

|
La position des broches sur le PIC importe peu. Tout ce qui est noté RAx (où x représente le numéro du bit) appartient au port A. Et les broches notées RB correspondent au port B
Il n'y a pas un coté du pic dédié au port A et un autre au port B.
Le constructeur a décidé de câbler les broches de cette façon, il aurait tout aussi bien pu faire autrement. |
| trivium |
Posté le 20/04/2007 à 23h30 |

|
Ah d'accord, c'est déjà un peu plus clair dans mon esprit !
Merci !!! ^_^ |
| georges |
Posté le 23/04/2007 à 12h21 |
|
Pour commencer je te conseille l’AT MEGA 32 d’Atmel.
C’est un microcontrôleur performant mais simple d’utilisation.
De plus il est bon marché.
Tu peux aussi utiliser le BASIC « BASCOM AVR » qui existe dans une version d’évaluation, limité en taille de programme, mais gratuit.
Il est très performant et très bon marché.
Georges
|
| trivium |
Posté le 23/04/2007 à 19h06 |

|
Salut Georges,
A t-on besoin d'un programmateur ou est-il intégré sur la carte de l'ATMEL ? Pour débuter, je recherche quelque chose qui ne me coûte pas trop cher et qui me permette de programmer en Basic (puisque je vais commencer par ça) et qui me permette de faire clignoter une Led, faire tourner un moteur, et afficher du texte sur un LCD.
Quelqu'un a une proposition ?
Merci pour vos propositions |
| georges |
Posté le 24/04/2007 à 23h07 |
|
Pour programmer les Atmel il faut un petit câble de programmation très simple.
On trouve plusieurs sites qui proposent des plans très simples ( ponyprog ).
Ou des sites qui vendent le programmateur pour environ 15 euros ( http://www.robotikhardware.de )
Il suffit de le sélectionner dans Bascom et la programmation est très simple.
Je viens de voir que lextronic vends Bascom AVR maintenant.
Salutations,
Georges
|
| georges |
Posté le 24/04/2007 à 23h11 |
|
Carte,
Sur le site de Robotikhardaware ( Alemand ! ) tu peux acheter un print pour un contrôleur robot Atmel AT MEGA 32 pour environ 15 euros : Print RN14.
Je te recommande cette carte que tu peux aussi acheter en Kit ou déjà montée.
Georges
|
| trivium |
Posté le 25/04/2007 à 13h36 |

|
Pour finir, j'ai reussi à me procurer un 16F84 (un ami me l'a prêté) avec une carte d'essai qui est composée d'un LCD, de quelques led et d'un afficheur a segments. Je pense que je vais commencer en C tout simplment parce que je le trouve plus "propore" que le basic. Le basic est un anguage sans accolades et je n'aime pas ça. :unsure:
J'ai trouvé le tuto pour programmer des pics en C donc je vais le lire 
Je vous tiens au courant ! |
| nicolasd |
Posté le 01/05/2007 à 22h17 |
|
Bonjour
Je contrôle mon robot suiveur de ligne avec un PIC 16F84 et un pont en H.
Actuellement je le contrôle en tout ou rien. Et je cherche à modifier mon programme (en C) pour contrôler la vitesse de moteur. ^_^
Quelqu’un aurais un exemple de code source ou de fonction pour faire varie la vitesse, un lien vers un code, une piste, etc ....?
Merci |
|
Posté le 02/05/2007 à 11h51 |
|
Pour faire varier la vitesse de ton moteur, il va falloir envoyer un PWM dans tes moteurs au lieu d"un signal continu.
Explications rapide
Comme il n'y a pas de module PWM sur ce PIC, faut le faire à la main.
Frequence de ton PWM (vers les 20KHz c bien)
donc une periode T d'environ 50µs
a : rapport cyclique
Un programme qui pourrait faire ca serait du genre :
void PWM(unsigned char a)
{
while(1)
{
Mettre pin à 1;
Attendre(a*T);
Mettre pin à 0;
Attenre(T-(a*T));
}
}
Mais tu ne fais plus rien à côté ce qui est dommage.
Le mieux je pense est de passer par l'interruption du timer0.
A chaque interruption du Timer0 tu regardes en fonction de la valeur de ton rapport cyclique si tu dois mettre ta pin à 1 ou 0.
Ton timer s'incrementant tout les cycles et etant codé sur 8 bits, si on prend la période T = 256 cycles, on peut faire un truc du genre dans l'interruption :
Si Timer < a*T
Mettre la pin à 1
Sinon mettre la pin à 0
La valeur de a tu la changeras dans ton programme principal qui pourra se derouler tranquillement dans son coin. |
| skyhacker |
Posté le 02/04/2009 à 22h23 |
|
Salut à tous
Pour ma part je programme en BASIC sur la carte "Board of Education " de chez parallax avec un Basic Stamp II.
Le language Basic est assez facile à comprendre (comme son nom l'indique) de plus:
-la carte, le basic stamp ( I, II, IIse , IIsx, 2p24 etc...) pour 140 à 180 euros.
-Un très grand manuel livré avec (que j'ai malheureusement perdu).
-Et j'ai aussi un livre de Christian Tavernier " Les Basics Stamps " qui explique les bases de la programmation en Basic, des applications et options diverses (contrôle d'afficheurs en tout genre, commande de multiplexeur Maxim etc ...) et surtout il explique comment passer du basic au langage plus évolué tel le langage machine ...
De plus puisque les Basics Stamps peuvent tout contrôler ou presque je l'ai couplé au module SCC-32 de chez lynxmotion ce qui me permet grâce à des instruction simplissîmes de contrôler de 1 à 32 servos grâce à de simples commandes series envoyées de la part du basic Stamp.
Il est vrai qu'à l'achat les Basic Stamps reviennent cher mais au moins ils couvrent une gamme importante de domaine, permettent de créer des applications type ampli OP jusqu'à la ligne telephonique automatisée etc ... donc je pense que le prix d'achat est largement amorti par la suite. |