Un limbaj pentru scrierea schițelor în Windows. Limbajul de programare Arduino. Cum este programat Arduino?

Deci ai un procesor. Probabil înțelegeți că procesorul poate fi programat cumva să facă ceea ce doriți. Pentru ca o muncă utilă să fie efectuată, este necesar să (a) scrieți un program util și (b) să-l dați procesorului pentru execuție.

În general, nu contează ce tip de procesor aveți: cel mai recent Intel Pentium în laptop sau un microcontroler pe Placa Arduino. Principiile scrierii unui program, de ex. programare, în ambele cazuri la fel. Singura diferență este viteza și domeniul de aplicare a capabilităților de lucru cu alte dispozitive.

Dar programatorii, care sunt în general „leneși”, pot reduce această expresie. Și dacă vrem să facem efectul opus, scriem așa. Acum că știți tot ce trebuie să știți despre mărire, să trecem la buclă. Creșteți variabila noastră pentru a păstra bucla așa cum ne dorim. A declarat variabila noastră. . Aceste trei etape au fost separate. Cu totul mergând pe aceeași linie!

Probabil bănuiți acest lucru, dar incrementul va fi aplicat de fiecare dată când bucla face o întoarcere. Aveți toate instrumentele de bază pentru a testa aceste structuri de guvernare. Este foarte probabil să nu înțelegi pe deplin valoarea tuturor acestor lucruri, iar asta este complet normal. Toate acestea nu trebuie învățate pe de rost.

Ce este un program și unde să-l scrie

Procesorul, în ciuda întregii complexități a producției, este în esență un lucru destul de simplu și direct. Nu știe să gândească. El poate doar orbește, octet cu octet, să execute instrucțiunile care i-au fost înmânate. Un exemplu aproximativ al secvenței de instrucțiuni poate fi dat:

Octet de instrucțiuneCe înseamnă pentru procesor
00001001 înseamnă: luați următorul octet și stocați-l în celula nr. 1
00000110 ... acesta este exact următorul octet pe care îl amintim în celula nr. 1: numărul 5
00011001 înseamnă: scădeți unul din valoarea din celula nr. 1 și lăsați rezultatul actualizat acolo
00101001 înseamnă: comparați valoarea din celula nr. 1 cu zero și, dacă este zero, treceți prin cât mai mulți octeți indicați în octetul următor
00000100 ...dacă rezultatul a fost zero, vrem să sărim 4 octeți la penultima instrucțiune
10000011
01000001 ...litera „A” corespunde exact acestui cod
00101000 înseamnă că vrem să sărim înapoi la cât mai mulți octeți indicați în octetul următor
00000110 ... vom sări cu 6 octeți înapoi la instrucțiunea nr. 3
10000011 înseamnă că dorim să afișăm caracterul al cărui cod este scris în octetul următor
00100001 ... semnul "!" Acest cod se potrivește exact

Ca rezultat al executării acestei secvențe de instrucțiuni, pe ecran va fi afișată fraza de panică „AHHH!”.

Programatorii sunt „lenesi”, se știe. Dar la sfârșitul zilei, la ce servește funcția? Este prea mult și este ilizibil. Ceea ce vom face este să creăm o funcție în care introducem aceste 300 de instrucțiuni, iar în programul nostru vom apela această funcție de 10 ori.

Veți înțelege că principiul unei funcții este să nu scrieți nenumărate linii de cod și să vă faceți programul mai plăcut de citit. Aceste funcții sunt un pic ca „subrutinele” pe care le utilizați în programul principal. De dragul simplității, se va spune că există două tipuri de funcții, funcții silentioase și funcții zgomotoase.

Destul de mult cod pentru un scop atât de simplu! Este clar că dacă toate programele ar fi scrise așa, direct, dezvoltarea unor produse complexe ar dura secole.

De ce sunt necesare limbaje de programare?

Pentru a simplifica sarcina de un milion de ori, au fost inventate limbaje de programare. Există o mulțime de ele și chiar și dintre cele care sunt auzite în mod constant, vă puteți aminti rapid o duzină sau două: Assembler, C, C++, C#, Java, Python, Ruby, PHP, Scala, JavaScript.

Funcțiile silențioase sunt cele care, atunci când sunt apelate, execută codul pe care îl conțin fără să afișeze nimic, apoi spun că nu returnează nimic. Un exemplu de funcție silențioasă. Punem aici două paranteze, le veți vedea utilitatea puțin mai târziu. Deschidem acoladele în care adăugăm afirmațiile care compun funcția.

Puteți crea chiar și funcții silențioase mai complexe. Conținutul funcției poate fi într-adevăr ceea ce doriți. Funcțiile zgomotoase, spre deosebire de cele văzute până acum, returnează dat. Vrem să creăm o funcție care să conțină două cifre.

Programele în aceste limbi sunt mult mai apropiate de limbajul uman natural. Și, prin urmare, sunt mai ușor, mai rapid și mai plăcut de scris și, cel mai important, sunt mult mai simple citire: ție imediat după ce ai scris, ție un an mai târziu, sau colegului tău.

Problema este că astfel de limbi nu sunt de înțeles de procesor și înainte de a-i oferi acest program, trebuie să o faci compila: traduceți din limbajul natural în aceleași instrucțiuni sub formă de zerouri și unu. Acest lucru se face prin programe numite compilatoare. Fiecare limbaj, cu excepția cazului în care rămâne la nivel de fantezie, are propriul său compilator. Pentru limbile populare, există de obicei mai multe dintre care să alegeți diferiți producătoriși pentru diferite platforme. Cele mai multe dintre ele sunt disponibile gratuit pe Internet.

Apoi numim functia. Vă amintiți parantezele goale cu exemplele de mai sus? Așa-numitele argumente sunt plasate între paranteze, ceea ce face ca utilitatea funcției să fie mai interesantă. Într-adevăr, datorită argumentelor, funcția noastră va funcționa în funcție de variabilele specificate de utilizator. Putem furniza câte argumente vrem și de orice tip.

Am făcut două argumente aici. În interiorul funcției, declarăm un număr întreg numit rezultat, care va conține exact rezultatul adunării. Comportamentul funcției va diferi de valorile personalizate. Atunci avem o rambursare. Return este valoarea pe care funcția o va returna. Dar ce înseamnă asta?

Deci, există programe într-un limbaj care este pe deplin înțeles de oameni: ele mai sunt numite și „cod sursă”, pur și simplu „cod” sau „coduri sursă”. Sunt scrise în fișiere text simple folosind orice editor de text, chiar și folosind notepad. Apoi ele sunt transformate în seturi de zerouri și unele ușor de înțeles pentru procesor folosind compilatorul: compilatorul primește ca intrare cod sursă, iar la ieșire creează executabil binar, cel de înțeles de procesor.

Pur și simplu, funcția va avea o valoare pe măsură ce revine. Dacă rezultatul întreg este 4, atunci funcția de adunare este validă. De aici și specificația tipului de funcție. Funcția zgomotoasă este adesea menționată ca o variabilă, de ex. În cele din urmă, este important de menționat că într-un program de sus în jos, funcțiile trebuie declarate înainte de a fi utilizate.

Exemplu de cod folosind funcția. Adică ceea ce se va spune, ceea ce este inevitabil și necesar. Și când te trezești dimineața, e mai bine să fii pe piciorul drept! Vom începe prin a observa structura de bază a programului și, în același timp, vom face un tur al modului de utilizare a interfeței software.

Fișierele binare nu pot fi citite și, în general, sunt destinate doar execuției de către procesor. Ei pot avea tip diferitîn funcție de ce au fost primite: .exe sunt programe pentru Windows, .hex sunt programe pentru execuție de către un microcontroler precum Arduino etc.

De ce există atât de multe limbaje de programare și care este diferența?

Acest capitol va oferi, de asemenea, o privire de ansamblu asupra principiului de compilare și munca generala microcontroler. Pentru cei deja initiati, aceasta sectiune va parea destul de clara. Dar să ne uităm la primul nostru program. Iată cum arată pe dispozitivul dvs. de programare.

Deci probabil ați observat că cuvintele sunt colorate pe măsură ce sunt tastate. Acesta este un apel ceva mai practic la evidențierea sintaxei, este folosit în informatică, ne permite să distingem cuvintele cheie ale limbajului folosit și altele. Pentru artiști sensibili și studenți ai genului.

    De ce? Pentru că există mulți oameni și companii pe Pământ și mulți credeau că pot face ce e mai bun: mai convenabil, mai clar, mai rapid, mai subțire.

    Care este diferența: diferitele limbi au un echilibru diferit între viteza de scriere, lizibilitate și viteza de execuție.

Să ne uităm la același program, care afișează pe ecran o melodie despre 99 de sticle de bere. diferite limbi programare.

„Vezi tu, nu-mi place că este portocaliu, zâmbește la cuvinte, vei vedea plutonul albastru-turcoaz.” Îmi pare rău să le spun că nu avem de ales culorile, dar este foarte practic! Un program de calculator este o secvență de instrucțiuni furnizate unei mașini. Aceste instrucțiuni sunt scrise într-un limbaj care utilizează anumite cuvinte. Știind să programeze, știe deja cuvintele potrivite.

Să ne uităm din nou la program, vedem paranteze și bretele. În acest capitol veți vedea în curând utilitatea parantezelor și acoladelor, care sunt adesea cauza blocărilor programului, și vom vedea mai târziu că acestea pot fi imbricate una în cealaltă. paranteză, închideți-l imediat după și reveniți între ele pentru a adăuga codul.

De exemplu, limbajul Perl. Se scrie repede; este imposibil de înțeles ce a vrut să spună programatorul; executat incet:

sub b( $n = 99 - @_ - $_ || Nu; "$n sticla" . "s" x!!-- $n . "de bere" ) ​​; $w = "pe perete" ; harta morții ( b. „$w,\n" . b. ",\n Luați unul jos, treceți-l,\n " . b(0) . „$w.} 0 .. 98

\n\n"

limbajul Java. Este nevoie de un timp relativ lung pentru a scrie; ușor de citit; se execută destul de repede, dar ocupă multă memorie:

Să trecem acum la meniul oferit de software.

Aceste cinci butoane sunt aproape singurele pe care va trebui să le folosim pentru a lansa programul. Prin urmare, le vom studia unul câte unul în acest capitol. Veți observa că, trecându-le, textul de ajutor apare în partea dreaptă a pictogramelor.


Aceasta înseamnă că programul este corect. Ce este compilarea? De fapt, programul pe care îl scrieți nu este cel pe care îl primește Arduino. Este un program conceput astfel încât oamenii să îl citească și să înțeleagă fără prea multe dificultăți. Mașina înțelege doar limbajul mașinii, o secvență de 1 și 0, pe care o va interpreta și executa.

sticle de clasă ( public static void main( Şir argumente) ( Şir s = "s"; pentru (int beers= 99 ; beers>- 1 ; ) ( Sistem pentru (int beers= 99 ; beers>- 1 ; ) (.out .print (beri + "sticlă" + s + "de bere pe perete, " ) ; pentru (int beers= 99 ; beers>- 1 ; ) (.out .println (beri + "sticlă" + s + "de bere, " ) ; dacă (beri== 0 ) () ; pentru (int beers= 99 ; beers>- 1 ; ) (.out .print ( „Du-te la magazin, cumpără-ți mai multe.”) ; pentru (int beers= 99 ; beers>- 1 ; ) (.out .println ( pentru (int beers= 99 ; beers>- 1 ; ) (.out .println (beri + "sticlă" + s + "de bere, " ) ; "99 de sticle de bere pe perete.\n ".exit(0); pentru (int beers= 99 ; beers>- 1 ; ) () altfel „Luați unul jos, dați-l în jur.”) ; } } }

);

s = (-- bere == 1) ? "" : "s" ;.out .println (beri + „sticlă” + s + " de bere pe perete.\n " Limbajul de asamblare. Este nevoie de mult timp pentru a scrie; greu de citit; se execută foarte repede: segment de cod presupune cs : cod , ds : cod org 100h start : ; Bucla principală mov cx, 99; sticle pentru a începe cu loopstart: apelați printcx ; tipăriți numărul mov dx , offset line1; tipăriți restul primei rânduri mov ah, 9; Rutina șir de tipărire MS-DOS int 21h apel printcx ; tipăriți numărul mov dx , offset line2_3; restul rândurilor a 2-a și a 3-a mov ah, 9 int 21h dec cx; preluați un apel în jos printcx; tipăriți numărul mov dx , offset line4; imprimați restul celei de-a patra rânduri mov ah, 9 int 21h cmp cx, 0; De bere? jne loopstart; dacă nu, continuați int 20h; părăsiți la MS-DOS ; subrutină pentru a imprima registrul CX în zecimală printcx: mov di , offset numbufferend ; umpleți tamponul de la sfârșit mov ax, cx ; puneți numărul în AX ca să-l putem împărți printcxloop: mov dx, 0 ; cuvânt de ordin înalt al numărătorului - întotdeauna 0 mov bx, 10 div bx ; împărțiți DX:AX la 10. AX=cot, DX=restul adauga dl , "0"; converti restul într-un caracter ASCII mov[ds:di],dl; pune-l în tamponul de imprimare cmp ax, 0; Mai sunt cifre de calculat? je printcxend ; daca nu, sfarsitul dec di; pune următoarea cifră înaintea celei curente jmp printcxloop ; loop printcxend: mov dx , di; imprimare, începând de la ultimul, 13 , 10 , 13 , 10 , "$" numbuffer db 0 , 0 , 0 , 0 , 0 numbufferend db 0 , "$" codul se termină sfârşitul începutului

Cum este programat Arduino?

Dacă vorbim despre Arduino sau microcontrolere de la Atmel, în ce limbă poți scrie programe pentru ele? Răspunsul teoretic: oricare. Dar, în practică, alegerea este limitată la limbajele Assembler, C și C++. Acest lucru se datorează faptului că, în comparație cu un computer desktop, au resurse foarte limitate. Kilobytes de memorie, nu gigabytes. Megaherți pe procesor, nu gigaherți. Acesta este un preț de plătit pentru ieftinitate și eficiență energetică.

Compilarea este conversia unui limbaj de programare folosit de un om într-un limbaj de mașină folosit de o mașină. Acum puteți încerca să vă schimbați programul eliminând primul parantez făcând clic pe el și veți primi un mesaj de like.


Simțim imediat că ceva nu este clar și avem dreptate!

Pentru a înțelege ce se întâmplă, citiți mesajul de eroare. Dar acesta nu este întotdeauna motivul corect. . Greșelile frecvente sunt că ai uitat să tastezi ceva sau că nu ai respectat formatul așteptat. La început, vei uita în mare parte punctele și virgulă și acolade sau paranteze. Mai târziu problemele se vor agrava pentru că software-ul nu va vedea neapărat nicio eroare, dar programul tău nu va face ceea ce vrei tu, dar noi nu suntem acolo.

Prin urmare, avem nevoie de un limbaj care să poată compila și executa eficient. Adică se traduce chiar în acele zerouri și unuri din instrucțiuni cât mai optim posibil, fără a irosi instrucțiuni prețioase și memorie. Limbile menționate mai sus au acest tip de eficiență. Folosindu-le chiar și în limitele înguste ale resurselor microcontrolerului, puteți scrie programe bogate în funcții care rulează rapid.

Totul trebuie să meargă în ordine. Ele vă vor oferi o mai bună înțelegere a modului în care funcționează depanatorul și vă vor deruta ulterior. Și nu este un câștig-câștig pentru toată lumea. Nu prea ai de ales, trebuie să o faci. Unii dintre ei se vor confrunta cu o problemă. Aveți un meniu „Tools” în meniul software, în acest meniu veți găsi un submeniu „Serial Port” care oferă mai multe porturi de utilizat. Schimbați portul selectat și încercați din nou până îl găsiți pe cel corect. Este posibil să fie nevoie să faceți acest lucru din nou într-un alt moment.

Dar ce face de fapt acest program pe care tocmai l-am scris? Nu este ușor, încearcă din greu, mereu facem ceva. Acum că cunoașteți forma de bază a unui program, să creăm un program care face ceva.


Ocupă părți importante ale hărții.

Assembler, după cum ați văzut, nu poate fi numit cel mai simplu și mai elegant și, prin urmare, limbajul emblematic pentru Arduino este C/C++.

Multe surse spun că Arduino este programat în Limbajul Arduino, Prelucrare, Cablare. Aceasta nu este o afirmație complet corectă. Arduino este programat în C/C++, iar ceea ce se numește în aceste cuvinte este doar un „kit de corp” convenabil, care vă permite să rezolvați multe probleme comune fără a reinventa roata de fiecare dată.

Ne vom uita la partea de sus a acestei imagini. Vom vedea ce este mai târziu, dar deocamdată este suficient să înțelegem că poate lua foc. O diodă se aprinde atunci când curge curentul potrivit, în direcția corectă. Veți vedea că este foarte practic și că poate fi folosit în unele cazuri pentru a ne ajuta să depanăm.

Pașii programului sunt destul de simpli.

  • Arduin i s-a spus că vrem ca conexiunea 13 să trimită curent.
  • Arduinului i s-a spus să trimită curent în conexiune.
Și nu poți să-ți dai seama singur.


Punctul și virgulă este de maximă importanță! Dacă uitați, programul nu se va compila. Nu sunt colorate la fel, vom vedea de ce mai târziu. Veți observa că structura momentului nu s-a schimbat, doar am adăugat două instrucțiuni între bretele.

De ce sunt menționate C și C++ în aceeași propoziție? C++ este o suprastructură a lui C. Fiecare program C este un program C++ valid, dar nu invers. Puteți folosi ambele. Cel mai adesea, nici nu te vei gândi la ce folosești atunci când rezolvi problema actuală.

Mai aproape de subiect: primul program

Să scriem primul program pentru Arduino și să facem ca placa să-l execute. Trebuie să creați un fișier text cu codul sursă, să îl compilați și să alimentați fișierul binar rezultat la microcontrolerul de pe placă.

Numărul 13 nu este nesemnificativ, este cu adevărat conjuncția lui 13 care este în joc. Face ceea ce i s-a cerut. Pentru a-l dezactiva, trebuie să trimiteți program nou, ceea ce îl va obliga să oprească dioda. Cuvinte cheie în albastru software sunt speciale. Acestea sunt valorile pe care le cunoaște și le folosește Arduino.

Este important să încercați să căutați singur o soluție, să depanați și în cele din urmă să o găsiți. Privind corectarea fără să te gândești la tine este mult mai puțin formativ. Ai găsit asta un pic până acum? Când începeți cu adevărat, aceste concepte pot părea abstracte și confuze, experiența vă va ajuta să creați conexiuni mai bune între tot ceea ce ingerați.

Să mergem în ordine. Să scriem codul sursă. Îl poți scrie în notepad sau în orice alt editor. Cu toate acestea, pentru a face munca convenabilă, există așa-numitele medii de dezvoltare (IDE: Integrated Development Environment). Sub forma unui singur instrument, acestea oferă un editor de text cu evidențiere și sugestii, un compilator lansat de un buton și multe alte bucurii. Pentru Arduino acest mediu este numit Arduino IDE. Este disponibil gratuit pentru descărcare de pe site-ul oficial.

Bine, dacă ești gata, vom ataca primul nostru program mai complex. Am pornit dioda, am oprit-o și am pornit-o? Ori de câte ori te hotărăști să faci un program, este important să știi din timp, pe cât posibil, ce vrei să obții. Este întotdeauna tentant să intri direct în ea și să o schimbi pe măsură ce mergi. Cu cât programul dvs. este mai complex, cu atât va fi mai dificil să îl schimbați pentru a integra funcții noi.

Vom indica să trimitem curent în conexiune. 13 Indicăm oprirea trimiterii curentului în conexiune. 13 Apoi vrem să începem din nou la punctul numărul 2 din caseta infinitului. Punctele 1, 2 și 3 pot fi acum programate fără probleme. Unde este dificil este ideea.

Instalați mediul și rulați-l. În fereastra care apare veți vedea: cele mai multe spațiu este acordat unui editor de text. Codul este scris în el. Codul din lumea Arduino este de asemenea numit schiţa.

Deci haideți să scriem o schiță care nu face nimic. Adică programul corect minim posibil în C++, care pur și simplu pierde timpul.

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

Să nu ne concentrăm deocamdată pe semnificația codului scris. Să-l compilam. Pentru a face acest lucru, în Arduino IDE, există un buton „Verificare” pe bara de instrumente. Faceți clic pe el și în câteva secunde fișierul binar va fi gata. Acest lucru va fi anunțat prin inscripția „Compilare finalizată” sub editorul de text.

Vom spune că sunt în ton. Aceste instrucțiuni sunt citite și activate o singură dată. Aceasta oferă o reprezentare grafică. Luați de exemplu următorul pseudo-program. Iată calea către program. Și asta continuă până la infinit, sau aproape, sau atâta timp cât are curent.

Poza asta pare foarte lunga. Acest lucru vă permite să distingeți o singură execuție de o execuție în buclă, în plus, vă reamintește că acoladele indică limitele blocurilor de instrucțiuni ale programului. Acest lucru este absolut necesar să vă amintiți să continuați. Așa că brusc schimbă puțin ceea ce trebuie să scrii dacă vrei să clipească la infinit.

Ca urmare, avem un fișier binar cu extensia .hex, care poate fi executat de microcontroler.

Acum trebuie să-l introduceți în Arduino. Acest proces se numește booting, flashing sau flooding. Pentru a încărca în Arduino IDE, există un buton „Încărcare” pe bara de instrumente. Conectați Arduino la computer printr-un cablu USB, faceți clic pe „Încărcați” și în câteva momente programul va fi încărcat pe Arduino. În acest caz, programul care a fost acolo anterior va fi șters.

Firmware-ul de succes va fi anunțat prin inscripția „Încărcare finalizată”.

Dacă întâmpinați o eroare când încercați să descărcați, asigurați-vă că:

    În meniul Instrumente → Placă, selectați portul la care este conectat de fapt Arduino. Puteți conecta și scoate cablul USB pentru a vedea ce port apare și dispare: acesta este Arduino.

    Ai instalat driverele necesare pentru Arduino. Acest lucru este necesar pe Windows, nu este necesar pe Linux și este necesar doar pe plăci mai vechi înainte de Arduino Duemilanove pe MacOS.

Felicitări! Ați trecut de la o tablă goală la un program de lucru în Arduino. Poate că nu face nimic, dar acesta este deja un succes.

Astăzi Arduino este unul dintre cele mai multe moduri simple microcontrolere master: datorită interfeței simple, simplității (s-ar putea spune chiar primitivitate) a „limbajului Arduino”, programarea microcontrolerelor devine accesibilă chiar și școlarilor. Cu toate acestea, există întotdeauna pasionați care încearcă să îmbunătățească chiar și ceea ce pare simplu. În acest caz vorbim de „programare vizuală”, adică. medii grafice care vă permit să nu scrieți programe, ci să le desenați.
Așa că ne întâlnim: Scratch, ArduBlock și FLProg - trei încercări de a face programarea accesibilă chiar și preșcolarilor :)

Zgâria
Pagina proiectului - s4a.cat/
În 2003, un grup de cercetători condus de Mitchell Resnick de la MIT Media Lab a decis să pună la dispoziția publicului un limbaj de programare. Ca rezultat, 4 ani mai târziu a apărut Scratch - „un mediu pentru predarea programării pentru școlari”.
În acest mediu, puteți să creați și să vă jucați cu diverse obiecte, să le modificați aspectul, să le mutați pe ecran și să stabiliți forme de interacțiune între ele. Acesta este un mediu orientat pe obiecte, care se bazează pe principiul constructorului LEGO și în care programele sunt asamblate din blocuri-cărămizi multicolore de echipe în același mod în care constructorii Lego sunt asamblați din cărămizi multicolore.
Mediul este rusificat, există multe instrucțiuni și manuale pentru el în limba rusă. Proiectele create în Scratch sunt postate pe site-ul web al proiectului scratch.mit.edu/, toate fiind disponibile pentru descărcare și utilizare. Mediul este accesibil copiilor de la o vârstă fragedă care pot să citească și să folosească puțin un mouse.
La baza mediului se află blocurile de comandă, împărțite în mai multe grupe: mișcare, aspect, sunet, stilou, control, senzori, operatori, variabile. „Instrumentul de desen” încorporat vă permite să desenați obiectul dorit și blocurile de comandă (trebuie să le trageți cu mouse-ul) - setați un program de acțiuni, inclusiv utilizarea instrucțiunilor și buclelor condiționate. Desigur, lui Scratch îi lipsesc o mulțime de funcții ale unui limbaj de programare real, dar ceea ce are este suficient pentru a crea programe și jocuri destul de complexe. Programul în sine are o bază de date destul de mare de animale desenate gata făcute, case, obiecte și așa mai departe și, în plus, puteți utiliza oricare dintre miile de programe exemple publicate pe Internet, realizate de adulți și copii, ca un eşantion.
În 2008, a apărut proiectul Scratch pentru Arduino (în original: Scratch For Arduino sau prescurtat ca S4A) - aceasta este o modificare a Scratch, care oferă posibilitatea de a programa cu ușurință vizual controlerul Arduino și, de asemenea, conține noi blocuri pentru controlul senzorilor și actuatoare conectate la Arduino.
S4A este o schiță de firmware s4a.cat/downloads/S4AFirmware15.ino, care se încarcă în Arduino, îl face un dispozitiv executiv, programul este executat pe computer, Arduino îl execută fizic, transmitând semnale către ieșirile plăcii. În acest caz, Arduino, printr-o conexiune Serial, primește comenzi de la Scratch pe ce porturi să seteze la ce nivel și transmite nivelurile măsurate de la intrări către PC.
Mai multe detalii puteți afla fie pe pagina proiectului, fie urmărind videoclipul de la Amperka - www.youtube.com/playlist?…OzZQGDFdoRfldtqbmNU6a-PIp

ArduBlock
Pagina proiectului -blog.ardublock.com/
Nu am putut găsi numele dezvoltatorilor și localizarea lor, dar acest proiect este promovat activ de către dezvoltatorul plăcilor sparkfun, așa că, IMHO, acesta este proiectul lor.
Ardublock este un limbaj de programare grafic pentru Arduino, conceput pentru non-programatori și ușor de utilizat. Spre deosebire de Scratch, ArduBlock este integrat în Mediul Arduino IDE și generează o schiță de program care este încărcată în MK. Mai mult, după încărcarea pe platformă, codul va fi executat autonom, adică. nu este necesar control direct de la un computer prin conexiune prin cablu sau fără fir.
În rândul comunității de limbă rusă, proiectul este cunoscut datorită profesorului entuziast din Labinsk, Alexander Sergeevich Alikin - geektimes.ru/post/258834/

FLProg
Pagina proiectului - flprog.ru/
Proiectul este dezvoltat de o singură persoană - Serghei Glușenko. Ideea principală este de a adapta limbajele FBD și LAD utilizate în domeniul programării controlerelor industriale la Arduino.

FBD (Diagrama blocurilor funcționale)- limbajul de programare grafic standard IEC 61131-3. Programul este format dintr-o listă de circuite executate secvenţial de sus în jos. La programare, se folosesc seturi de blocuri de bibliotecă. Un bloc (element) este o subrutină, o funcție sau bloc funcţional(ȘI, SAU, NU, declanșatoare, temporizatoare, contoare, unități de procesare semnal analogic, operații matematice etc.). Fiecare circuit individual reprezintă o expresie compusă grafic din elemente individuale. Următorul bloc este conectat la ieșirea blocului, formând un circuit. În cadrul unui lanț, blocurile sunt executate strict în ordinea în care sunt conectate. Rezultatul calculului circuitului este scris într-o variabilă internă sau trimis la ieșirea controlerului.

Diagrama cu scară (LD, LAD, RKS)- limbajul logicii releului (scării). Sintaxa limbajului este convenabilă pentru înlocuirea circuitelor logice realizate folosind tehnologia releului. Destinat inginerilor de automatizare care lucrează la întreprinderile industriale. Oferă o interfață vizuală a logicii de funcționare a controlerului, facilitând nu numai sarcinile de programare și punere în funcțiune în sine, ci și depanarea rapidă a echipamentelor conectate la controler. Programul de limbaj logic releu are o interfață grafică care este vizuală și intuitivă pentru inginerii electrici, reprezentând operații logice precum circuit electric cu contactele închise și deschise. Debitul sau absența curentului în acest circuit corespunde rezultatului operatie logica(adevărat - dacă curentul curge; fals - dacă curentul nu curge). Elemente principale Limbajul constă din contacte care pot fi asemănate la figurat cu o pereche de contacte releu sau buton. O pereche de contacte este identificată cu o variabilă logică, iar starea acestei perechi este identificată cu valoarea variabilei. Există elemente de contact normal închise și normal deschise, care pot fi comparate cu butoanele normal închise și normal deschise din circuitele electrice.
Rezultatul muncii FLProg este codul final care poate fi încărcat în MK.

Acestea nu sunt toate proiectele care vă permit să implementați un mod vizual de programare. Mai sunt și altele – poate mai bune și mai progresive, dar mai puțin cunoscute.