FLProg ist eine alternative Arduino-Programmierumgebung. Beschreibung des Projekts. Programmieren von Arduino mit ArduBlock am Beispiel eines Roboters, der sich entlang eines Streifens bewegt. Grafische Umgebungen, die Code als Grafiken darstellen

💖 Gefällt es dir? Teilen Sie den Link mit Ihren Freunden

Diese Lektion vermittelt die Mindestkenntnisse, die zum Programmieren von Arduino-Systemen in C erforderlich sind. Sie können es nur anzeigen und dann als verwenden Hintergrundinformation. Wer auf anderen Systemen in C programmiert hat, kann den Artikel überspringen.

Ich wiederhole, dass dies der Fall ist minimale Informationen. Beschreibung von Zeigern, Klassen, Stringvariablen usw. werden in den folgenden Lektionen vermittelt. Wenn etwas unklar ist, machen Sie sich keine Sorgen. In den nächsten Lektionen wird es viele Beispiele und Erklärungen geben.

Arduino-Programmstruktur.

Der Aufbau des Arduino-Programms ist recht einfach und besteht in seiner Minimalform aus zwei Teilen setup() und loop().

void setup() (

void loop() (

Die Funktion setup() wird einmal ausgeführt, wenn der Controller eingeschaltet oder zurückgesetzt wird. In der Regel finden darin die Ersteinstellungen von Variablen und Registern statt. Die Funktion muss im Programm vorhanden sein, auch wenn darin nichts enthalten ist.

Nachdem setup() abgeschlossen ist, geht die Steuerung an die Funktion loop() über. Es führt die in seinem Körper (zwischen den geschweiften Klammern) geschriebenen Befehle in einer Endlosschleife aus. Tatsächlich führen diese Befehle alle algorithmischen Aktionen des Controllers aus.

Die ursprünglichen Regeln der C-Sprachsyntax.

; Punkt mit Komma Ausdrücke können beliebig viele Leerzeichen und Zeilenumbrüche enthalten. Das Ende eines Ausdrucks wird durch das Semikolonsymbol angezeigt.

z = x + y;
z= x
+ y ;

( ) Geschweifte Klammern Definieren Sie einen Block von Funktionen oder Ausdrücken. Zum Beispiel in den Funktionen setup() und loop().

/* … */ Kommentarblock, unbedingt schließen.

/* das ist ein Kommentarblock */

// einzeiliger Kommentar, kein Schließen erforderlich, gültig bis zum Ende der Zeile.

// Dies ist eine Kommentarzeile

Variablen und Datentypen.

Variable ist eine Zelle Arbeitsspeicher, in dem Informationen gespeichert sind. Das Programm verwendet Variablen, um Zwischenberechnungsdaten zu speichern. Für Berechnungen können Daten unterschiedlicher Formate und unterschiedlicher Bittiefe verwendet werden, sodass Variablen in der Sprache C die folgenden Typen haben.

Datentyp Tiefe, Bits Nummernkreis
Boolescher Wert 8 wahr falsch
verkohlen 8 -128 … 127
unsigniertes Zeichen 8 0 … 255
Byte 8 0 … 255
int 16 -32768 … 32767
unsigned int 16 0 … 65535
Wort 16 0 … 65535
lang 32 -2147483648 … 2147483647
unsigniert lang 32 0 … 4294967295
kurz 16 -32768 … 32767
schweben 32 -3.4028235+38 … 3.4028235+38
doppelt 32 -3.4028235+38 … 3.4028235+38

Die Datentypen werden basierend auf der erforderlichen Berechnungsgenauigkeit, Datenformaten usw. ausgewählt. Beispielsweise sollten Sie für einen Zähler, der bis 100 zählt, nicht den langen Typ wählen. Es wird funktionieren, aber der Vorgang wird mehr Daten- und Programmspeicher beanspruchen und mehr Zeit in Anspruch nehmen.

Deklaration von Variablen.

Der Datentyp wird angegeben, gefolgt vom Variablennamen.

int x; // Deklaration einer Variablen namens x vom Typ int
float widthBox; // Deklaration einer Variablen namens widthBox vom Typ float

Alle Variablen müssen vor ihrer Verwendung deklariert werden.

Eine Variable kann überall in einem Programm deklariert werden, dies bestimmt jedoch, welche Programmblöcke sie verwenden können. Diese. Variablen haben Gültigkeitsbereiche.

  • Zu Beginn des Programms vor der Funktion void setup() deklarierte Variablen gelten als global und sind überall im Programm verfügbar.
  • Lokale Variablen werden innerhalb von Funktionen oder Blöcken wie einer for-Schleife deklariert und können nur innerhalb deklarierter Blöcke verwendet werden. Es ist möglich, mehrere Variablen mit demselben Namen, aber unterschiedlichen Gültigkeitsbereichen zu haben.

int-Modus; // Variable, die für alle Funktionen verfügbar ist

void setup() (
// leerer Block, keine Anfangseinstellungen erforderlich
}

void loop() (

lange Zählung; // Die Zählvariable ist nur in der Funktion loop() verfügbar

für (int i=0; i< 10;) // переменная i доступна только внутри цикла
{
i++;
}
}

Beim Deklarieren einer Variablen können Sie deren Anfangswert festlegen (initialisieren).

int x = 0; // Variable x wird mit dem Anfangswert 0 deklariert
char d = 'a'; // Variable d wird mit dem Anfangswert deklariert, der dem Zeichencode „a“ entspricht

Für arithmetische Operationen mit verschiedene Typen Datentypen werden automatisch konvertiert. Es ist jedoch immer besser, eine explizite Konvertierung zu verwenden.

int x; // int-Variable
char y; // char-Variable
int z; // int-Variable

z = x + (int)y; // Variable y wird explizit in int konvertiert

Rechenoperationen.

Beziehungsoperationen.

Logische Operationen.

Operationen auf Zeigern.

Bitoperationen.

& UND
| ODER
^ EXKLUSIV ODER
~ INVERSION
<< NACH LINKS VERSCHIEBEN
>> Nach rechts verschieben

Gemischte Zuweisungsoperationen.

Auswahl der Optionen, Programmverwaltung.

IF-Operator testet die Bedingung in Klammern und führt den nachfolgenden Ausdruck oder Block in geschweiften Klammern aus, wenn die Bedingung wahr ist.

if (x == 5) // wenn x=5, dann wird z=0 ausgeführt
z=0;

if (x > 5) // if x >
( z=0; y=8; )

ANSONSTEN ermöglicht Ihnen die Auswahl zwischen zwei Optionen.

if (x > 5) // wenn x > 5, dann wird der Block ausgeführt z=0, y=8;
{
z=0;
y=8;
}

{
z=0;
y=0;
}

Sonst, wenn– ermöglicht Ihnen die Mehrfachauswahl

if (x > 5) // wenn x > 5, dann wird der Block ausgeführt z=0, y=8;
{
z=0;
y=8;
}

sonst wenn (x > 20) // wenn x > 20, wird dieser Block ausgeführt
{
}

else // andernfalls wird dieser Block ausgeführt
{
z=0;
y=0;
}

SCHALTERGEHÄUSE- Mehrfachauswahl. Ermöglicht Ihnen, eine Variable (im Beispiel x) mit mehreren Konstanten (im Beispiel 5 und 10) zu vergleichen und einen Block auszuführen, in dem die Variable gleich der Konstante ist.

Schalter (x) (

Fall 5:
// Code wird ausgeführt, wenn x = 5
brechen;

Fall 10:
// Code wird ausgeführt, wenn x = 10
brechen;

Standard:
// Code wird ausgeführt, wenn keiner der vorherigen Werte übereinstimmt
brechen;
}

FOR-Schleife. Das Design ermöglicht es Ihnen, Schleifen mit einer bestimmten Anzahl von Iterationen zu organisieren. Die Syntax sieht so aus:

for (Aktion vor Beginn der Schleife;
Schleifenfortsetzungsbedingung;
Aktion am Ende jeder Iteration) (

// Schleifenkörpercode

Ein Beispiel für eine Schleife mit 100 Iterationen.

für (i=0; i< 100; i++) // начальное значение 0, конечное 99, шаг 1

{
Summe = Summe + I;
}

While-Schleife. Mit dem Operator können Sie Schleifen mit der Konstruktion organisieren:

while (Ausdruck)
{
// Schleifenkörpercode
}

Die Schleife läuft so lange, wie der Ausdruck in Klammern wahr ist. Ein Beispiel für eine Schleife für 10 Iterationen.

x = 0;
while(x< 10)
{
// Schleifenkörpercode
x++;
}

TUN SIE WÄHREND– eine Schleife mit einer Bedingung am Ausgang.

Tun
{
// Schleifenkörpercode
) while (Ausdruck);

Die Schleife läuft so lange, wie der Ausdruck wahr ist.
BRECHEN– Schleifenausgangsoperator. Wird verwendet, um die Ausführung von for-, while- und do while-Schleifen zu unterbrechen.

x = 0;
while(x< 10)
{
if (z > 20) break; // wenn z > 20, dann Schleife verlassen
// Schleifenkörpercode
x++;
}

GEHE ZU– unbedingter Übergangsoperator.

gotometka1; // gehe zu metka1
………………
metka1:

WEITERMACHEN- Überspringen von Anweisungen bis zum Ende des Schleifenkörpers.

x = 0;
while(x< 10)
{
// Schleifenkörpercode
wenn (z > 20) fortfahren; // wenn z > 20, dann kehre zum Anfang des Schleifenkörpers zurück
// Schleifenkörpercode
x++;
}

Arrays.

Ein Array ist ein Speicherbereich, in dem mehrere Variablen nacheinander gespeichert werden.

Ein Array wird wie folgt deklariert:

int alter; // Array von 10 Typvariablen int

Schwimmergewicht // Array mit 100 Float-Variablen

Bei der Deklaration können Arrays initialisiert werden:

int ages = ( 23, 54, 34, 24, 45, 56, 23, 23, 27, 28);

Auf Array-Variablen wird wie folgt zugegriffen:

x = Alter; // x wird der Wert vom 5. Element des Arrays zugewiesen.
Alter = 32; // 9. Element des Arrays wird auf 32 gesetzt

Die Nummerierung der Array-Elemente beginnt immer bei Null.

Funktionen.

Mithilfe von Funktionen können Sie dieselben Aktionen mit unterschiedlichen Daten ausführen. Die Funktion hat:

  • der Name, mit dem sie genannt wird;
  • Argumente – Daten, die die Funktion zur Berechnung verwendet;
  • Der von der Funktion zurückgegebene Datentyp.

Beschreibt eine benutzerdefinierte Funktion außerhalb der Funktionen setup() und loop().

void setup() (
// Code wird einmal ausgeführt, wenn das Programm startet
}

void loop() (
// Hauptcode, in einer Schleife ausgeführt
}

// Deklaration einer benutzerdefinierten Funktion namens functionName
Typ Funktionsname(Typargument1, Typargument1, …, Typargument)
{
// Funktionskörper
zurückkehren();
}

Ein Beispiel für eine Funktion, die die Summe der Quadrate zweier Argumente berechnet.

int sumQwadr(int x, int y)
{
return(x* x + y*y);
}

Der Funktionsaufruf geht so:

d= 2; b= 3;
z= sumQwadr(d, b); // z ist die Summe der Quadrate der Variablen d und b

Funktionen können integriert, benutzerdefiniert oder Plug-in sein.

Sehr kurz, aber diese Daten sollten ausreichen, um mit dem Schreiben von C-Programmen für Arduino-Systeme zu beginnen.

Das Letzte, was ich Ihnen in dieser Lektion sagen möchte, ist, wie es üblich ist, Programme in C zu formatieren. Ich denke, wenn Sie diese Lektion zum ersten Mal lesen, sollten Sie diesen Abschnitt überspringen und später darauf zurückkommen, wenn Sie ihn gelesen haben etwas zum Formatieren.

Das Hauptziel der externen Gestaltung von Programmen besteht darin, die Lesbarkeit von Programmen zu verbessern und die Anzahl formaler Fehler zu reduzieren. Um dieses Ziel zu erreichen, können Sie daher getrost gegen alle Empfehlungen verstoßen.

Namen in C-Sprache.

Namen, die Datentypen darstellen, müssen in gemischter Groß- und Kleinschreibung geschrieben werden. Der erste Buchstabe des Namens muss großgeschrieben werden (Großbuchstaben).

Signal, TimeCount

Variablen müssen in gemischten Groß- und Kleinschreibung geschrieben werden, wobei der Anfangsbuchstabe kleingeschrieben (Kleinschreibung) sein muss.

Kategorie: . Sie können es mit einem Lesezeichen versehen.

Dieser Blog ist diesem Projekt gewidmet, und hier werde ich über die Neuigkeiten des Projekts und die Erfolge der Mitglieder der Programmbenutzergemeinschaft sprechen. Das Projekt widmet sich der Erstellung einer visuellen Programmierumgebung für Arduino-Boards, und bevor ich über das FLProg-Programm spreche, möchte ich dies tun Kurze Review vorhandene Programme zur Programmierung dieser Boards.

Programmierumgebungen für Arduino-Boards können in folgende Typen unterteilt werden:

  1. Verbesserte „Notizblöcke“
  2. Textentwicklungsumgebungen
  3. Grafische Umgebungen, die die Struktur des Codes visualisieren.
  4. Grafische Umgebungen, die Code als Grafiken anzeigen.
  5. Visuelle Programmierumgebungen, die keinen Code verwenden.
Schauen wir uns jeden Typ an.

Verbesserte „Notizblöcke“

Dieser Typ umfasst die ursprüngliche Arduino-IDE-Programmierumgebung sowie viele ihrer Klone.

Das Programm für die Steuerung ist in der Processing/Wiring-Sprache entworfen, einem Dialekt der C-Sprache (höchstwahrscheinlich C++). Bei dieser Umgebung handelt es sich im Wesentlichen um einen normalen Texteditor mit der Möglichkeit, geschriebenen Code in den Controller zu laden

Textentwicklungsumgebungen

Eine Alternative zur Arduino IDE ist die Entwicklungsumgebung des Mikrocontroller-Herstellers Atmel – AVRStudio.

Die Programmierung erfolgt in reinem C, außerdem verfügt es bereits über viel mehr Features und ähnelt eher seriösen IDEs für „echte“ Programmiersprachen.

Diese beiden Arten von Programmen sind für erfahrene Programmierer konzipiert, die die Sprache gut beherrschen und mit ihnen ernsthafte Projekte erstellen können.

Grafische Umgebungen, die die Struktur des Codes visualisieren.

Hierbei handelt es sich um Programme, bei denen es sich im Wesentlichen um Formatierungserweiterungen für reguläre Formate handelt Texteditor Code. Darin ist das Programm ebenfalls in C geschrieben, allerdings in einer komfortableren Version. Mittlerweile gibt es viele solcher Umgebungen, die auffälligsten Beispiele: Scratch, S4A, Ardublock. Sie eignen sich sehr gut für Einsteiger in die C-Programmierung, da sie die Struktur und Syntax der Sprache hervorragend veranschaulichen. Doch bei großen, seriösen Projekten erweist sich das Programm als umständlich.

Grafische Umgebungen, die Code als Grafiken anzeigen

Dabei handelt es sich um Programme, die den Code verbergen und durch grafische Analoga ersetzen. Sie wiederholen auch die Struktur der Sprache und bilden Zyklen, Übergänge und Bedingungen. Sie eignen sich auch sehr gut zum Erlernen des Aufbaus von Algorithmen mit anschließendem Übergang zur Programmierung in klassischen Sprachen. Und auch für den Bau großer Projekte sind sie aufgrund der Umständlichkeit der resultierenden Darstellung nicht geeignet. Ein Beispiel für ein solches Programm: MiniBlog, Algorithm Builder, Flowcode

Die oben beschriebenen Programmtypen richten sich an Programmierer oder diejenigen, die sich für ein Studium der klassischen Programmierung entscheiden. Aber um das endgültige Gerät herzustellen, ist neben der direkten Programmierung des Controllers in der Regel die Entwicklung der externen Schaltung der Platine, die Entwicklung und Berechnung des Leistungsteils, der Eingangsanschlüsse und vieles mehr erforderlich. Programmierer haben damit oft Probleme. Aber Elektriker und Elektroniker leisten hier hervorragende Arbeit. Aber unter ihnen gibt es nur wenige Programmierer, die ein Programm für die Steuerung schreiben könnten. Die Kombination aus Programmierer und Elektroniker ist ein eher seltener Fall. Aufgrund dieser Situation gibt es nur sehr wenige echte, abgeschlossene Projekte, die auf Arduino-Boards (und anderen Controllern) basieren. Die letztgenannte Art von Programmen wird zur Lösung dieses Problems verwendet.

Visuelle Programmierumgebungen, die keinen Code verwenden.

Diese Programme implementieren ein Prinzip, das seit vielen Jahren von fast allen Herstellern von Industriesteuerungen verwendet wird. Dabei handelt es sich um die Erstellung von Programmen für die Steuerung in den Sprachen FUP oder KOP. Streng genommen handelt es sich dabei nicht um Sprachen als solche. Dabei handelt es sich vielmehr um grafische Umgebungen zum Zeichnen von Schaltkreis- oder Logikdiagrammen. Erinnern wir uns daran, dass Prozessoren nicht immer Mikroprozessoren waren, sondern auf der Basis digitaler Chips entstanden. Daher wird es denjenigen, die es gewohnt sind, mit digitalen Technologien zu arbeiten, mehr Spaß machen, als Code in klassischen Programmiersprachen zu schreiben. Beispiele für solche Programme sind die Projekte Horizont und FLProg. Programme dieser Art eignen sich sowohl für das Studium des Aufbaus der Impuls- und Relaistechnik als auch für die Erstellung seriöser Projekte.


Und schließlich der Held dieses Blogs, das FLProg-Projekt.

Da ich seit vielen Jahren als Entwickler von Prozessleitsystemen arbeite, habe ich versucht, im FLProg-Programm alles zu sammeln, was mir in Umgebungen führender Hersteller von Industrieanlagen (Tia-Portal, Zelio Soft, Logo Soft Comfort) am besten gefallen hat.
Mit dem Programm können Sie Diagramme in zwei Arten erstellen: Funktionsdiagramme (FUP) und Relaisdiagramme (KOP).

FBD (Function Block Diagram) ist eine grafische Programmiersprache gemäß der Norm IEC 61131-3. Das Programm besteht aus einer Liste von Schaltkreisen, die nacheinander von oben nach unten ausgeführt werden. Beim Programmieren werden Sätze von Bibliotheksbausteinen verwendet. Ein Block (Element) ist ein Unterprogramm, eine Funktion oder Funktionsblock(UND, ODER, NICHT, Trigger, Timer, Zähler, analoge Signalverarbeitungseinheiten, mathematische Operationen usw.). Jeder einzelne Schaltkreis ist ein Ausdruck, der grafisch aus einzelnen Elementen zusammengesetzt ist. Der nächste Block wird mit dem Ausgang des Blocks verbunden und bildet einen Schaltkreis. Innerhalb einer Kette werden Blöcke streng in der Reihenfolge ausgeführt, in der sie verbunden sind. Das Ergebnis der Schaltungsberechnung wird in eine interne Variable geschrieben oder an den Reglerausgang ausgegeben.



Das Kontaktplandiagramm (LD, LAD, RKS) ist die Sprache der Relaislogik (Kontaktplan). Die Syntax der Sprache eignet sich zum Ersetzen logischer Schaltkreise, die mithilfe der Relaistechnologie erstellt wurden. Die Sprache richtet sich an Automatisierungsspezialisten, die in Industrieunternehmen arbeiten. Bietet eine visuelle Schnittstelle zur Betriebslogik des Controllers und erleichtert nicht nur die Programmierung und Inbetriebnahme selbst, sondern auch die schnelle Fehlerbehebung der an den Controller angeschlossenen Geräte. Das Programm in der Relaislogiksprache verfügt über eine grafische Benutzeroberfläche, die für Elektroingenieure visuell und intuitiv ist und logische Operationen als Stromkreis mit geschlossenen und offenen Kontakten darstellt. Das Fließen oder Fehlen von Strom in diesem Stromkreis entspricht dem Ergebnis einer logischen Operation (wahr – wenn der Strom fließt; falsch – wenn der Strom nicht fließt). Die Hauptelemente der Sprache sind Kontakte, die im übertragenen Sinne mit einem Paar Relais- oder Knopfkontakten verglichen werden können. Ein Kontaktpaar wird mit einer logischen Variablen identifiziert, und der Zustand dieses Paares wird mit dem Wert der Variablen identifiziert. Es gibt normalerweise geschlossene und normalerweise offene Kontaktelemente, die mit normalerweise geschlossenen und normalerweise offenen Tasten in Stromkreisen verglichen werden können.

Diese Programmiermethode erwies sich für Elektro- und Elektronikingenieure als sehr praktisch, um problemlos in die Entwicklung automatisierter Steuerungssysteme einzusteigen. Bei der Entwicklung von Geräteprojekten können sie den Betrieb dieser Anlagen problemlos mit den Betriebsalgorithmen der Steuerung verknüpfen.

Das auf diesen Darstellungen basierende FLProg-Programm funktioniert mit Arduino. Warum?
Das Board eignet sich sehr gut zum schnellen Entwickeln und Debuggen Ihrer Geräte, was nicht nur für Funkamateure wichtig ist, sondern beispielsweise in Schulclubs und Hochschullaboren sehr nützlich ist. Ein Vorteil ist, dass Sie keinen Programmierer benötigen. Sie schließen das Arduino-Board an Ihren Computer an und laden das fertige Programm aus der Entwicklungsumgebung herunter. Derzeit gibt es eine große Auswahl an Arduino-Modulen, Zusatzmodulen, die mit Arduino arbeiten, Sensoren und Ausführungsgeräten.

Derzeit unterstützt das Programm die folgenden Versionen von Arduino: Arduino Diecimila, Arduino Duemilanove, Arduino Leonardo, Arduino Lilypad, Arduino Mega 2560, Arduino Micro, Arduino Mini, Arduino Nano (ATmega168), Arduino Nano (ATmega328), Arduino Pro Mini, Arduino Pro (ATmega168), Arduino Pro (ATmega328), Arduino UNO. Darüber hinaus tauchte kürzlich das Intel Galileo gen2 Board in der Liste der unterstützten Controller auf. Zukünftig ist geplant, diese Liste zu erweitern und möglicherweise Karten hinzuzufügen, die auf STM-Controllern basieren.

Ein Projekt im FLProg-Programm ist ein Satz Originalplatinen, auf denen jeweils ein komplettes Modul montiert ist allgemeines Schema. Zur Vereinfachung der Verwendung verfügt jedes Board über einen Namen und Kommentare. Außerdem lässt sich jedes Brett zusammenklappen (um nach Abschluss der Arbeiten Platz im Arbeitsbereich zu sparen) und wieder aufklappen.

Die aktuelle Zusammensetzung der Elementbibliothek für die FBD-Sprache.

Dekor

  • Inschrift
  • Bild
Grundelemente
  • Zustandstabelle
Spezielle Blöcke
Löst aus
Timer
Zähler
Mathematik
Algebra
Vergleich
UART
  • An UART senden
  • Von UART empfangen
  • Senden einer Variablen an den UART
  • Empfangen einer Variablen von UART
Schalten
Motoren
  • Servomotor
  • Schrittmotor
Echtzeituhr
Zeigt an
  • Anzeige auf HD44780-Chip
  • Display-Hintergrundbeleuchtung auf HD44780 I2C-Chip
Saiten
  • String-Addition
  • String-Vergleich
  • Linienlänge
  • Suchen Sie nach einer Teilzeichenfolge
  • Einen Teilstring abrufen
  • Holen Sie sich ein Zeichen aus einer Zeichenfolge
  • Char an String anhängen
Arrays
  • Schreiben eines Elements in ein Array
  • Ein Array-Element abrufen
  • Summe der Array-Elemente
  • Suchen eines Elements in einem Array
Sensoren
SD-Karte
  • Hochladen einer Datei von einer SD-Karte
  • Schreiben einer Variablen auf eine SD-Karte
Typkonvertierung
  • String-Konvertierung
  • -> Byte
  • -> Char
Erweiterungschips
  • Klemmenerweiterung 74HC595
  • MAX7219 LED-Treiber
Bitoperationen
  • Decoder
  • Encoder
  • Bit lesen
  • Ein bisschen aufnehmen
Verschiedenes
  • Matrixtastatur
  • Piezo-Lautsprecher
  • OneWare-Busscan
EEPROM
  • Schreiben Sie ins EEPROM
  • Auslesen aus dem EEPROM
Kommunikation
  • ResiveVariableFromCommunication
  • WebServerPage
  • SendVariableFromCommunication
  • WebClient
Fertige Dienstleistungen
  • narodmon.ru
  • goplusplatform.com

Die aktuelle Zusammensetzung der Elementbibliothek für die KOP-Sprache.

Dekor

  • Inschrift
  • Bild
Grundblöcke
  • Kontakt
  • Spule
  • Anti-Bounce
  • Auswahl der Vorderkante
  • Zustandstabelle
Spezielle Relais
  • Bistabiles Relais
  • Zeitrelais
  • Generator
  • Vergleichsrelais
Algebra
  • ZUFÄLLIG
Analoge Blöcke
  • Skalierung
  • Mathematik
  • Schalter
  • Analoger Schalter
  • Viele-zu-eins-Schalter
  • Eins-zu-viele-Schalter
  • Analoger Controller-Eingang
  • Analoger Controller-Ausgang
  • Analoger Anschlusseingang
  • Analoger Anschlussausgang
  • Geschwindigkeitsmesser
UART
  • An UART senden
  • Von UART empfangen
  • Senden einer Variablen an den UART
  • Empfangen einer Variablen von UART
Motoren
  • Servomotor
  • Schrittmotor
Echtzeituhr
  • Um Daten zu erhalten
  • Alarm
  • Uhrzeit einstellen
Zeigt an
  • Anzeige auf Chip HD44780
  • Steuereinheit für die Hintergrundbeleuchtung des Displays auf dem I2C-Chip HD4480
  • Dekodierblock für Sieben-Segment-Anzeiger
Saiten
  • String-Addition
  • String-Vergleich
  • Linienlänge
  • Suchen Sie nach einer Teilzeichenfolge
  • Einen Teilstring abrufen
  • Holen Sie sich ein Zeichen aus einer Zeichenfolge
  • Char an String anhängen
Arrays
  • Schreiben eines Elements in ein Array
  • Ein Array-Element abrufen
  • Summe der Array-Elemente
  • Suchen eines Elements in einem Array
Sensoren
  • Ultraschall-Entfernungsmesser HC-SR04
  • Temperatur- und Feuchtigkeitssensor DHT11 (DHT21, DHT22)
  • Temperatursensor DS18x2x
  • IR-Responsive
  • BMP-085
  • BH1750 Lichtmesser
SD-Karte
  • Schreiben einer Variablen auf eine SD-Karte
  • Hochladen einer Datei von einer SD-Karte
Typkonvertierung
  • String-Konvertierung
  • Konvertieren Sie Float in Integer
  • -> Byte
  • -> Char
Erweiterungschips
  • Klemmenerweiterung 74HC595
  • MAX7219 LED-Treiber
Bitoperationen
  • Encoder
  • Decoder
  • Bit lesen
  • Ein bisschen aufnehmen
Verschiedenes
  • Matrixtastatur
  • Piezo-Lautsprecher
  • OneWare-Busscan
EEPROM
  • Schreiben Sie ins EEPROM
  • Auslesen aus dem EEPROM
Kommunikation
  • Baustein zum Senden einer Variablen per Kommunikation
  • Empfangen einer Variablen über Kommunikation
  • Website Server
  • Web-Client
Fertige Dienstleistungen
  • Übermittlung von Daten an narodmon.ru
  • Fernbedienung über RemoteXY

Ich werde Ihnen in den folgenden Beiträgen mehr über das Projekt erzählen und schließlich ein kurzes Video, das die Funktionsprinzipien des Programms und die Möglichkeit zeigt, das Board über eine Anwendung auf einem Smartphone zu steuern.

Sie können helfen und etwas Geld für die Entwicklung der Website überweisen

Guten Tag! Ich bin Alikin Alexander Sergeevich, Lehrer für Zusatzausbildung. Ich leite die Clubs „Robotik“ und „Funktechnik“ im Zentrum für Jugend und Jugendtechnologie in Labinsk. Ich möchte ein wenig über eine vereinfachte Methode zur Programmierung von Arduino mit dem ArduBlock-Programm sprechen.

Ich habe dieses Programm in den Bildungsprozess eingeführt und bin mit dem Ergebnis sehr zufrieden; es ist bei Kindern sehr gefragt, insbesondere wenn es darum geht, einfache Programme zu schreiben oder solche zu erstellen Erstphase komplexe Programme. ArduBlock ist eine grafische Programmierumgebung, d. h. alle Aktionen werden mit gezeichneten Bildern mit signierten Aktionen auf Russisch ausgeführt, was das Erlernen der Arduino-Plattform erheblich vereinfacht. Dank dieses Programms können Kinder ab der 2. Klasse den Umgang mit Arduino problemlos erlernen.

Ja, jemand könnte sagen, dass Scratch immer noch existiert und es auch eine sehr einfache grafische Umgebung für die Arduino-Programmierung ist. Aber Scratch flasht den Arduino nicht, sondern steuert ihn nur mit USB-Kabel. Arduino ist computerabhängig und kann nicht autonom arbeiten. Beim Erstellen eigener Projekte steht für Arduino die Autonomie im Vordergrund, insbesondere beim Erstellen von Robotergeräten.

Selbst bekannte LEGO-Roboter wie NXT oder EV3 sind für unsere Schüler mit dem Aufkommen des ArduBlock-Programms in der Arduino-Programmierung nicht mehr so ​​interessant. Arduino ist außerdem viel günstiger als alle LEGO-Bausätze und viele Komponenten können einfach aus alter Haushaltselektronik übernommen werden. Das ArduBlock-Programm hilft nicht nur Anfängern, sondern auch aktiven Benutzern der Arduino-Plattform.

Was ist also ArduBlock? Wie ich bereits sagte, handelt es sich hierbei um eine grafische Programmierumgebung. Fast vollständig ins Russische übersetzt. Aber das Highlight von ArduBlock ist nicht nur das, sondern auch die Tatsache, dass das von uns geschriebene ArduBlock-Programm in Arduino-IDE-Code konvertiert werden kann. Dieses Programm ist in die Arduino IDE-Programmierumgebung integriert, d. h. es ist ein Plugin.

Unten sehen Sie ein Beispiel einer blinkenden LED und eines konvertierten Programms in der Arduino IDE. Die gesamte Arbeit mit dem Programm ist sehr einfach und jeder Schüler kann es verstehen.

Durch die Arbeit mit dem Programm können Sie nicht nur Arduino programmieren, sondern auch Befehle lernen, die wir nicht verstehen Textformat Arduino IDE, aber wenn Sie zu faul sind, Standardbefehle zu schreiben, können Sie schnell mit der Maus ein einfaches Programm in ArduBlok skizzieren und es in der Arduino IDE debuggen.

Um ArduBlok zu installieren, müssen Sie zunächst die Arduino IDE von der offiziellen Arduino-Website herunterladen und installieren und die Einstellungen beim Arbeiten damit verstehen Arduino-Board UNO. Wie das geht, ist auf derselben Website oder auf Amperka beschrieben, oder schauen Sie es sich auf YouTube an. Wenn das alles geklärt ist, müssen Sie ArduBlok hier von der offiziellen Website herunterladen. Ich empfehle nicht, die neuesten Versionen herunterzuladen, sie sind für Anfänger sehr kompliziert, aber die Version vom 12.07.2013 ist die beste, diese Datei ist dort am beliebtesten.

Benennen Sie dann die heruntergeladene Datei in „ardublock-all“ um und legen Sie sie im Ordner „Dokumente“ ab. Wir erstellen die folgenden Ordner: Arduino > Tools > ArduBlockTool > Tool und legen in letzterem die heruntergeladene und umbenannte Datei ab. ArduBlok funktioniert auf allen Betriebssystemen, sogar unter Linux, ich habe es persönlich auf XP, Win7, Win8 getestet, alle Beispiele beziehen sich auf Win7. Die Installation des Programms ist für alle Systeme gleich.

Nun, um es einfach auszudrücken: Ich habe ein Archiv auf der 7z Mail-Festplatte vorbereitet und beim Entpacken finden Sie zwei Ordner. In einem schon Arbeitsprogramm Arduino IDE, und in einem anderen Ordner muss der Inhalt an den Dokumentenordner gesendet werden.

Um in ArduBlok arbeiten zu können, müssen Sie die Arduino IDE ausführen. Dann gehen wir zur Registerkarte „Extras“ und finden dort das ArduBlok-Element, klicken darauf – und hier ist es, unser Ziel.

Schauen wir uns nun die Programmoberfläche an. Wie Sie bereits verstehen, gibt es darin keine Einstellungen, aber es gibt viele Symbole zum Programmieren und jedes von ihnen enthält einen Befehl im Arduino IDE-Textformat. Neue Versionen verfügen über noch mehr Symbole, daher ist es schwierig, die neueste Version von ArduBlok zu verstehen, und einige der Symbole sind nicht ins Russische übersetzt.

Im Bereich „Management“ finden wir verschiedene Zyklen.

Im Abschnitt „Anschlüsse“ können wir die Werte der Anschlüsse sowie des daran angeschlossenen Schallsenders, Servos oder Ultraschall-Näherungssensors verwalten.

Im Abschnitt „Zahlen/Konstanten“ können wir digitale Werte auswählen oder eine Variable erstellen, aber Sie werden wahrscheinlich nicht das Folgende verwenden.

Im Abschnitt „Operatoren“ finden wir alle notwendigen Vergleichs- und Berechnungsoperatoren.

Im Abschnitt „Dienstprogramme“ werden hauptsächlich zeitgesteuerte Symbole verwendet.

„TinkerKit Bloks“ ist der Abschnitt für gekaufte TinkerKit-Sensoren. Wir haben natürlich kein solches Set, aber das bedeutet nicht, dass die Icons nicht für andere Sets geeignet sind, im Gegenteil, es ist für die Jungs sehr praktisch, Icons wie das Einschalten einer LED oder eines zu verwenden Taste. Diese Zeichen werden in fast allen Programmen verwendet. Sie haben jedoch eine Besonderheit: Wenn Sie sie auswählen, werden falsche Portsymbole angezeigt. Sie müssen sie daher entfernen und das Symbol aus dem Abschnitt „Zahlen/Konstanten“ oben in der Liste ersetzen.

„DF Robot“ – dieser Abschnitt wird verwendet, wenn die darin angegebenen Sensoren vorhanden sind, sie werden manchmal gefunden. Und unser heutiges Beispiel ist keine Ausnahme, wir haben einen „einstellbaren IR-Schalter“ und einen „Zeilensensor“. Der „Zeilensensor“ unterscheidet sich von dem auf dem Bild, da er von der Firma Amperka stammt. Ihre Wirkungsweise ist identisch, der Ampere-Sensor ist jedoch viel besser, da er über einen Empfindlichkeitsregler verfügt.

„Seedstudio Grove“ – Ich habe die Sensoren in diesem Abschnitt nie verwendet, obwohl es nur Joysticks gibt. In neuen Versionen wurde dieser Abschnitt erweitert.

Und der letzte Abschnitt ist das „Linker Kit“. Auf die darin vorgestellten Sensoren bin ich nicht gestoßen.

Ich möchte ein Beispiel für ein Programm auf einem Roboter zeigen, der sich entlang eines Streifens bewegt. Der Roboter ist sehr einfach zusammenzubauen und zu kaufen, aber das Wichtigste zuerst. Beginnen wir mit der Anschaffung und Montage.

Hier ist der Teilesatz selbst, alles wurde auf der Amperka-Website gekauft.

  1. AMP-B001 Motorschutz (2 Kanäle, 2 A) 1.890 RUB
  2. AMP-B017 Troyka-Schild 1.690 RUB
  3. AMP-X053 Batteriefach 3×2 AA 1 60 RUR
  4. AMP-B018 Digitaler Liniensensor 2.580 RUB
  5. ROB0049 MiniQ zweirädrige Plattform RUB 1.1890
  6. SEN0019 Infrarot-Hindernissensor 1.390 RUB
  7. FIT0032 Halterung für Infrarot-Hindernissensor RUB 1,90
  8. A000066 Arduino Uno 1 1150 RUR

Zuerst bauen wir die Radplattform zusammen und löten die Drähte an die Motoren.

Anschließend werden wir Racks zur Montage des Arduino UNO-Boards installieren, die von einem alten Motherboard oder ähnlichen Halterungen übernommen wurden.

Dann befestigen wir das Arduino UNO-Board an diesen Racks, aber wir können keine einzige Schraube festziehen – die Anschlüsse sind im Weg. Sie können sie natürlich auslöten, dies liegt jedoch in Ihrem Ermessen.

Als nächstes befestigen wir den Infrarot-Hindernissensor an seiner speziellen Halterung. Bitte beachten Sie, dass sich der Empfindlichkeitsregler oben befindet, um die Einstellung zu erleichtern.

Jetzt installieren wir digitale Zeilensensoren, hier müssen Sie ein paar Schrauben und 4 Muttern dafür suchen. Wir installieren zwei Muttern zwischen der Plattform selbst und dem Zeilensensor und befestigen die Sensoren mit dem Rest.

Als nächstes installieren wir Motor Shield, oder anders kann man es auch Motortreiber nennen. Achten Sie in unserem Fall auf den Jumper. Wir werden keine separate Stromversorgung für die Motoren verwenden, daher wird diese an dieser Position installiert. Der untere Teil ist mit Isolierband abgedichtet, so dass es für alle Fälle nicht zu versehentlichen Kurzschlüssen durch den Arduino UNO USB-Anschluss kommt.

Wir installieren Troyka Shield oben auf dem Motor Shield. Dies ist für den bequemen Anschluss von Sensoren erforderlich. Alle von uns verwendeten Sensoren sind digital, daher werden die Liniensensoren an den Ports 8 und 9, wie sie auch Pins genannt werden, angeschlossen, und der Infrarot-Hindernissensor wird an Port 12 angeschlossen. Beachten Sie unbedingt, dass Sie die Ports 4, 5, 6, 7 nicht verwenden können, da sie von Motor Shield zur Steuerung von Motoren verwendet werden. Ich habe diese Anschlüsse sogar extra mit einem roten Marker übermalt, damit die Schüler es herausfinden konnten.

Wenn Sie es bereits bemerkt haben, habe ich für alle Fälle eine schwarze Buchse hinzugefügt, damit das von uns installierte Batteriefach nicht herausfliegt. Und zum Schluss sichern wir die gesamte Struktur mit einem normalen Gummiband.

Es gibt 2 Arten von Batteriefachanschlüssen. Erster Anschluss von Drähten an Troyka Shield. Es besteht auch die Möglichkeit, den Netzstecker anzulöten und mit der Arduino UNO-Platine selbst zu verbinden.

Unser Roboter ist bereit. Bevor Sie mit dem Programmieren beginnen, müssen Sie lernen, wie alles funktioniert, nämlich:
- Motoren:
Die Anschlüsse 4 und 5 werden zur Steuerung eines Motors verwendet, die Anschlüsse 6 und 7 für den anderen;
Die Drehzahl der Motoren regeln wir per PWM an den Ports 5 und 6;
Vorwärts oder rückwärts durch Senden von Signalen an die Ports 4 und 7.
- Sensoren:
Wir sind alle digital, daher geben sie logische Signale in Form von 1 oder 0;
Und um sie einzustellen, verfügen sie über spezielle Regler und können mit Hilfe eines geeigneten Schraubendrehers kalibriert werden.

Einzelheiten finden Sie bei Amperke. Warum hier? Denn es gibt viele Informationen zum Arbeiten mit Arduino.

Nun, wir haben uns wahrscheinlich alles oberflächlich angesehen, es studiert und natürlich den Roboter zusammengebaut. Jetzt muss es programmiert werden, hier ist es – das lang erwartete Programm!

Und das Programm wurde in die Arduino IDE konvertiert:

Void setup() ( pinMode(8 , INPUT); pinMode(12 , INPUT); pinMode(9 , INPUT); pinMode(4 , OUTPUT); pinMode(7 , OUTPUT); pinMode(5, OUTPUT); pinMode(6 , OUTPUT); ) 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); ) )

Abschließend möchte ich sagen, dass dieses Programm einfach ein Geschenk des Himmels für die Bildung ist; sogar für das Selbststudium wird es Ihnen helfen, Arduino IDE-Befehle zu erlernen. Das größte Highlight ist, dass es bei mehr als 50 Installationssymbolen zu „Störungen“ kommt. Ja, das ist in der Tat das Highlight, denn wenn man die ganze Zeit nur auf ArduBlok programmiert, lernt man nicht, in der Arduino IDE zu programmieren. Der sogenannte „Glitch“ gibt Ihnen die Möglichkeit, über Befehle für ein präzises Debuggen von Programmen nachzudenken und sich diese zu merken.

Ich wünsche Ihnen Erfolg.

Sergej Gluschenko

Derzeit hat weltweit ein Boom beim Einsatz von Mikrocontrollern in verschiedenen hausgemachten Produkten und Startups begonnen. Zwar sind die Preise für Mikrocontroller gesunken, doch ihre Leistungsfähigkeit wächst stetig. Und unsere Freunde, die Chinesen, haben gelernt, Peripheriegeräte für sie herzustellen, und sie verkaufen sie auch zu lächerlichen Preisen. Aber bei der Programmierung von Mikrocontrollern ist nicht alles so rosig ...

Wie alles begann und wie es sich entwickelte

Seit dem Aufkommen von Mikroprozessoren erfolgt die Entwicklung von Prinzipien für den Umgang mit ihnen auf dem Weg der zunehmenden Abstraktion. Die erste Stufe repräsentierte die Programmierung direkt in Maschinencodes. Die Programmierung war komplex, zeitaufwändig und erforderte eine sehr spezifische Denkweise. Daher gab es nur sehr wenige Programmierer.

Aber der Mensch ist ein faules Wesen, und Faulheit ist bekanntlich der Motor des Fortschritts. Wir haben die erste Abstraktionsebene entwickelt – Assembler. Das Schreiben von Programmen ist einfacher und macht mehr Spaß. Die Zahl der Programmierer ist gestiegen. Dennoch unterschied sich Assembler nicht sehr vom Maschinencode.

Daher erschien die nächste Abstraktionsebene. Hochsprachen. Der Hauptzweck dieser Sprachen war die Fähigkeit, der Maschine zu erklären, was sie von ihr wollte, und zwar in einer Sprache, die der menschlichen möglichst nahe kommt. Dies ermöglichte es Menschen mit einer weniger spezifischen Denkweise, sich mit dem Programmieren zu beschäftigen. Daher wuchs mit der Entwicklung von Hochsprachen die Zahl der Programmierer und die Zahl der Programmierer nützliche Programme die sie geschaffen haben.

Wie läuft es jetzt?

Um direkt mit der Steuerung arbeiten zu können, sind natürlich einige Vorbereitungen erforderlich. Das heißt, Sie benötigen einen Programmierer, eine angepasste Umgebung zum Programmieren auf einem Computer und natürlich Kenntnisse einer Programmiersprache. Darüber hinaus entwickeln sich Fähigkeiten im Umgang mit einem Lötkolben Leiterplatten, Kenntnisse in Elektrotechnik und Elektronik. Daher bleibt die Hürde für den Einstieg in die Entwicklung eigener Geräte auf Mikrocontrollern hoch.

Darüber hinaus erfordert diese Art von Arbeit eine Kombination von Fähigkeiten, die selten zusammen zu finden sind. Programmierer sind selten mit einem Lötkolben befreundet, und Elektronikingenieure sind selten Programmierer. Für Programmierer wurde das Problem durch die Entwicklung eines Arduino-Boards gelöst, mit dem Sie Geräte ohne Werkzeug zusammenbauen können.

Für Elektroniker und Elektriker wird es immer schlimmer. Um ein eigenes Gerät mithilfe eines Mikrocontrollers zu erstellen, gab es bis vor Kurzem zwei Möglichkeiten. Erlernen Sie die Programmiersprache C entweder selbst oder bitten Sie einen Programmierer um Hilfe. Beide Wege sind nicht die besten. Um Programmierer zu werden, braucht man eine bestimmte Denkweise, die nicht immer mit Leseerfahrung vereinbar ist elektrische Diagramme. Und ein Programmierer, den Sie kennen, ist möglicherweise nicht zur Hand.

Gleichzeitig gibt es seit langem Programmierumgebungen, die für den durchschnittlichen Elektronikingenieur oder einfach nur einen Elektriker geeignet sind. Ich meine Programmierumgebungen für Industriesteuerungen. SPS. Sie ermöglichen es Ihnen, etwas zu erschaffen Software für Controller in Sprachen FBD Und JUNGE. Streng genommen handelt es sich dabei nicht um Sprachen als solche. Dabei handelt es sich vielmehr um grafische Umgebungen zum Zeichnen von Schaltkreis- oder Logikdiagrammen.

FBD (Funktionsblockdiagramm)

- grafischer Programmiersprachenstandard IEC 61131-3. Das Programm besteht aus einer Liste von Schaltkreisen, die nacheinander von oben nach unten ausgeführt werden. Beim Programmieren werden Sätze von Bibliotheksbausteinen verwendet. Ein Block (Element) ist ein Unterprogramm, eine Funktion oder ein Funktionsblock (AND, OR, NOT, Trigger, Timer, Zähler, analoge Signalverarbeitungsblöcke, mathematische Operationen usw.). Jeder einzelne Schaltkreis ist ein Ausdruck, der grafisch aus einzelnen Elementen zusammengesetzt ist. Der nächste Block wird mit dem Ausgang des Blocks verbunden und bildet einen Schaltkreis. Innerhalb einer Kette werden Blöcke streng in der Reihenfolge ausgeführt, in der sie verbunden sind. Das Ergebnis der Schaltungsberechnung wird in eine interne Variable geschrieben oder an den Reglerausgang ausgegeben.

Kontaktplan (LD, KOP, RKS)


- Sprache der Relais-(Leiter-)Logik. Die Syntax der Sprache eignet sich zum Ersetzen logischer Schaltkreise, die mithilfe der Relaistechnologie erstellt wurden. Die Sprache richtet sich an Automatisierungsingenieure, die in Industrieanlagen arbeiten. Bietet eine visuelle Schnittstelle zur Betriebslogik des Controllers und erleichtert nicht nur die Programmierung und Inbetriebnahme selbst, sondern auch die schnelle Fehlerbehebung der an den Controller angeschlossenen Geräte. Das Programm in der Relaislogiksprache verfügt über eine grafische Benutzeroberfläche, die für Elektroingenieure visuell und intuitiv ist und logische Operationen als Stromkreis mit geschlossenen und offenen Kontakten darstellt. Das Fließen oder Fehlen von Strom in diesem Stromkreis entspricht dem Ergebnis einer logischen Operation (wahr – wenn der Strom fließt; falsch – wenn der Strom nicht fließt). Die Hauptelemente der Sprache sind Kontakte, die im übertragenen Sinne mit einem Paar Relais- oder Knopfkontakten verglichen werden können. Ein Kontaktpaar wird mit einer logischen Variablen identifiziert, und der Zustand dieses Paares wird mit dem Wert der Variablen identifiziert. Es gibt normalerweise geschlossene und normalerweise offene Kontaktelemente, die mit normalerweise geschlossenen und normalerweise offenen Tasten in Stromkreisen verglichen werden können.

Dieser Ansatz erwies sich für Elektro- und Elektronikingenieure als sehr praktisch, um problemlos in die Entwicklung automatisierter Steuerungssysteme einzusteigen. Bei der Entwicklung von Installationsprojekten könnten sie den Betrieb dieser Installationen problemlos mit den Betriebsalgorithmen der Steuerung verknüpfen. Auch für die Wartung dieser Anlagen vor Ort ist es besser, wenn das vorhandene Wartungspersonal die Funktion des automatisierten Steuerungssystems leicht überprüfen und das Problem finden kann. Und gleichzeitig muss nicht für jede Kleinigkeit ein Programmierer aus dem „Center“ gerufen werden. Und dieser Ansatz hat sich ausgezahlt. Heutzutage werden fast alle industriellen Automatisierungssysteme mit solchen Entwicklungstools erstellt.

Siemens, ABB, Schneider Electric... und fast alle SPS-Hersteller verfügen über eine solche Entwicklungsumgebung. Es scheint eine ideale Lösung für Heimwerker zu sein. Aber wie immer gibt es ein „Aber“. Alle diese Programmierumgebungen sind an Industriesteuerungen eines bestimmten Herstellers gebunden. Und die Preise für diese Controller sind nicht sehr inspirierend. Es ist sehr selten, dass Sie mit jedem Familienbudget einen Controller kaufen können, der mehrere Zehntausend Rubel kostet.

Aber Arduino-Boards sind ideal für Heimwerker und Bastler, an denen unser Land schon immer reich war, ist und sein wird. Aber, noch einmal „aber“. Diese Boards sind in der Sprache C programmiert. Für die meisten dieser klügsten Menschen mit sehr geraden Armen, die an der richtigen Stelle wachsen, ist die Sprache C das chinesische Alphabet. Sie können die komplexesten Schaltkreise erfinden, zeichnen, zusammenbauen, debuggen und ausführen, aber If, For, Case, Void usw. - Das ist nichts für sie. Natürlich können Sie die Anleitung im Internet lesen, eine Weile herumspielen und anhand eines Beispiels die LED blinken lassen. Für eine ernsthaftere Anwendung ist jedoch ein detailliertes Studium der Sprache erforderlich. Warum brauchen sie das?

Das werden sie nicht sein professionelle Programmierer. Sie haben einen anderen Weg. Sie haben sich etwas ausgedacht. Ja, es ist einfacher und schöner, es mit einem Mikrocontroller zusammenzubauen, aber wird man dafür zum Programmierer, nachdem man Monate damit verbracht hat, die Sprache zu lernen? Nein, natürlich. Sie sammeln es auf die altmodische Art, natürlich einfacher, aber in ihrem eigenen Bereich.

Basierend auf all diesen Berechnungen wurde das FLProg-Projekt erstellt. Die Hauptidee des Projekts besteht darin, die Prinzipien der industriellen Programmierung mit den geringen Kosten und dem Komfort von Arduino zu kombinieren. Das Projekt bietet eine neue Ebene der Abstraktion mit einer eher kühnen Aussage:

Um Mikrocontroller zu programmieren, müssen Sie keine Programmiersprachen beherrschen!

Das Ergebnis ist ein Tool, mit dem jeder, der sich mit Elektrotechnik und Elektronik auskennt, eigene Projekte auf Arduino erstellen und mit diesen Platinen sein eigenes Produkt erstellen kann.

Das Projekt besteht aus zwei Teilen.

Der erste Teil ist die Desktop-Anwendung FLProg, eine grafische Programmierumgebung für Arduino-Boards.

Beim Erstellen eines neuen Projekts werden Sie aufgefordert, die Programmiersprache auszuwählen, in der Sie das Projekt erstellen möchten, sowie die Steuerung, auf der dieses Projekt implementiert werden soll.

Hier ist eine Liste der Arduino-Boards, die heute vom Programm unterstützt werden:

Arduino Diecimila
Arduino Duemilanove
Arduino Leonardo
Arduino Lilypad
Arduino Mega 2560
Arduino Mikro
Arduino Mini
Arduino Nano (ATmega168)
Arduino Nano (ATmega328)
Arduino Pro Mini
Arduino Pro (ATmega168)
Arduino Pro (ATmega328)
Arduino Uno

Ein neues Mitglied der Familie der unterstützten Boards wird in Kürze erwartet. Arduino Due ist bereits auf dem Weg und das Intel Galileo (Gen.2)-Board wurde vom Leiter des Internet-of-Things-Labors an der St. Petersburg State University of Telecommunications versprochen. Prof. M.A. Bonch-Bruevich. Mit fortschreitender Akquisition ist geplant, mit der Zeit auch Boards zu unterstützen, die auf STM-Controllern basieren.

Ein Projekt in FLProg besteht aus einer Reihe von Platinen, auf denen jeweils ein komplettes Modul der allgemeinen Schaltung montiert ist. Zur Vereinfachung der Verwendung verfügt jedes Board über einen Namen und Kommentare. Jedes Brett lässt sich auch zusammenklappen (um nach Abschluss der Arbeiten Platz im Arbeitsbereich zu sparen) und aufklappen. Ein roter Indikator im Board-Namen weist darauf hin, dass im Board-Diagramm Fehler vorliegen.

Auf der rechten Seite des Arbeitsbereichs befindet sich eine Elementbibliothek. Durch einfaches Ziehen und Ablegen werden Elemente in das Diagramm übertragen. Wenn Sie auf ein Element doppelklicken, werden Informationen darüber angezeigt.

Hier ist eine Liste der heute verfügbaren Blöcke.

Grundelemente



Spezielle Blöcke

Löst aus



Timer


Zähler


Mathematik



Algebra




Vergleich

Com-Port

Schicken
SendVariable
Empfangsvariable

Schalten


Motoren

Servomotor
Schrittmotor

Echtzeituhr


Zeigt an

Anzeige auf HD44780-Chip
Display-Hintergrundbeleuchtung auf HD44780 I2C-Chip

Saiten

String-Addition

Sensoren



SD-Karte

Schreiben einer Variablen auf eine SD-Karte
Hochladen einer Datei von einer SD-Karte

Typkonvertierung

String-Konvertierung

Erweiterungschips

Klemmenerweiterung 74HC595

Bitoperationen

Encoder
Decoder
Bit lesen
Ein bisschen aufnehmen

Verschiedenes

Matrixtastatur
Piezodynamisch

Schreiben Sie ins EEPROM
Auslesen aus dem EEPROM

Kommunikation

SendVariableFromCommunication
ResiveVariableFromCommunication
WebServerPage
WebClient

Grundblöcke

Kontakt
Spule
Anti-Bounce
Auswahl der Vorderkante

Spezielle Relais

Bistabiles Relais
Zeitrelais
Generator
Vergleichsrelais

Algebra

SÜNDE
COS
BRÄUNEN
Abs
MAX
MINDEST
S.Q.
SQRT
Kriegsgefangener
ZUFÄLLIG

Analoge Blöcke

Skalierung
Mathematik
Schalter
Analoger Schalter
Viele-zu-eins-Schalter
Eins-zu-viele-Schalter
Analoger Controller-Eingang
Analoger Controller-Ausgang
Analoger Anschlusseingang
Analoger Anschlussausgang
Geschwindigkeitsmesser

CommPort

Übertragung an ComPort
Übertragen einer Variablen über den Comm-Port
Variable über Comm-Port empfangen

Motoren

Servomotor
Schrittmotor

Echtzeituhr

Um Daten zu erhalten
Alarm
Uhrzeit einstellen

Zeigt an

Anzeige auf Chip HD44780
Steuereinheit für die Hintergrundbeleuchtung des Displays auf dem I2C-Chip HD4480
Dekodierblock für Sieben-Segment-Anzeiger

Saiten

String-Addition

Sensoren

Ultraschall-Entfernungsmesser HC-SR04
Temperatur- und Feuchtigkeitssensor DHT11 (DHT21, DHT22)
Temperatursensor DS18x2x
IR-Responsive
BMP-085

SD-Karte

Schreiben einer Variablen auf eine SD-Karte
Hochladen einer Datei von einer SD-Karte

Typkonvertierung

String-Konvertierung
Konvertieren Sie Float in Integer

Erweiterungschips

Klemmenerweiterung 74HC595

Bitoperationen

Encoder
Decoder
Bit lesen
Ein bisschen aufnehmen

Verschiedenes

Matrixtastatur
Piezodynamisch

Schreiben Sie ins EEPROM
Auslesen aus dem EEPROM

Kommunikation

Baustein zum Senden einer Variablen per Kommunikation
Empfangen einer Variablen über Kommunikation
Webserverseite
Web-Client

Derzeit werden Funktionsblöcke entwickelt, die mit einem dreiachsigen Gyroskop, einem Luxmeter und anderen Sensoren funktionieren. Darüber hinaus wird daran gearbeitet, den Datenaustausch über Bluetooth, Funk und die RS-485-Schnittstelle zu organisieren. In Zukunftsplänen. Entwicklung eines SCADA-Systems zur Organisation der Schnittstelle von im FLProg-Programm entwickelten Systemen auf einem Personalcomputer oder Grafikdisplays.

Die Liste der vom Programm unterstützten Peripheriegeräte ist auf der Projektwebsite unter folgendem Link verfügbar:

Für einige Geräte enthält der Abschnitt auf der Website Übersichtsartikel, die das Verständnis für die Verwendung im Programm erleichtern.

Oben im Arbeitsbereich befindet sich eine Liste von Variablen (Variablen und Ein-/Ausgängen) (FUP) oder installierten Geräten (KOP). Durch einfaches Ziehen und Ablegen werden Variablen oder Betriebsmittel in das Diagramm übernommen.

Nach Abschluss der Arbeiten am Projekt wird es kompiliert. Nach der Kompilierung öffnet sich automatisch das Programm „Arduino 1.5.7“ mit der geladenen Skizze Ihres Projekts. Im Programm „Arduino IDE 1.5.7“ müssen Sie die Nummer des COM-Ports angeben, an den Ihr Controller angeschlossen ist, seinen Typ auswählen und die Skizze auf den Controller hochladen. Mehr über das Programm „Arduino IDE 1.5.7“ können Sie auf der Website Arduino.ru lesen.

Wo kann ich FLProg herunterladen?

Im Rahmen des Projekts gibt es eine Website http://flprog.ru. Die Hauptaufgabe der Website besteht darin, Benutzern das Herunterladen zu ermöglichen letzte Version Programme, erfahren Sie mehr über Innovationen und Veränderungen.

Sie können das Programm herunterladen, ohne sich auf der Website zu registrieren. Für registrierte Benutzer wird die Funktionalität der Website jedoch deutlich erweitert. Die Registrierung ist sehr einfach und erfordert lediglich eine Bestätigung Email. Weitere Daten müssen Sie nicht eingeben.

Auf der Programm-Download-Seite sind immer zwei Versionen verfügbar: ein Installationsprogramm und eine tragbare Version, die keine Installation erfordert. Wenn möglich, poste ich auch eine viel kleinere Update-Datei, mit der Sie die vorherige Version aktualisieren können.

Außerdem können Sie auf der Download-Seite eine Liste der Neuerungen und Fehlerbehebungen für diese Version einsehen und zum Archiv früherer Versionen gelangen.

In den letzten Jahren sind Programmier- und Robotikclubs äußerst beliebt und auch für Studenten zugänglich geworden Grundschule. Möglich wurde dies durch den Einsatz grafischer Programmierumgebungen, die, wie erwähnt, von großen Unternehmen aktiv genutzt werden. Um über grafische Programmierumgebungen zu sprechen, haben wir drei der beliebtesten ausgewählt.

Visuino ist eine kostenlose grafische Umgebung, die auf Arduino-kompatiblen Controllino-Industriesteuerungen (SPS) basiert. Es ermöglicht die Erstellung komplexer Automatisierungssysteme und IoT-Lösungen (Internet of Things), und dies kann einfach durch Verschieben und Verbinden visueller Blöcke erfolgen. Die Softwareumgebung generiert automatisch Code für Industriesteuerungen.

Was muss also getan werden? Wählen Sie Komponenten (Module) aus dem Komponentenbereich aus und verschieben Sie sie in den Designbereich. Anschließend müssen sie verbunden und Eigenschaften konfiguriert werden. Dies geschieht mit dem Objektinspektor.

Zu den Vorteilen von Visuino zählen ein großer Satz an Komponenten für mathematische und logische Funktionen, Servos, Displays, das Internet usw.

Wenn die SPS programmiert ist, werden Sie von der grafischen Umgebung dazu aufgefordert erschwinglicher Weg Verbindungen zur Steuerung. Dies kann ein serieller Anschluss, Ethernet, WLAN oder GSM sein.

Endlich ist Ihr Projekt fertig: Alle Controller sind registriert, alles funktioniert. Klicken Sie nun auf das Arduino-Logo auf obere Platte, zwingen Sie Visuino, Codes für Arduino zu erstellen und dessen Entwicklungsumgebung (Arduino IDE) zu öffnen, über die Sie den Code bereits kompilieren und in die SPS laden können.

Beratung. Wenn das installierte Board nicht zu Ihrem Arduino passt, können Sie es mit dem Befehl „Board auswählen“ ändern.

Diese grafische Programmierumgebung entstand im Jahr 2003, als eine Gruppe von Mitarbeitern des MIT Media Lab beschloss, eine Programmiersprache zu entwickeln, die für absolut jeden zugänglich sein sollte. Infolgedessen wurde Scratch nach einiger Zeit der Öffentlichkeit vorgestellt.

Am allermeisten sieht es vielleicht aus wie Lego. Zumindest das Prinzip ist dasselbe: Es handelt sich um eine objektorientierte Umgebung, in der Programme bunt und bunt aus Teilen zusammengesetzt werden. Diese Teile können bewegt, verändert und auf unterschiedliche Weise in Interaktion gebracht werden. Die Basis von Scratch sind Befehlsblöcke wie Sensoren, Variablen, Bewegung, Ton, Operatoren, Aussehen, Stift, Steuerung usw. Eingebaut Grafikeditor ermöglicht das Zeichnen beliebiger Objekte. Weniger als fünf Jahre sind seit der Gründung von Scratch vergangen, als das Scratch for Arduino-Projekt (abgekürzt als S4A) entstand, das die Programmierung der Arduino-SPS ermöglicht.

Zu den Vorteilen des Systems gehört die Tatsache, dass es russifiziert und vollständig lokalisiert ist – jeder kann viele Daten darauf finden. Darüber hinaus ist die Arbeit in dieser grafischen Umgebung auch für Grundschulkinder zugänglich, die noch nicht so sicher im Lesen sind.

Beratung. Für Scratch-Anfänger gibt es eine spezielle Ressource: https://scratch-ru.info.

Wenn jemand Scratch bereits vollständig beherrscht, aber Wiring, auf dem Arduino-kompatible Boards programmiert werden, noch nicht erreicht hat, ist es an der Zeit, das in Java geschriebene ArduBlock-Tool zu empfehlen. Es ist besonders gut für diejenigen, die sich für Robotik interessieren.

Was ist der Unterschied? Tatsache ist, dass Scratch nicht weiß, wie man Arduino flasht, sondern nur seine SPS über USB steuert. Daher kann Arduino nicht alleine funktionieren, da es auf den Computer angewiesen ist.

Tatsächlich ist ArduBloсk eine Zwischenstufe zwischen dem Kinder-Scratch und dem völlig professionellen, wenn auch erschwinglichen Visuino, da es wie letzteres über die Fähigkeit verfügt, Arduino-kompatible Controller zu flashen.

Beratung. Vergessen Sie nicht, eine Java-Maschine auf Ihrem PC zu installieren. Es nimmt nicht viel Zeit in Anspruch.

Also mehr grafische Umgebungen – gut und anders. Möge Arduino mit dir sein.

Foto: Fertigungsunternehmen, pixabay.com Interessieren Sie sich für Programmierung? Ja, ich bin Programmierer. Ja, das ist eine sehr interessante Sache, die mich nicht interessiert, aber mein Kind. Nein, das interessiert mich nicht. Ergebnisse anzeigen Wird geladen... Lesen Sie auch: Arduino: wie man ein LCD-Monitor in ein Thermometer verwandeln

Der Mini-PC Raspberry Pi 3 Model B+ kann zum Zentrum eines Smart Homes werden



Freunden erzählen