Langage pour écrire des croquis dans Windows. Langage de programmation Arduino. Comment est programmé Arduino ?

Donc, vous avez un processeur. Vous comprenez probablement que le processeur peut en quelque sorte être programmé pour faire ce que vous voulez. Pour qu'un travail utile soit effectué, il est nécessaire (a) d'écrire un programme utile et (b) de le donner au processeur pour exécution.

En général, peu importe le type de processeur que vous possédez : le dernier processeur Intel Pentium de votre ordinateur portable ou le microcontrôleur de Carte Arduino. Principes d'écriture du programme, c'est-à-dire programmation sont les mêmes dans les deux cas. La seule différence est la vitesse et l'étendue des possibilités de travailler avec d'autres appareils.

Mais les programmeurs, en règle générale, "paresseux", peuvent réduire cette expression. Et si on veut faire l'effet inverse, on écrit comme ça. Maintenant que vous savez tout ce que vous devez savoir sur le grossissement, passons au cycle. Augmentez notre variable pour laisser la boucle comme nous le souhaitons. Déclaré notre variable. . Ces trois étapes étaient distinctes. Avec le fait que tout va en une seule ligne!

Vous vous en doutez probablement, mais l'incrément sera appliqué à chaque rotation de la boucle. Vous disposez de tous les outils de base pour tester ces structures de gouvernance. Il est fort probable que vous ne compreniez pas bien la valeur de tout cela, et c'est tout à fait normal. Tout cela ne doit pas être appris par cœur.

Qu'est-ce qu'un programme et où l'écrire

Le processeur, malgré la complexité de la production, est, par essence, une chose assez simple et directe. Il ne sait pas penser. Il ne peut qu'aveuglément, octet par octet, exécuter les instructions qui lui ont été glissées. Voici un exemple approximatif d'une séquence d'instructions :

Octet d'instructionsQu'est-ce que cela signifie pour le processeur
00001001 signifie : prendre l'octet suivant et le stocker dans la cellule numéro 1
00000110 ... c'est juste l'octet suivant dont on se souvient dans la cellule numéro 1 : le numéro 5
00011001 signifie : soustraire un de la valeur de la cellule 1 et y laisser le résultat mis à jour
00101001 signifie: comparer la valeur de la cellule numéro 1 avec zéro et si elle est nulle - sauter par-dessus autant d'octets qu'indiqué dans l'octet suivant
00000100 … si le résultat était zéro, nous voulons sauter 4 octets à l'avant-dernière instruction
10000011
01000001 ... la lettre "A" correspond juste à ce code
00101000 signifie que nous voulons revenir en arrière d'autant d'octets que l'octet suivant
00000110 ...nous allons sauter 6 octets en arrière, à l'instruction n°3
10000011 signifie que l'on veut afficher le caractère dont le code est écrit dans l'octet suivant
00100001 ... pancarte "!" correspond juste à ce code

À la suite de l'exécution d'une telle séquence d'instructions, la phrase de panique "AAAA!" s'affichera à l'écran.

Les programmeurs sont "paresseux", c'est connu. Mais au final, à quoi sert une fonction ? C'est trop et c'est illisible. Ce que nous allons faire, c'est créer une fonction dans laquelle nous entrons ces 300 instructions et dans notre programme, nous appellerons cette fonction 10 fois.

Vous l'aurez compris, le principe d'une fonction n'est pas d'écrire d'innombrables lignes de code et de rendre votre programme plus lisible. Ces fonctions sont un peu comme les "sous-routines" que vous utilisez dans votre programme principal. Pour simplifier, on dira qu'il existe deux types de fonctions, les fonctions silencieuses et les fonctions bruyantes.

Beaucoup de code pour un objectif aussi simple ! Il est clair que si tous les programmes étaient écrits ainsi, directement, le développement de produits complexes prendrait des siècles.

Pourquoi les langages de programmation sont nécessaires

Pour simplifier la tâche un million de fois, des langages de programmation ont été inventés. Il y en a beaucoup, et même parmi ceux qui sont constamment à l'écoute, on peut rapidement en rappeler une douzaine ou deux : Assembleur, C, C++, C#, Java, Python, Ruby, PHP, Scala, JavaScript.

Les fonctions silencieuses sont celles qui, lorsqu'elles sont appelées, exécutent le code qu'elles contiennent sans rien afficher, puis elles disent qu'elles ne retournent rien. Un exemple de fonction silencieuse. On met entre parenthèses, vous verrez leur utilité dans un instant. Nous ouvrons des accolades dans lesquelles nous ajoutons les instructions qui composent la fonction.

Vous pouvez même créer des fonctions silencieuses plus complexes. Le contenu de la fonction peut en effet être ce que vous souhaitez. Les fonctions bruitées, contrairement à ce qui a été vu jusqu'ici, renvoient une donnée. Nous voulons créer une fonction qui contiendra deux chiffres.

Les programmes dans ces langues sont beaucoup plus proches du langage naturel humain. Et donc ils sont plus faciles, plus rapides et plus agréables à écrire, et surtout, ils sont beaucoup plus faciles lis: à vous immédiatement après avoir écrit, à vous dans un an ou à votre collègue.

Le problème est que ces langages ne sont pas compréhensibles pour le processeur, et avant de lui donner ce programme, il doit être compiler: traduire du langage naturel vers ces mêmes instructions sous la forme de zéros et de uns. Ceci est fait par des programmes appelés compilateurs. Chaque langage, à moins qu'il ne soit resté au niveau fantasy, a son propre compilateur. Pour les langues populaires, il y en a généralement plusieurs parmi lesquelles choisir, de différents fabricants et pour différentes plateformes. La plupart d'entre eux sont disponibles gratuitement sur Internet.

Ensuite, nous appelons la fonction. Vous souvenez-vous des parenthèses vides avec les exemples ci-dessus ? Les soi-disant arguments sont placés entre parenthèses, ce qui rend l'utilité de la fonction plus intéressante. En effet, grâce aux arguments, notre fonction fonctionnera en fonction des variables définies par l'utilisateur. Nous pouvons fournir autant d'arguments que nous voulons et de n'importe quel type.

Ici, nous avons avancé deux arguments. A l'intérieur de la fonction, nous déclarons un entier, appelé le résultat, qui contiendra exactement le résultat de l'addition. Le comportement de la fonction sera différent des valeurs définies par l'utilisateur. Ensuite, nous avons un remboursement. Le retour est la valeur que la fonction renverra. mais qu'est ce que ça veut dire?

Ainsi, il existe des programmes dans un langage assez compréhensible pour une personne : on les appelle aussi "code source", simplement "code" ou "codes source". Ils sont écrits dans des fichiers texte en utilisant n'importe queléditeur de texte, même avec bloc-notes. Ensuite, ils sont convertis en ensembles de zéros et de uns compréhensibles pour le processeur à l'aide du compilateur : le compilateur reçoit en entrée la source, et à la sortie crée exécutable binaire, celui compris par le processeur.

Tout simplement, la fonction aura une valeur lors de son retour. Si le résultat entier est 4, alors la fonction d'addition est valide. D'où la spécification du type de fonction. Une fonction bruitée est souvent appelée variable, par exemple. Enfin, il est important de mentionner qu'un programme qui lit de haut en bas, les fonctions doivent être déclarées avant d'être utilisées.

Exemple de code utilisant une fonction. C'est-à-dire ce qui sera dit, ce qui est inévitable et nécessaire. Et quand on se lève le matin, mieux vaut être sur son pied droit ! Nous allons commencer par observer la structure de base du programme et en même temps faire un tour du travail avec l'interface de programmation.

Les fichiers binaires ne sont pas lisibles et sont destinés, en général, uniquement à l'exécution par le processeur. Ils peuvent avoir type différent en fonction de la raison pour laquelle ils ont été reçus : .exe - ce sont des programmes pour Windows, .hex - des programmes à exécuter par un microcontrôleur tel qu'Arduino, etc.

Pourquoi y a-t-il autant de langages de programmation et quelle est la différence ?

Ce chapitre donnera également un aperçu du principe de compilation et travail commun microcontrôleur. Pour ceux qui sont déjà initiés, cette section paraîtra parfaitement claire. Mais regardons notre premier programme. Voici à quoi cela ressemble sur votre appareil de programmation.

Vous avez donc probablement remarqué que les mots sont colorés lorsqu'ils sont tapés. C'est un appel un peu plus pratique à la coloration syntaxique, elle est utilisée en informatique, elle permet de faire la distinction entre les mots-clés du langage utilisé et les autres. Pour les artistes sensibles de l'étudiant du genre.

    Pourquoi? Parce qu'il y a beaucoup de gens et d'entreprises sur Terre, et beaucoup pensaient qu'ils pouvaient le faire mieux que quiconque : plus pratique, plus clair, plus rapide, plus mince.

    Quelle est la différence : différentes langues présentent un équilibre différent entre la vitesse d'écriture, la lisibilité et la vitesse d'exécution.

Regardons le même programme qui affiche une chanson sur 99 bouteilles de bière à l'écran. différentes langues programmation.

"Tu vois, je n'aime pas qu'il y ait du orange, souris aux mots, ze verra le plutoon bleu-turquoise." Je suis désolée de leur dire qu'on n'a pas le choix des couleurs, mais c'est très pratique ! Un programme informatique est une séquence d'instructions donnée à une machine. Ces instructions sont écrites dans un langage qui utilise des mots spécifiques. Sachant programmer, il connaît déjà les mots justes.

Regardons à nouveau le programme, nous voyons des parenthèses et des accolades. Dans ce chapitre, vous verrez bientôt l'utilité des parenthèses et des accolades, qui sont souvent la cause d'échec des programmes, et nous verrons plus tard qu'elles peuvent être imbriquées les unes dans les autres. accolade, fermez-le juste après et revenez entre les deux pour ajouter votre code.

Par exemple, le langage Perl. Écrit rapidement; il est impossible de comprendre ce que voulait dire le programmeur; exécuté lentement :

sub b( $n = 99 - @_ - $_ || Non; "$n bouteille" . "s" x!!-- $n . " de bière" ) ​​; $w = "sur le mur" ; die map ( b. "$w, \n". b. ", \n Prenez-en un, faites-le circuler,\n ". b(0) . "$w. \n\n"} 0 .. 98

Langage Java. Il est écrit relativement long ; facile à lire; s'exécute assez rapidement, mais prend beaucoup de mémoire :

Passons maintenant au menu proposé par le logiciel.

Ces cinq boutons sont presque les seuls que nous devrons utiliser pour lancer le programme. Nous les étudierons donc un par un dans ce chapitre. Vous remarquerez qu'en les survolant, un texte d'aide s'affiche à droite des icônes.

Ce bouton vous permet de tester votre programme.


Cela signifie que le programme est correct. Qu'est-ce que la compilation ? En fait, le programme que vous écrivez n'est pas celui que reçoit l'Arduino. C'est un programme conçu pour que les gens puissent le lire et le comprendre sans trop de difficulté. La machine ne comprend que le langage machine, la séquence de 1 et de 0, qu'elle va interpréter et exécuter.

bouteilles de classe (public static void main( Chaîne de caractères arguments ) ( Chaîne de caractères s = "s" ; pour (int bières= 99 ; bières>- 1 ; ) ( Système.out .print (bières + " bouteille" + s + " de bière au mur, " ) ; Système.out .println (bières + " bouteille" + s + " de bière, " ) ; si (bières== 0 ) ( Système.out .print( "Allez au magasin, achetez-en d'autres",) ; Système.out .println( "99 bouteilles de bière au mur.\n ") ; Système.exit(0) ; ) autre Système.out .print( "Prenez-en un, faites-le circuler") ; s = (-- bières == 1 ) ? "" : "s" ; Système.out .println(bières + "bouteille" + s + " de bière sur le mur.\n ") ; } } }

langage d'assemblage. C'est écrit depuis longtemps; difficile à lire; tourne très vite :

segment de code assume cs : code , ds : code org 100h start : ; Boucle principale mov cx , 99 ; bouteilles pour démarrer avec loopstart : appelez printcx ; imprimer le nombre mov dx , offset line1 ; imprimer le reste de la première ligne mov ah , 9 ; Routine de chaîne d'impression MS-DOS int 21h call printcx ; imprimer le nombre mov dx , offset line2_3 ; reste des 2e et 3e lignes mov ah , 9 int 21h déc cx ; décrochez un call printcx ; imprimer le nombre mov dx , offset line4 ; imprimer le reste de la quatrième ligne mov ah , 9 int 21h cmp cx , 0 ; En panne de bière ? jne loopstart ; sinon, continuer int 20h ; quitter pour MS-DOS ; sous-programme pour imprimer le registre CX en décimal printcx : mov di , offset numbufferend ; remplir le tampon à partir de la fin mov hache, cx ; mettre le nombre dans AX pour pouvoir le diviser printcxloop: mov dx , 0 ; mot de poids fort du numérateur - toujours 0 mov bx , 10 div bx ; diviser DX:AX par 10. AX=quotient, DX=reste ajouter dl , "0" ; convertir le reste en caractère ASCII mov [ds : di] , dl ; placez-le dans le tampon d'impression cmp ax , 0 ; Plus de chiffres à calculer ? je printcxend ; sinon, fin déc di ; mettre le chiffre suivant avant l'actuel jmp printcxloop ; boucle printcxend : mov dx , di ; imprimer, à partir de le dernier calcul numérique mov ah , 9 int 21h ret ; Ligne de données1 db "bouteilles de bière sur le mur,", 13 , 10 , "$" line2_3 db " bouteilles de bière," , 13 , 10 , "Prenez-en un, faites-le circuler", 13 , 10 , "$" line4 db "bouteilles de bière sur le mur.", 13 , 10 , 13 , 10 , "$" numbuffer db 0 , 0 , 0 , 0 , 0 numbufferend db 0 , "$" code se termine fin début

Comment est programmé Arduino ?

En parlant d'Arduino ou des microcontrôleurs d'Atmel, dans quel langage peut-on écrire des programmes pour eux ? La réponse théorique: sur tout. Mais en pratique, le choix se limite à Assembler, C et C++. Cela est dû au fait que, par rapport à un ordinateur de bureau, ils disposent de ressources très limitées. Des kilo-octets de mémoire, pas des gigaoctets. Mégahertz sur le processeur, pas gigahertz. C'est un prix pour le bon marché et l'efficacité énergétique.

La compilation est la transformation d'un langage de programmation utilisé par un humain en un langage machine utilisé par une machine. Maintenant vous pouvez essayer de modifier votre programme en supprimant la première parenthèse en cliquant dessus et vous obtiendrez un message du genre.


On sent tout de suite que quelque chose n'est pas clair, et on a raison !

Pour comprendre ce qui se passe, lisez le message d'erreur. Mais ce n'est pas toujours la bonne raison. . Les erreurs courantes sont que vous avez oublié de taper quelque chose, ou que vous n'avez pas respecté le format attendu. Au début, vous oublierez surtout les points-virgules et les accolades ou accolades. Plus tard les problèmes vont s'aggraver car le logiciel ne verra pas forcément d'erreur, mais votre programme ne fera pas ce que vous voulez, mais nous n'en sommes pas là.

Vous avez donc besoin d'un langage capable de compiler et de s'exécuter efficacement. C'est-à-dire traduire de la manière la plus optimale possible les zéros et les uns des instructions, sans dépenser de précieuses instructions et de la mémoire vide. Ces langages sont tout aussi efficaces. En les utilisant, même dans les limites étroites des ressources du microcontrôleur, vous pouvez écrire des programmes riches en fonctionnalités qui s'exécutent rapidement.

Tout doit être en ordre. Ils vous permettront de mieux comprendre le fonctionnement du débogueur et vous dérouteront par la suite. Et ce n'est pas gagné pour tout le monde. Pas beaucoup de choix, il faut le faire. Certains d'entre eux rencontreront des difficultés. Vous avez un menu "Outils" dans le menu du logiciel, dans ce menu vous trouverez un sous-menu "Serial Port" qui propose plusieurs ports à utiliser. Modifiez le port sélectionné et réessayez jusqu'à ce que vous trouviez le bon. Vous devrez peut-être répéter cette opération à un autre moment.

Mais que fait réellement ce programme que nous venons d'écrire ? Ce n'est pas facile, essayez dur, nous faisons toujours quelque chose. Maintenant que vous connaissez la forme de base d'un programme, créons un programme qui fait quelque chose.


Il occupe des parties importantes de la carte.

L'assembleur, comme vous l'avez vu, n'est pas le plus simple et le plus élégant, et du coup, C/C++ est le langage phare d'Arduino.

De nombreuses sources disent que l'Arduino est programmé en Langage Arduino, Traitement, Câblage. Ce n'est pas une déclaration tout à fait correcte. Arduino est programmé en C / C ++, et ce qu'on appelle par ces mots n'est qu'un "kit carrosserie" pratique qui vous permet de résoudre de nombreuses tâches typiques sans réinventer la roue à chaque fois.

Nous allons jeter un œil en haut de cette image. Plus tard nous verrons de quoi il s'agit, pour l'instant il suffit de comprendre qu'il peut prendre feu. La diode s'allume lorsqu'elle traverse le bon courant, dans le bon sens. Vous verrez que c'est très pratique et que cela peut être utilisé dans certains cas pour nous aider à déboguer.

Les étapes du programme sont assez simples.

  • On a dit à l'arduino que nous voulions que la connexion 13 envoie du courant.
  • On a dit à l'arduino d'envoyer du courant à la connexion.
Et vous ne pouvez pas le deviner seul.


Le point-virgule est primordial ! Si vous oubliez que le programme ne compilera pas. Ils ne sont pas de la même couleur, nous verrons plus tard pourquoi. Vous avez remarqué que la structure du moment n'a pas changé, nous avons juste ajouté deux instructions entre les accolades.

Pourquoi C et C++ sont-ils mentionnés dans la même phrase ? C++ est un complément de C. Chaque programme C est un programme C++ valide, mais pas l'inverse. Vous pouvez utiliser les deux. Le plus souvent, vous ne penserez même pas à ce que vous utilisez pour résoudre le problème actuel.

Allez droit au but : le premier programme

Écrivons le premier programme Arduino et faisons-le exécuter par la carte. Vous devez créer un fichier texte avec le code source, le compiler et placer le fichier binaire résultant sur le microcontrôleur de la carte.

Le nombre 13 n'est pas anodin, c'est bien la conjonction 13 qui est en jeu. Il fait ce qui est demandé. Pour l'éteindre, il faut envoyer un nouveau programme qui lui fera éteindre la diode. Mots clés en bleu Logiciel sont spéciaux. Ce sont les valeurs que l'Arduino connaît et utilise.

Il est important d'essayer de trouver une solution par vous-même, de déboguer et, enfin, de la trouver. Regarder une solution sans penser à soi est beaucoup moins formateur. Avez-vous trouvé un peu jusqu'à présent? Lorsque vous débutez vraiment, ces concepts peuvent sembler abstraits et déroutants, l'expérience vous aidera à créer de meilleures connexions entre tout ce que vous avez ingéré.

Allons dans l'ordre. Écrivons le code source. Vous pouvez l'écrire dans le bloc-notes ou tout autre éditeur. Cependant, afin de faciliter le travail, il existe des environnements dits de développement (IDE : Integrated Development Environment). Ils fournissent sous la forme d'un seul outil un éditeur de texte avec surlignage et astuces, un compilateur lancé par un bouton, et bien d'autres joies. Pour Arduino, cet environnement s'appelle EDI Arduino. Il est disponible gratuitement en téléchargement sur le site officiel.

Eh bien, si vous êtes prêt, nous allons attaquer notre premier programme plus complexe. Avons-nous allumé la diode, l'avons-nous éteinte et l'avons-nous fait fonctionner ? Chaque fois que vous décidez de faire un programme, il est important de savoir à l'avance, dans la mesure du possible, ce que vous voulez réaliser. Il est toujours tentant d'y aller directement et de le changer au fur et à mesure. plus votre programme sera complexe, plus il sera difficile de le modifier pour intégrer de nouvelles fonctionnalités, ce sera difficile.

Nous spécifierons d'envoyer du courant dans la connexion. 13 Nous indiquons d'arrêter d'envoyer du courant dans la connexion. 13 Ensuite, nous voulons recommencer au point numéro 2 dans la case de l'infini. Les points 1, 2 et 3 peuvent maintenant être programmés sans problème. Là où c'est difficile, c'est le point.

Installez l'environnement et exécutez-le. Dans la fenêtre qui apparaît, vous verrez : la plupart de places données à l'éditeur de texte. C'est là que le code est écrit. Le code dans le monde Arduino est aussi appelé esquisser.

Alors écrivons un sketch qui ne fait rien. C'est-à-dire le plus petit programme C++ correct possible qui fait simplement perdre du temps.

void setup() ( ) void loop() ( )

Nous ne nous attarderons pas encore sur la signification du code écrit. Compilons-le. Pour ce faire, dans l'IDE Arduino, il y a un bouton "Vérifier" sur la barre d'outils. Cliquez dessus et en quelques secondes le fichier binaire sera prêt. Ceci sera annoncé par l'inscription "Compilation terminée" sous l'éditeur de texte.

On va dire qu'ils sont dans le décor. Ces instructions ne sont lues et activées qu'une seule fois. Il donne en représentation graphique. Prenons, par exemple, le pseudo-programme suivant. Voici le chemin vers le programme. Et ceci jusqu'à l'infini ou presque, ou jusqu'à ce qu'il y ait un courant.

Cette image semble être très longue. Cela permet de distinguer une exécution simple d'une exécution en boucle, de plus, c'est un rappel que les accolades indiquent les limites de blocs de commandes du programme. Il faut absolument s'en souvenir pour continuer. Donc du coup ça change un peu ce qu'il faut écrire si on veut qu'il clignote indéfiniment.

En conséquence, nous avons un fichier binaire avec l'extension .hex, qui peut être exécuté par le microcontrôleur.

Maintenant, vous devez le glisser dans l'Arduino. Ce processus est appelé démarrage, clignotement ou clignotement. Pour effectuer un téléchargement dans l'IDE Arduino, il y a un bouton "Télécharger" sur la barre d'outils. Connectez l'Arduino à l'ordinateur via le câble USB, cliquez sur "Télécharger" et dans quelques instants, le programme sera téléchargé sur l'Arduino. Dans ce cas, le programme qui s'y trouvait auparavant sera effacé.

Le firmware réussi sera annoncé par l'inscription "Done Uploading".

Si vous rencontrez une erreur lors de la tentative de téléchargement, assurez-vous que :

    Dans le menu Outils → Carte, le port auquel l'Arduino est réellement connecté est sélectionné. Vous pouvez brancher et débrancher le câble USB pour voir quel port apparaît et disparaît : c'est l'Arduino.

    Vous avez installé les pilotes nécessaires pour l'Arduino. Ceci est requis pour Windows, non requis pour Linux, et uniquement requis pour les cartes plus anciennes avant l'Arduino Duemilanove sur MacOS.

Toutes nos félicitations! Vous êtes passé d'une table rase à un programme Arduino fonctionnel. Qu'elle ne fasse rien, mais c'est déjà un succès.

Arduino est l'un des plus des moyens simples microcontrôleurs maîtres : grâce à une interface simple, simplicité (on pourrait même dire primitivité) du "langage Arduino", la programmation des microcontrôleurs devient accessible même aux écoliers. Cependant, il y a toujours des passionnés qui essaient d'améliorer même ce qui semble simple de toute façon. Dans ce cas, on parle de "programmation visuelle", c'est-à-dire des environnements graphiques qui permettent non pas d'écrire des programmes, mais de les dessiner.
Nous rencontrons donc : Scratch, ArduBloсk et FLProg - trois tentatives pour rendre la programmation accessible même aux enfants d'âge préscolaire :)

Se gratter
Page du projet - s4a.cat/
En 2003, un groupe de chercheurs dirigé par Mitchell Resnick au MIT Media Lab a décidé de rendre le langage de programmation du domaine public. En conséquence, 4 ans plus tard, Scratch est apparu - "un environnement pour enseigner la programmation aux écoliers".
Dans cet environnement, vous pouvez créer et jouer avec divers objets, modifier leur apparence, les déplacer sur l'écran et établir des formes d'interaction entre eux. Il s'agit d'un environnement orienté objet basé sur le principe du constructeur LEGO, dans lequel les programmes sont assemblés à partir de briques de commande multicolores de la même manière que les constructeurs Lego sont assemblés à partir de briques multicolores.
L'environnement est russifié, il existe de nombreuses instructions et manuels en russe. Les projets créés dans Scratch sont publiés sur le site Web du projet scratch.mit.edu/ , qui sont tous disponibles pour téléchargement et utilisation. L'environnement est accessible au travail d'un enfant dès son plus jeune âge, peu capable de lire et d'utiliser une souris.
La base de l'environnement est constituée de blocs de commande divisés en plusieurs groupes : mouvement, apparence, son, stylet, contrôle, capteurs, opérateurs, variables. Le "tiroir" intégré vous permet de dessiner l'objet souhaité et les blocs de commande (vous devez les faire glisser avec la souris) - définissez le programme d'actions, y compris l'utilisation d'instructions conditionnelles et de boucles. Bien sûr, Scratch manque de beaucoup de fonctions d'un vrai langage de programmation, mais il en a assez pour créer des programmes et des jeux assez complexes. Le programme lui-même possède une base de données assez importante d'animaux, de maisons, d'objets dessinés prêts à l'emploi, etc.
En 2008, le projet Scratch pour Arduino (dans l'original : Scratch For Arduino ou S4A en abrégé) est apparu - il s'agit d'une modification de Scratch qui permet de programmer facilement visuellement le contrôleur Arduino, et contient également de nouveaux blocs pour contrôler les capteurs et actionneurs connectés à l'Arduino.
S4A est un croquis de firmware s4a.cat/downloads/S4AFirmware15.ino , qui est chargé dans Arduino, en fait un dispositif exécutif, le programme s'exécute sur l'ordinateur, Arduino l'exécute physiquement, transmettant des signaux aux sorties de la carte. Dans ce cas, l'Arduino reçoit des commandes de Scratch via la connexion série sur quels ports définir le niveau et transfère les niveaux mesurés des entrées vers le PC.
Plus de détails peuvent être trouvés soit sur la page du projet, soit en regardant la vidéo d'Amperka - www.youtube.com/playlist?…OzZQGDFdoRfldtqbmNU6a-PIp

ArduBloc
Page du projet -blog.ardublock.com/
Je n'ai pas pu trouver les noms des développeurs et leur localisation, mais ce projet est activement promu par le développeur de la carte sparkfun, donc à mon humble avis, c'est leur projet.
Ardublock est un langage de programmation graphique pour Arduino conçu pour les non-programmeurs et facile à utiliser. Contrairement à Scratch, ArduBlock est intégré à Environnement Arduino IDE et génère une esquisse de programme qui est chargée dans le MK. De plus, après le téléchargement sur la plateforme, le code sera exécuté de manière autonome, c'est-à-dire ne nécessite pas de contrôle direct depuis un ordinateur via une communication filaire ou sans fil.
Parmi la communauté russophone, le projet est connu grâce à un enseignant enthousiaste de Labinsk Alexander Sergeevich Alikin - geektimes.ru/post/258834/

FLProgName
Page du projet - flprog.ru/
Le projet est développé par une seule personne - Sergey Glushenko. L'idée principale est d'adapter les langages FBD et LAD utilisés dans le domaine de la programmation de contrôleurs industriels à Arduino.

FBD (schéma fonctionnel)- langage de programmation graphique de la norme CEI 61131-3. Le programme est formé à partir d'une liste de circuits exécutés séquentiellement de haut en bas. Lors de la programmation, des ensembles de blocs de bibliothèque sont utilisés. Un bloc (élément) est un sous-programme, une fonction ou bloc fonctionnel(ET, OU, NON, déclencheurs, temporisateurs, compteurs, blocs de traitement Signal analogique, opérations mathématiques, etc.). Chaque circuit individuel est une expression composée graphiquement à partir de éléments individuels. Le bloc suivant est connecté à la sortie du bloc, formant une chaîne. À l'intérieur de la chaîne, les blocs sont exécutés strictement dans l'ordre de leur connexion. Le résultat du calcul du circuit est écrit dans une variable interne ou transmis à la sortie du régulateur.

Diagramme à relais (LD, LAD, RKS)- le langage de la logique relais (échelle). La syntaxe du langage est pratique pour remplacer les circuits logiques réalisés sur la technologie relais. Destiné aux ingénieurs en automatisation travaillant sur entreprises industrielles. Fournit une interface claire à la logique du contrôleur, ce qui facilite non seulement les tâches de programmation et de mise en service, mais également un dépannage rapide de l'équipement connecté au contrôleur. Le programme de logique à relais possède une interface graphique visuelle et intuitive pour les ingénieurs électriciens, présentant des opérations logiques, telles que circuit électrique avec contacts fermés et ouverts. Le passage ou l'absence de courant dans ce circuit correspond au résultat opération logique(vrai si le courant circule ; faux si aucun courant ne circule). Principaux éléments les langues sont des contacts qui peuvent être assimilés au sens figuré à une paire de contacts de relais ou de bouton. Une paire de contacts est identifiée par une variable logique, et l'état de cette paire est identifié par la valeur de la variable. Une distinction est faite entre les éléments de contact normalement fermés et normalement ouverts, qui peuvent être comparés aux boutons-poussoirs normalement fermés et normalement ouverts dans les circuits électriques.
Le résultat du travail de FLProg est le code final, qui peut être chargé dans le MK.

Ce ne sont pas tous des projets qui vous permettent de mettre en œuvre une manière visuelle de programmer. Il y en a d'autres - peut-être meilleurs et plus progressistes, mais moins connus.