Programmation Arduino en russe. Blog › Arduino : programmer sans programmer. Description générale des langages de programmation

Bonjour! Je suis Alikin Alexander Sergeevich, professeur d'enseignement complémentaire, je dirige les cercles "Robotique" et "Radio Engineering" au Théâtre central pour enfants et jeunes de Labinsk. Je voudrais parler un peu d'une manière simplifiée de programmer Arduino en utilisant le programme ArduBloсk.

J'ai introduit ce programme dans le processus éducatif et je suis ravi du résultat, il est particulièrement demandé par les enfants, en particulier lors de l'écriture de programmes simples ou pour la création d'une étape initiale de programmes complexes. ArduBloсk est un environnement de programmation graphique, c'est-à-dire que toutes les actions sont effectuées avec des images dessinées avec des actions signées en russe, ce qui simplifie grandement l'apprentissage de la plate-forme Arduino. Les enfants de la 2e année peuvent facilement maîtriser le travail avec Arduino grâce à ce programme.

Oui, certains pourraient dire que Scratch existe toujours et est également un environnement graphique très simple pour la programmation Arduino. Mais Scratch ne flashe pas l'Arduino, mais le contrôle uniquement au moyen de cable USB. Arduino est dépendant de l'ordinateur et ne peut pas fonctionner de manière autonome. Lors de la création de vos propres projets, l'autonomie pour Arduino est la chose principale, en particulier lors de la création d'appareils robotiques.

Sur les 65 cours proposés par Stanford, au moins la moitié nécessitent des compétences en programmation. Il y a environ quatre ans, ils sont apparus dans les soi-disant académies universitaires. Laura Raya, directrice diplômée du Centre d'ingénierie pour la technologie et les arts numériques de Madrid, estime que la seule façon d'empêcher les gens de se retrouver au chômage est d'apprendre à contrôler les robots. "Comprendre la logique du comment et du pourquoi les appareils fonctionnent juste pour survivre et être autonomes", dit-il. Les produits ne sont plus vendus avec des manuels ; on s'attend à ce que quelqu'un ait une intuition technologique minimale. Tout ce que nous faisons est conforme à l'algorithme.

Même les robots LEGO bien connus, tels que NXT ou EV3, ne sont plus aussi intéressants pour nos étudiants avec l'avènement du programme ArduBloсk dans la programmation Arduino. En outre, Arduino est beaucoup moins cher que n'importe quel concepteur LEGO et de nombreux composants peuvent simplement être extraits d'anciens appareils électroniques grand public. Le programme ArduBloсk aidera non seulement les débutants, mais également les utilisateurs actifs de la plate-forme Arduino dans leur travail.

Il est temps que chacun comprenne comment et pourquoi. Avec l'avènement de la micro-informatique, nouveau monde. Les ordinateurs étaient incroyablement complexes par rapport à ce que nous construisions pendant nos heures creuses. Voici le schéma de l'ordinateur. Bon, essayons quelque chose de plus didactique.

L'ordinateur se compose des éléments suivants. Les adresses, par exemple, avaient une longueur de 3 mots ou 12 bits. Autrement dit, en termes exacts, il a inversé la pagination interne. L'horloge était de 740 kHz et pouvait exécuter 600 instructions par seconde. Le microcontrôleur a été conçu pour effectuer des tâches individuelles de manière indépendante, fiable et fiable. Vous pouvez programmer le microcontrôleur pour lire les données des capteurs, déterminer la température de l'aquarium et, si elle est trop basse, allumer le chauffage. Un refroidissement trop élevé augmente.

Alors, qu'est-ce qu'ArduBlock ? Comme je l'ai dit, il s'agit d'un environnement de programmation graphique. Presque entièrement traduit en russe. Mais dans ArduBloсk, le point culminant n'est pas seulement cela, mais aussi le fait que le programme ArduBloсk écrit par nous est converti en code EDI Arduino. Ce programme est intégré à l'environnement de programmation Arduino IDE, c'est-à-dire qu'il s'agit d'un plugin.

Vous trouverez ci-dessous un exemple d'une LED clignotante et d'un programme converti dans l'IDE Arduino. Tout le travail avec le programme est très simple et n'importe quel étudiant peut le comprendre.

Laissé trop longtemps dehors plage admissible, une alarme retentit. C'est contradictoire, mais c'est plus facile de le faire avec un microcontrôleur qu'avec tout l'ordinateur, et ce serait de toute façon un canon pour tuer un oiseau. Mais au moment où les microcontrôleurs ont envahi l'électronique, ils étaient une garce. Vous avez dû utiliser des programmeurs très hostiles. Effacez la mémoire nécessaire pour placer la puce sous la source ultraviolette.

Il y avait même des programmeurs où vous avez entré le clavier hexadécimal de votre programme. Pendant trop longtemps, trop longtemps, les microcontrôleurs ont appartenu à un groupe fermé, à quelques privilégiés. Ils étaient chers, difficiles à utiliser, ils n'étaient pas un outil pédagogique. Invisible pour tout étudiant.


À la suite de travailler sur le programme, vous pouvez non seulement programmer l'Arduino, mais également étudier des commandes qui nous sont incompréhensibles dans le format texte de l'IDE Arduino, mais si vous êtes trop paresseux pour écrire des commandes standard, vous devriez rapidement esquisser sortez un programme simple dans ArduBlok avec une manipulation rapide de la souris, et déboguez-le dans l'IDE Arduino.

Ajoutez à cela une énorme communauté d'amateurs et un soutien complet de l'entreprise et nous avons un excellent écosystème. Son accès est extrêmement pratique, tant pour la lecture que pour l'écriture des contacts sur la puce. Comme vous pouvez le voir, il y a deux sections, configuration et cycle. La configuration se fait une fois, la boucle se fait, enfin, en boucle.

Alors vous direz : "Mais Cardoso est très cher." Wernher von Braun deviendra son meilleur ami si vous trouvez une boîte de ces chips à Peenemünde. Vous risquez de devenir le meilleur ami d'Hitler. Le design original a été conçu pour les "designers et artistes", sa courbe d'apprentissage est donc très conviviale. Toutes les machines qui nous entourent et font des choses par elles-mêmes le font parce que quelqu'un leur a donné les bonnes instructions.

Pour installer ArduBlok, vous devez d'abord télécharger et installer l'IDE Arduino à partir du site Web officiel d'Arduino et comprendre les paramètres lorsque vous travaillez avec Carte Arduino ONU. Comment faire cela est décrit sur le même site ou sur Amperk, ou regardez YouTube. Eh bien, lorsque vous avez compris tout cela, vous devez télécharger ArduBlok à partir du site officiel, ici. Je ne recommande pas de télécharger les dernières versions, elles sont très difficiles pour les débutants, mais la version du 2013-07-12 est la plus importante, ce fichier y est le plus populaire.

Expérience 3 : une fois ou toujours ?

Les programmes informatiques sont généralement écrits très verbalement. Chaque bloc équivaut à plusieurs lignes de code, tout comme la première image. Ainsi, vous pouvez créer des programmes complexes sans connaître les mots magiques des langages de programmation. En substance, la différence est la suivante. Dans la boucle principale, vous placez tous les blocs que vous souhaitez répéter plusieurs fois.

Ce programme est pour la boucle principale. Expérimentons avec des programmes plus grands. Enfin, essayez de placer des blocs à la fois dans les instructions de démarrage et dans la boucle principale.

  • Revenez au projet que vous avez créé précédemment ou recommencez.
  • Choisissez si vous voulez le faire une fois ou le répéter à chaque fois.
  • Essayez de placer plusieurs blocs les uns après les autres.
Cette façon de créer un programme est très utile.

Ensuite, nous renommons le fichier téléchargé en ardublock-all et dans le dossier "documents". Créez les dossiers suivants : Arduino > tools > ArduBlockTool > tool et dans ce dernier nous lançons le fichier téléchargé et renommé. ArduBlok fonctionne pour tout le monde systèmes d'exploitation, même sur Linux, je l'ai personnellement testé sur XP, Win7, Win8, tous les exemples sont pour Win7. L'installation du programme est la même pour tous les systèmes.


Ce programme vérifie automatiquement la carte contrôleur dont vous disposez et l'emplacement exact de l'ordinateur. Il y a beaucoup de différents types cartes contrôleurs. Créez un programme et partagez-le avec la communauté. Vous pouvez danser, jouer ou quoi que ce soit. C'est un outil qui simplifie grandement la programmation en cachant beaucoup de détails.

Par conséquent, nous devons lire ou écrire dans les registres d'E/S matériels de ce composant et examiner son brochage pour comprendre les noms des broches et leur disposition. Qu'est-ce qu'un langage de programmation ? . Comme tout autre langage, un langage de programmation a ses propres règles de syntaxe. L'inconvénient est que, contrairement à un étranger qui essaie de vous comprendre, en programmation, si vous ne suivez pas strictement les règles de syntaxe, le programme ne fonctionnera pas. Il y a un avantage important : tous les langages de programmation sont similaires.

Eh bien, si c'est plus simple, j'ai préparé une archive sur le Mail-disk 7z, en décompressant, vous trouverez 2 dossiers. Un fonctionne déjà Programme Arduino IDE, et dans un autre dossier, le contenu doit être envoyé dans le dossier Documents.

Pour travailler dans ArduBlok, vous devez exécuter l'IDE Arduino. Ensuite, nous allons dans l'onglet Outils et nous y trouvons l'élément ArduBlok, cliquez dessus - et le voici, notre objectif.

Le programme se lit de haut en bas. Il se compose d'ensembles d'instructions et de conditions qui rendent un programme dynamique. Lorsque nous exécutons un programme, on dit qu'il se compile pour l'ordinateur et s'exécute à ce moment-là. Faut-il être fort en maths pour programmer ? . Si vous savez ce que sont l'addition, la soustraction, la division et la multiplication, alors le monde de la programmation est à vous.

Variables, constantes et types

Mais alors où est la difficulté ? . Transformer l'activité humaine en une séquence d'instructions. Exemple. Une personne peut très bien, à l'aide de ses yeux, détecter un mouvement devant elle. Telles sont les questions auxquelles les programmeurs sont confrontés. Disons que votre objectif est de mettre en place un programme qui mesure la température d'une pièce. C'est le rôle des variables et des constantes pour stocker des informations.


Passons maintenant à l'interface du programme. Comme vous l'avez déjà compris, il n'y a pas de paramètres, mais il y a beaucoup d'icônes pour la programmation, et chacune d'elles porte une commande au format texte Arduino IDE. Il y a encore plus d'icônes dans les nouvelles versions, alors faites affaire avec ArduBlok dernière version difficile et certaines icônes ne sont pas traduites en russe.

Supposons que la température ambiante soit de 27°. Dans le langage Arduino, nous écrirons comme suit. Vous avez peut-être remarqué le point-virgule à la fin de la déclaration de variable. C'est pourquoi vous faites des erreurs en premier lieu, et c'est tout à fait normal, c'est une habitude d'acceptation. Nous avons parlé de variables et de constantes, ici la température est une variable. Autrement dit, il peut être modifié à tout moment dans le programme. Pour ce faire, rien de plus simple, disons que la température est désormais de 31°, on va écrire comme ça.

Alors la variable de température est Mais si nous déclarions la température constante et non variable, nous ne pourrions pas la changer. Cependant, c'est une question de sécurité et d'optimisation. Évidemment, pour les petits programmes, on a peu de chances de sentir la différence, mais à grande échelle cela devient décisif. Prenez l'habitude de programmer pour être précis dans tout ce que vous écrivez, cela vous permettra d'écrire du code non ambigu et plus efficace.


Dans la section "Gestion", nous trouverons une variété de cycles.


Dans la section "Ports", nous pouvons gérer les valeurs des ports, ainsi que l'émetteur de son, la servomachine ou le capteur de proximité à ultrasons qui leur sont connectés.

En parlant de précision, vous remarquerez que nous avons également défini notre variable sur un nombre entier. Cette fois, c'est un peu plus, nous le déclarons avec une chaîne. La chaîne doit être entourée de guillemets comme ci-dessus. Il vous sera très utile dans les essais et conditions, vous comprendrez plus tard.

Dans cette section, nous verrons trois éléments importants qui vous serviront lors de l'écriture de votre code. Disons que vous avez une température de trois pièces dans votre maison et que vous voulez avoir une température moyenne dans la maison. Commençons par déclarer les variables. Calculez la valeur moyenne de la température.


Dans la section "Nombres / Constantes", nous pouvons choisir des valeurs numériques ou créer une variable, mais il est peu probable que vous utilisiez celle ci-dessous.


Dans la section "Opérateurs", nous trouverons tous les opérateurs de comparaison et de calcul nécessaires.

On peut en effet créer une variable et lui affecter la valeur d'une autre variable ou, comme ici, la somme de plusieurs variables. Dans la version améliorée, le code ressemblera à ceci. Maintenant que nous avons une température moyenne, ce serait bien de la mettre quelque part.

Il existe de nombreuses possibilités pour afficher ou transmettre des informations quelque part. Il se présente sous la forme d'une boîte de dialogue avec entrée et sortie. C'est le code que nous avons écrit ci-dessus. Vous pouvez vraiment inclure quelque chose de très utile pour tester entre ces crochets. Lorsque le téléchargement est terminé, vous verrez la température moyenne sur le moniteur. Comme mentionné ci-dessus, l'impression est un outil très puissant pour tester et déboguer votre programme. Vous pouvez le placer partout et ainsi vérifier que vos variables ont la bonne valeur.


La section Utilitaires utilise principalement des icônes au fil du temps.


"TinkerKit Bloks" est la section des capteurs TinkerKit achetés. Bien sûr, nous n'avons pas un tel ensemble, mais cela ne signifie pas que les icônes ne fonctionneront pas pour d'autres ensembles, au contraire, il est très pratique pour les gars d'utiliser des icônes telles que l'allumage d'une LED ou d'un bouton . Ces signes sont utilisés dans presque tous les programmes. Mais ils ont une particularité - lorsqu'ils sont sélectionnés, il y a des icônes incorrectes indiquant les ports, ils doivent donc être supprimés et l'icône de la section «nombres / constantes» doit être remplacée, celle du haut de la liste.

Rien de bien méchant, ce terme pompeux fait simplement référence à la fusion de deux ou plusieurs lignes de caractères. Si vous ne trouvez vraiment pas la solution ici. Qui bon programme sera sans structures de contrôle ? Ce sera un programme non dynamique.

Les petits programmes que nous avons installés jusqu'à présent sont parfaits pour vous apprendre à coder, mais sont un peu ennuyeux. Le but de la programmation est de créer un programme autonome qui prend des décisions en fonction de ce qui est fourni. Dans cette partie, nous verrons les 4 structures de gouvernance les plus importantes.


"DF Robot" - cette section est utilisée si des capteurs y sont spécifiés, ils sont parfois trouvés. Et l'exemple d'aujourd'hui ne fait pas exception, nous avons un "Commutateur IR réglable" et un "Capteur de ligne". Le "capteur de ligne" est différent de celui de l'image, car il provient d'Amperka. Leurs actions sont identiques, mais le capteur d'Amperka est bien meilleur, puisqu'il dispose d'un régulateur de sensibilité.

Vous devez mémoriser un petit tableau d'opérateurs de comparaison. Ce tableau sera valable pour toutes les structures de gouvernance. Notez que lors du test d'égalité, nous utilisons des doubles égaux au lieu de simples égaux, simplement parce que le signe égal est déjà utilisé lors de la déclaration de la variable.

Cet exemple vérifie si 10 est supérieur à 5 ou non. Si vrai, un est exécuté entre les crochets entourés de vert. Si c'est faux, ce qui est écrit entre les récompenses entourées de jaune est exécuté. Ainsi, vous commencez à comprendre l'utilité de ce type. Puisque 10 est supérieur à 5, la condition est vraie et on fait ce qui est entre parenthèses entouré de vert. Tout ce qui suit est ignoré.


Seeedstudio Grove - Je n'ai jamais utilisé les capteurs de cette section, bien qu'il n'y ait que des joysticks. Cette section a été étendue dans les nouvelles versions.


Et la dernière section est "Linker Kit". Les capteurs qui y sont présentés ne m'ont pas traversé l'esprit.

D'autre part, si vous avez besoin de beaucoup d'autres choses, si vous devez envisager une autre structure de contrôle appelée commutateur. Et juste après la fenêtre, on écrit qu'il vaudrait la peine de tester la variable. Autrement dit, si aucune case n'est cochée, alors ce qui est trouvé par défaut sera exécuté. À mot anglais signifie pirater Français. Cette instruction est très utile car elle vous permet d'indiquer au programme que vous souhaitez quitter le commutateur. Vous devez être conscient que le commutateur vérifie chaque cas, même si le cas a déjà été vérifié auparavant.

Je voudrais montrer un exemple de programme sur un robot se déplaçant le long de la bande. Le robot est très simple, à la fois dans l'assemblage et dans l'acquisition, mais avant tout. Commençons par son acquisition et son assemblage.

Voici l'ensemble des pièces lui-même, tout a été acheté sur le site Amperka.


Gain potentiel de temps et d'efficacité. Disons que nous parlons. Oui, l'expression est vraie, donc nous exécutons ce qui est entre les accolades tant que c'est vrai. Un est renvoyé uniquement si l'expression est vraie. Vous l'aurez compris ainsi il suffit de boucler avec les paramètres que vous aurez définis. C'est un outil puissant et parfois dangereux.

Il y a une autre boucle qui ressemble à quelque chose mais qui est moins risquée. C'est notre dernière structure de gouvernance, c'est le forum. L'incrément, comme indiqué ci-dessus, est l'action d'ajouter un nombre à une variable. L'inverse est appelé décrémentation et consiste à soustraire un nombre d'une variable. L'incrémentation et la décrémentation se font très souvent avec un nombre. Nous avons vu que nous pouvons augmenter de cette manière.

  1. AMP-B001 Motor Shield (2 canaux, 2 A) 1 890 roubles
  2. AMP-B017 Bouclier Troyka RUB 1,690
  3. AMP-X053 Compartiment à piles 3×2 AA 1 60 RUB
  4. AMP-B018 Capteur de ligne numérique 2 580 RUB
  5. ROB0049 Plate-forme à deux roues miniQ 1 1890 RUB
  6. SEN0019 Capteur d'obstacle infrarouge 1 390 RUB
  7. FIT0032 Support pour capteur d'obstacle infrarouge 1 90 RUB
  8. A000066 Arduino Uno 1 1150 RUB


Pour commencer, nous allons assembler la plate-forme à roues et souder les fils aux moteurs.


Ensuite on installe les racks pour monter la planche Arduino UNO, qui ont été repris de l'ancien carte mère ou d'autres pièces jointes similaires.


Ensuite, nous attachons la carte Arduino UNO à ces racks, mais nous ne pouvons pas serrer un seul boulon - les connecteurs gênent. Vous pouvez, bien sûr, les souder, mais c'est à vous de décider.


Attacher ensuite Capteur infrarouge obstacles sur son support spécial. Veuillez noter que le contrôle de la sensibilité est sur le dessus, c'est pour faciliter le réglage.



Maintenant, nous installons des capteurs de ligne numériques, ici nous devons chercher quelques boulons et écrous 4. Nous installons deux écrous entre la plate-forme elle-même et le capteur de ligne, et fixons les capteurs avec le reste.


La prochaine installation de Motor Shield ou d'une autre manière, vous pouvez appeler le pilote du moteur. Dans notre cas, faites attention au cavalier. Nous n'utiliserons pas d'alimentation séparée pour les moteurs, il est donc installé dans cette position. La partie inférieure est scellée avec du ruban électrique, de sorte qu'il n'y ait pas de court-circuit accidentel du connecteur USB de l'Arduino UNO, juste au cas où.



Installez Troyka Shield sur le dessus du Motor Shield. Il est nécessaire pour la commodité de connecter des capteurs. Tous les capteurs que nous utilisons sont numériques, donc les capteurs de ligne sont connectés aux ports 8 et 9, car ils sont également appelés broches, et le capteur d'obstacle infrarouge est connecté au port 12. Assurez-vous de noter que vous ne pouvez pas utiliser les ports 4, 5, 6, 7 car ils sont utilisés par le Motor Shield pour contrôler les moteurs. J'ai même spécialement peint ces ports avec un marqueur rouge pour que les élèves puissent le comprendre.


Si vous l'avez déjà remarqué, j'ai ajouté un manchon noir, juste au cas où, pour que le compartiment à piles que nous avons installé ne s'envole pas. Et enfin, nous fixons toute la structure avec un élastique ordinaire.

Les connexions du compartiment batterie peuvent être de 2 types. Première connexion filaire à Troyka Shield. Il est également possible de souder la prise d'alimentation et de la connecter à la carte Arduino UNO elle-même.



Voici notre robot prêt. Avant de vous lancer dans la programmation, vous devrez apprendre comment tout fonctionne, à savoir :
- Moteurs :
Les ports 4 et 5 sont utilisés pour contrôler un moteur, et 6 et 7 l'autre ;
On ajuste la vitesse de rotation des moteurs avec PWM sur les ports 5 et 6 ;
Vers l'avant ou vers l'arrière en signalant les ports 4 et 7.
- Capteurs :
Nous sommes tous numériques, ils donnent donc des signaux logiques sous la forme de 1 ou 0 ;
Et pour les régler, ils ont des régulateurs spéciaux et à l'aide d'un tournevis approprié, ils peuvent être calibrés.

Les détails peuvent être trouvés à Amperka. Pourquoi ici? Parce qu'il y a beaucoup d'informations sur le travail avec Arduino.

Eh bien, nous avons peut-être tout regardé superficiellement, étudié et, bien sûr, assemblé le robot. Maintenant il faut le programmer, le voici - le programme tant attendu !


Et le programme converti en Arduino IDE :

Void setup() ( pinMode(8 , INPUT); pinMode(12 , INPUT); pinMode(9 , INPUT); pinMode(4 , OUTPUT); pinMode(7 , OUTPUT); pinMode(5, OUTPUT); pinMode(6 , SORTIE); ) void loop() ( if (digitalRead(12)) ( if (digitalRead(8)) ( if (digitalRead(9)) ( digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite( 6, 255); digitalWrite(7 , HIGH); ) else ( digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 50); digitalWrite(7 , LOW); ) ) else ( if (digitalRead (9)) ( digitalWrite(4 , LOW); analogWrite(5, 50); analogWrite(6, 255); digitalWrite(7 , HIGH); ) else ( digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 255); digitalWrite(7 , HIGH); ) ) ) else ( digitalWrite(4 , HIGH); analogWrite(5, 0); analogWrite(6, 0); digitalWrite(7 , HIGH); ) )

En conclusion, je tiens à dire que ce programme n'est qu'une aubaine pour l'éducation, même pour l'auto-apprentissage, il vous aidera à apprendre les commandes de l'IDE Arduino. Le point culminant le plus important est qu'avec plus de 50 icônes d'installation, cela commence à "échouer". Oui, en effet, c'est un point culminant, car la programmation constante uniquement sur ArduBlok ne vous apprendra pas à programmer dans l'IDE Arduino. Le soi-disant "glitch" permet de penser et d'essayer de se souvenir des commandes pour un débogage précis des programmes.

Te souhaite du succès.

Introduction

Freeduino/Arduino est programmé dans un langage de programmation spécial - il est basé sur C/C++ et vous permet d'utiliser n'importe laquelle de ses fonctions. Strictement parlant, séparé Langage Arduino n'existe pas, tout comme il n'y a pas de compilateur Arduino - les programmes écrits sont convertis (avec des modifications minimes) en un programme C / C ++, puis compilés par le compilateur AVR-GCC. Donc en fait, une variante C/C++ spécialisée pour les microcontrôleurs AVR est utilisée.

La différence est que vous obtenez un environnement de développement simple et un ensemble de bibliothèques de base qui facilitent l'accès aux périphériques "à bord" du microcontrôleur.

D'accord, il est très pratique de commencer à travailler avec un port série à une vitesse de 9600 bits par seconde, en passant un appel sur une seule ligne :

Série.begin(9600);

Et lors de l'utilisation de C / C ++ "nu", vous devrez vous occuper de la documentation du microcontrôleur et appeler quelque chose comme ceci :

UBRR0H = ((F_CPU / 16 + 9600 / 2) / 9600 - 1) >> 8 ;
UBRR0L = ((F_CPU / 16 + 9600 / 2) / 9600 - 1);
sbi(UCSR0B, RXEN0);
sbi(UCSR0B, TXEN0);
sbi(UCSR0B, RXCIE0);

Voici un bref aperçu des principales fonctions et caractéristiques de la programmation Arduino. Si vous n'êtes pas familier avec la syntaxe des langages C/C++, nous vous conseillons de vous référer à toute littérature sur ce sujet, ou à des sources Internet.

D'autre part, tous les exemples présentés sont très simples et vous n'aurez probablement aucune difficulté à comprendre les textes sources et à écrire vos propres programmes même sans lire de littérature supplémentaire.

Documentation plus complète langue Anglaise) est présenté sur le site officiel du projet - http://www.arduino.cc. Il y a aussi un forum, des liens vers des bibliothèques supplémentaires et leur description.

Par analogie avec la description sur le site officiel du projet Arduino, le "port" désigne le contact du microcontrôleur, sortie vers le connecteur sous le numéro correspondant. De plus, il existe un port de données série (port COM).

Structure du programme

Dans votre programme, vous devez déclarer deux fonctions principales: setup() et loop().

La fonction setup() est appelée une fois, après chaque mise sous tension ou réinitialisation de la carte Freeduino. Utilisez-le pour initialiser des variables, définir des modes de port numérique, etc.

La fonction loop() exécute séquentiellement les commandes décrites dans son corps encore et encore. Ceux. une fois la fonction terminée, elle sera appelée à nouveau.

Prenons un exemple simple :

void setup() // paramètres initiaux
{
beginSerial(9600); // définit la vitesse du port série à 9600 bps
pinMode(3, ENTRÉE); // définition du 3e port pour l'entrée de données
}

// Le programme vérifie si le 3e port contient un signal et envoie une réponse à
// sous forme de message texte sur le port série de l'ordinateur
void loop() // corps du programme
{
if (digitalRead(3) == HIGH) // condition pour l'interrogation du port 3
sérieEcrit("H"); // envoie un message sous la forme de la lettre "H" au port COM
autre
sérieEcrit("L"); // envoie un message sous la forme de la lettre "L" au port COM
retard(1000); // retarder 1 sec.
}

pinMode(port, mode);

La description:

Configure le port spécifié pour entrer ou sortir un signal.

Option :

port – numéro du port dont vous souhaitez définir le mode (valeur entière de 0 à 13).

mode - soit INPUT (entrée) ou OUTPUT (sortie).

pinMode(13, SORTIE); // La 13ème broche sera la sortie
pinMode(12, ENTRÉE); //et le 12 est l'entrée

Noter:

Les entrées analogiques peuvent être utilisées comme entrées/sorties numériques lorsqu'elles sont accessibles par les numéros 14 (entrée analogique 0) à 19 (entrée analogique 5)

digitalWrite(port, valeur);

La description:

Règle le niveau de tension sur haut (HIGH) ou bas (LOW) sur le port spécifié.

Option :

port : numéro de port

valeur : ÉLEVÉE ou BASSE

digitalWrite(13, ÉLEVÉ); // met la broche 13 à l'état "haut"

valeur = digitalRead(port);

La description:

Lit une valeur sur le port spécifié

Option :

port : numéro de port interrogé

Valeur de retour : renvoie la valeur actuelle sur le port (HIGH ou LOW) de type int

valeur entière ;
val = lecturenumérique(12); // interroge la 12ème sortie

Noter:

Si rien n'est connecté au port de lecture, la fonction digitalRead() peut renvoyer aléatoirement HIGH ou LOW.

Signal d'entrée/sortie analogique

valeur = analogRead(port);

La description:

Lit une valeur à partir du port analogique spécifié. Le Freeduino contient 6 canaux, chacun des convertisseurs A/N 10 bits. Cela signifie qu'une tension d'entrée de 0 à 5V est convertie en une valeur entière de 0 à 1023. La résolution de lecture est de : 5V/1024 valeurs = 0,004883V/valeur (4,883mV). Il faut environ 100 nS (0,0001 S) pour lire la valeur d'entrée analogique, de sorte que le taux de lecture maximum est d'environ 10 000 fois par seconde.

Option :

Valeur de retour : renvoie un entier compris entre 0 et 1023, lu à partir du port spécifié.

valeur entière ;
val = analogRead(0); // lecture de la valeur à l'entrée analogique 0

Noter:

Les ports analogiques sont des entrées de signal définies par défaut et, contrairement aux ports numériques, ils n'ont pas besoin d'être configurés en appelant la fonction pinMode.

analogWrite(port, valeur);

La description:

Envoie une valeur analogique au port. Cette fonctionnalité fonctionne sur : 3, 5, 6, 9, 10 et 11 ports numériques Freeduino.

Il peut être utilisé pour modifier la luminosité de la LED, pour contrôler le moteur, etc. Après l'appel de la fonction analogWrite, le port correspondant fonctionnera en mode PWM jusqu'au prochain appel de la fonction analogWrite (ou des fonctions digitalRead / digitalWrite sur le même port).

Option :

port : numéro de l'entrée analogique interrogée

valeur : entier compris entre 0 et 255. Une valeur de 0 génère 0 V sur le port spécifié ; une valeur de 255 génère +5 V sur le port spécifié. Pour les valeurs comprises entre 0 et 255, le port cyclera rapidement entre 0 et +5V - plus la valeur est élevée, plus le port génère fréquemment HIGH (5V).

analogWrite(9, 128);// définir la broche 9 sur une valeur équivalente à 2,5V

Noter:

Il n'est pas nécessaire d'appeler la fonction pinMode pour définir le port sur pin avant d'appeler la fonction analogWrite.

La fréquence de génération du signal est d'environ 490 Hz.

temps = millis();

La description:

Renvoie le nombre de millisecondes depuis que Freeduino a exécuté le programme en cours. Le compteur débordera et se remettra à zéro après environ 9 heures.

Valeur de retour : renvoie une valeur de type unsigned long

longtemps non signé; // déclaration de la variable time de type unsigned long
temps = millis(); // passage du nombre de millisecondes

retard(time_ms);

La description:

Met le programme en pause pendant le nombre de millisecondes spécifié.

Option :

time_ms – temps de retard du programme en millisecondes

retard(1000); //pause 1 seconde

retardMicrosecondes

retardMicrosecondes(time_µs);

La description:

Met le programme en pause pendant le nombre de microsecondes spécifié.

Option :

time_µs – temps de retard du programme en microsecondes

retardMicrosecondes(500); //pause 500 microsecondes

pulseIn(port, valeur);

La description:

Lit une impulsion (haute ou basse) à partir d'un port numérique et renvoie la durée de l'impulsion en microsecondes.

Par exemple, si le paramètre "value" est défini sur HIGH lors de l'appel de la fonction, alors pulseIn() attend que le port reçoive un niveau de signal élevé. Dès son arrivée, le compte à rebours commence jusqu'à ce que le port reçoive niveau faible signal. La fonction renvoie la longueur d'impulsion ( haut niveau) en microsecondes. Fonctionne avec des impulsions de 10 microsecondes à 3 minutes. Notez que cette fonction ne renverra pas de résultat tant qu'une impulsion n'aura pas été détectée.

Option :

port : numéro du port à partir duquel nous lisons l'impulsion

valeur : type d'impulsion HIGH ou LOW

Valeur de retour : renvoie la durée de l'impulsion en microsecondes (type int)

int durée ; // déclaration de la variable durée de type int
durée = pulseIn(broche, HIGH); // mesure la durée d'impulsion

Communication série

Freeduino possède un contrôleur série intégré qui peut être utilisé pour communiquer entre des appareils Freeduino/Arduino ou avec un ordinateur. Sur un ordinateur, la connexion correspondante est représentée par un port COM USB.

La communication se produit sur les ports numériques 0 et 1, et vous ne pouvez donc pas les utiliser pour les E/S numériques si vous utilisez les fonctions de données série.

Serial.begin (débit en bauds);

La description:

Définit le débit en bauds Port COM bits par seconde pour le transfert de données en série. Pour communiquer avec un ordinateur, utilisez l'une de ces vitesses standard : 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 ou 115200. Vous pouvez également spécifier d'autres vitesses lors de la communication avec un autre microcontrôleur par les ports 0 et 1.

Option :

baudrate : débit de données en bits par seconde.

Série.begin(9600); //fixe la vitesse à 9600 bps

série.disponible

compte = série.disponible();

La description:

Les octets reçus via le port série entrent dans le tampon du microcontrôleur, d'où votre programme peut les lire. La fonction renvoie le nombre d'octets accumulés dans le tampon. Le tampon série peut stocker jusqu'à 128 octets.

Valeur de retour :

Renvoie une valeur int, le nombre d'octets disponibles pour la lecture dans le tampon série, ou 0 si rien n'est disponible.

if (Serial.available() > 0) ( // S'il y a des données dans le tampon
// ici devrait recevoir et traiter les données
}

char = Serial.read();

La description:

Lit l'octet suivant du tampon série.

Valeur de retour :

Le premier octet disponible des données entrantes du port série, ou -1 s'il n'y a pas de données entrantes.

entrantByte = Serial.read(); // lire l'octet

La description:

Efface le tampon d'entrée du port série. Les données mises en mémoire tampon sont perdues et d'autres appels à Serial.read() ou Serial.available() auront un sens pour les données reçues après l'appel à Serial.flush().

Serial.flush(); // Efface le tampon - commence à recevoir des données "à partir de zéro"

La description:

Sortie de données vers le port série.

Option :

La fonction a plusieurs formes d'appel selon le type et le format des données de sortie.

Serial.print(b, DEC) imprime une chaîne ASCII, la représentation décimale de b.

entier b = 79 ;

Serial.print(b, HEX) imprime une chaîne ASCII, la représentation hexadécimale du nombre b.

entier b = 79 ;

Serial.print(b, OCT) imprime une chaîne ASCII, la représentation octale du nombre b.

entier b = 79 ;
impression en série (b, oct); // affichera la chaîne "117" sur le port

Serial.print(b, BIN) imprime une chaîne ASCII, la représentation binaire du nombre b.

entier b = 79 ;
Serial.print(b, BIN); // affichera la chaîne "1001111" sur le port

Serial.print(b, BYTE) imprime l'octet de poids faible de b.

entier b = 79 ;
Serial.print(b, BYTE); // imprime le nombre 79 (un octet). Dans le moniteur
// port série nous obtenons le caractère "O" - c'est
// le code est 79

Serial.print(str) si str est une chaîne ou un tableau de caractères, envoie str au port COM octet par octet.

caractères octets = (79, 80, 81); //tableau de 3 octets avec les valeurs 79,80,81
Serial.print("Voici nos octets :"); //affiche la chaîne "Voici nos octets :"
Impression série (octets); // affiche 3 caractères avec les codes 79,80,81 -
//ce sont les caractères "OPQ"

Serial.print(b) si b est de type byte ou char, imprime le numéro b lui-même sur le port.

caractère = 79 ;
Impression en série(b); // enverra le caractère "O" au port

Serial.print(b) si b est un entier, imprime la représentation décimale de b sur le port.

entier b = 79 ;
Impression en série(b); // affichera la chaîne "79" sur le port

La description:

La fonction Serial.println est similaire à la fonction Serial.print et possède les mêmes options d'appel. La seule différence est que deux caractères supplémentaires sont générés après les données - un retour chariot (ASCII 13 ou "\r") et un caractère de saut de ligne (ASCII 10 ou "\n").

L'exemple 1 et l'exemple 2 afficheront la même chose sur le port :

entier b = 79 ;
Serial.print(b, DEC); // affichera la chaîne "79" sur le port
Serial.print("\r\n"); // affichera les caractères "\r\n" - retour à la ligne
Serial.print(b, HEX); // affichera la chaîne "4F" sur le port
Serial.print("\r\n");//imprimera les caractères "\r\n" - saut de ligne

entier b = 79 ;
Serial.println(b, DEC); // affichera la chaîne "79\r\n" sur le port
Serial.println(b, HEX); // affichera la chaîne "4F\r\n" sur le port

Dans le moniteur de port série, nous obtenons.