FLProg는 대체 Arduino 프로그래밍 환경입니다. 프로젝트에 대한 설명입니다. 스트립을 따라 움직이는 로봇의 예를 사용하여 ArduBlock을 사용하여 Arduino 프로그래밍 코드를 그래픽으로 표시하는 그래픽 환경

💖 마음에 드시나요?친구들과 링크를 공유하세요

본 강의에서는 C에서 Arduino 시스템을 프로그래밍하는 데 필요한 최소한의 지식을 제공합니다. 보기만 하고 다음과 같이 사용할 수 있습니다. 배경 정보. 다른 시스템에서 C로 프로그래밍한 적이 있는 사람들은 이 기사를 건너뛰어도 됩니다.

반복합니다. 최소한의 정보. 포인터, 클래스, 문자열 변수 등에 대한 설명 후속 수업에서 제공됩니다. 불분명한 점이 있어도 걱정하지 마세요. 앞으로의 수업에는 많은 예와 설명이 있을 것입니다.

Arduino 프로그램 구조.

Arduino 프로그램의 구조는 매우 간단하며 최소한의 형태로 setup()과 loop() 두 부분으로 구성됩니다.

무효 설정() (

무효 루프() (

setup() 함수는 컨트롤러의 전원을 켜거나 재설정할 때 한 번 실행됩니다. 일반적으로 변수 및 레지스터의 초기 설정이 이루어집니다. 함수는 프로그램에 아무것도 없더라도 프로그램에 있어야 합니다.

setup()이 완료된 후 제어는 loop() 함수로 전달됩니다. 무한 루프에서 본문(중괄호 사이)에 작성된 명령을 실행합니다. 실제로 이러한 명령은 컨트롤러의 모든 알고리즘 작업을 수행합니다.

C 언어 구문의 원래 규칙.

; 세미콜론표현식에는 원하는 만큼 공백과 줄 바꿈을 포함할 수 있습니다. 표현식의 끝은 세미콜론 기호로 표시됩니다.

z = x + y;
z=x
+ 와이 ;

( ) 중괄호함수 또는 표현식 블록을 정의합니다. 예를 들어 setup() 및 loop() 함수에 있습니다.

/* … */ 주석 블록, 반드시 닫으세요.

/* 이것은 주석 블록입니다 */

//한줄 주석, 닫을 필요가 없으며 줄 끝까지 유효합니다.

// 이것은 한 줄의 주석입니다.

변수 및 데이터 유형.

변수는 셀입니다. 랜덤 액세스 메모리, 정보가 저장됩니다. 프로그램은 변수를 사용하여 중간 계산 데이터를 저장합니다. 계산을 위해 다양한 형식과 다양한 비트 깊이의 데이터를 사용할 수 있으므로 C 언어의 변수에는 다음과 같은 유형이 있습니다.

데이터 형식 깊이, 비트 번호 범위
부울 8 허위 사실
8 -128 … 127
서명되지 않은 문자 8 0 … 255
바이트 8 0 … 255
정수 16 -32768 … 32767
부호 없는 정수 16 0 … 65535
단어 16 0 … 65535
32 -2147483648 … 2147483647
부호 없는 긴 32 0 … 4294967295
짧은 16 -32768 … 32767
뜨다 32 -3.4028235+38 … 3.4028235+38
더블 32 -3.4028235+38 … 3.4028235+38

데이터 유형은 필요한 계산 정확도, 데이터 형식 등에 따라 선택됩니다. 예를 들어 최대 100까지 계산되는 카운터의 경우 긴 유형을 선택하면 안 됩니다. 작동은 되지만 작업은 더 많은 데이터와 프로그램 메모리를 차지하며 시간도 더 많이 걸립니다.

변수 선언.

데이터 유형이 지정되고 그 뒤에 변수 이름이 지정됩니다.

정수 x; // int 유형의 x라는 변수 선언
float widthBox; // float 유형의 widthBox라는 변수 선언

모든 변수는 사용하기 전에 선언되어야 합니다.

변수는 프로그램의 어느 위치에서나 선언될 수 있지만 이에 따라 변수를 사용할 수 있는 프로그램 블록이 결정됩니다. 저것들. 변수에는 범위가 있습니다.

  • void setup() 함수 이전에 프로그램 시작 부분에 선언된 변수는 전역으로 간주되며 프로그램의 어느 곳에서나 사용할 수 있습니다.
  • 지역 변수는 for 루프와 같은 함수나 블록 내부에서 선언되며 선언된 블록 내에서만 사용할 수 있습니다. 이름은 같지만 범위가 다른 여러 변수를 가질 수 있습니다.

정수 모드; // 모든 함수에 사용 가능한 변수

무효 설정() (
// 빈 블록, 초기 설정이 필요하지 않습니다.
}

무효 루프() (

긴 카운트; // count 변수는 loop() 함수에서만 사용할 수 있습니다.

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

변수를 선언할 때 초기값을 설정할 수 있습니다(초기화).

정수 x = 0; // 변수 x는 초기값 0으로 선언됩니다.
char d = 'a'; // 변수 d는 문자 코드 "a"와 동일한 초기값으로 선언됩니다.

산술 연산의 경우 다른 유형데이터 유형은 자동으로 변환됩니다. 그러나 명시적인 변환을 사용하는 것이 항상 더 좋습니다.

정수 x; // 정수 변수
숯불; // 문자변수
int z; // 정수 변수

z = x + (int)y; // 변수 y는 명시적으로 int로 변환됩니다.

산술 연산.

관계 운영.

논리 연산.

포인터에 대한 작업.

비트 연산.

& 그리고
| 또는
^ 독점 또는
~ 반전
<< 왼쪽으로 이동
>> 오른쪽으로 이동

혼합 할당 작업.

옵션 선택, 프로그램 관리.

IF 연산자괄호 안의 조건을 테스트하고 조건이 true인 경우 중괄호 안의 후속 표현식이나 블록을 실행합니다.

if (x == 5) // x=5이면 z=0이 실행됩니다.
z=0;

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

다른 경우라면두 가지 옵션 중에서 선택할 수 있습니다.

if (x > 5) // x > 5이면 블록이 실행됩니다. z=0, y=8;
{
z=0;
y=8;
}

{
z=0;
y=0;
}

다른 경우– 여러 항목을 선택할 수 있습니다.

if (x > 5) // x > 5이면 블록이 실행됩니다. z=0, y=8;
{
z=0;
y=8;
}

else if (x > 20) // x > 20이면 이 블록이 실행됩니다.
{
}

else // 그렇지 않으면 이 블록이 실행됩니다.
{
z=0;
y=0;
}

스위치 케이스- 다중 선택. 변수(예제에서는 x)를 여러 상수(예제 5 및 10)와 비교하고 변수가 상수와 동일한 블록을 실행할 수 있습니다.

스위치 (x) (

사례 5:
// x = 5이면 코드가 실행됩니다.
부서지다;

사례 10:
// x = 10이면 코드가 실행됩니다.
부서지다;

기본:
// 이전 값 중 일치하는 값이 없으면 코드가 실행됩니다.
부서지다;
}

FOR 루프. 이 디자인을 사용하면 주어진 반복 횟수로 루프를 구성할 수 있습니다. 구문은 다음과 같습니다.

for(루프가 시작되기 전의 동작;
루프 연속 조건;
각 반복이 끝날 때마다 작업) (

// 루프 본문 코드

100회 반복 루프의 예입니다.

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

{
합계 = 합계 + I;
}

WHILE 루프. 연산자를 사용하면 구성을 통해 루프를 구성할 수 있습니다.

동안(표현)
{
// 루프 본문 코드
}

괄호 안의 표현식이 true인 동안 루프가 실행됩니다. 10회 반복에 대한 루프의 예입니다.

x = 0;
동안(x< 10)
{
// 루프 본문 코드
x++;
}

동안에 하라– 종료 시 조건이 있는 루프.

하다
{
// 루프 본문 코드
) 동안(표현식);

루프는 표현식이 참인 동안 계속 실행됩니다.
부서지다– 루프 종료 연산자. for, while, do while 루프의 실행을 중단하는 데 사용됩니다.

x = 0;
동안(x< 10)
{
(z > 20)인 경우 중단; // z > 20이면 루프를 종료합니다.
// 루프 본문 코드
x++;
}

이동– 무조건 전이 연산자.

gotometka1; // metka1로 이동
………………
메트카1:

계속하다- 루프 본문이 끝날 때까지 명령문을 건너뜁니다.

x = 0;
동안(x< 10)
{
// 루프 본문 코드
(z > 20)이면 계속; // z > 20이면 루프 본문의 시작 부분으로 돌아갑니다.
// 루프 본문 코드
x++;
}

배열.

배열은 여러 변수가 순차적으로 저장되는 메모리 영역입니다.

배열은 다음과 같이 선언됩니다.

int 연령; // 10개의 배열 유형 변수정수

플로트 웨이트 // 100개의 부동 변수 배열

선언되면 배열을 초기화할 수 있습니다.

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

배열 변수는 다음과 같이 액세스됩니다.

x = 연령; // x에는 배열의 5번째 요소 값이 할당됩니다.
연령 = 32; // 배열의 9번째 요소는 32로 설정됩니다.

배열 요소의 번호는 항상 0부터 시작됩니다.

기능.

함수를 사용하면 다른 데이터로 동일한 작업을 수행할 수 있습니다. 이 기능은 다음과 같습니다.

  • 그녀가 부르는 이름;
  • 인수 – 함수가 계산에 사용하는 데이터입니다.
  • 함수가 반환한 데이터 유형입니다.

setup() 및 loop() 함수 외부의 사용자 정의 함수에 대해 설명합니다.

무효 설정() (
// 프로그램이 시작될 때 코드가 한 번 실행됩니다.
}

무효 루프() (
// 루프에서 실행되는 메인 코드
}

// functionName이라는 사용자 정의 함수 선언
유형 함수 이름(유형 인수1, 유형 인수1, … , 유형 인수)
{
// 함수 본문
반품();
}

두 인수의 제곱의 합을 계산하는 함수의 예입니다.

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

함수 호출은 다음과 같습니다.

d= 2; b= 3;
z= sumQwadr(d, b); // z는 변수 d와 b의 제곱의 합이 됩니다.

기능은 내장형, 사용자 정의형 또는 플러그인형일 수 있습니다.

매우 짧지만 이 데이터는 Arduino 시스템용 C 프로그램 작성을 시작하는 데 충분합니다.

이 강의에서 제가 마지막으로 말씀드리고 싶은 것은 C에서 프로그램 형식을 지정하는 것이 관례적인 방법입니다. 이 강의를 처음 읽는다면 이 섹션을 건너뛰고 나중에 이해가 되면 다시 돌아와야 한다고 생각합니다. 포맷할 것.

프로그램 외부 디자인의 주요 목표는 프로그램의 가독성을 높이고 형식 오류 수를 줄이는 것입니다. 따라서 이 목표를 달성하려면 모든 권장 사항을 안전하게 위반할 수 있습니다.

C 언어로 된 이름.

데이터 유형을 나타내는 이름은 대소문자를 혼합하여 작성해야 합니다. 이름의 첫 글자는 대문자(대문자)로 표기해야 합니다.

신호, TimeCount

변수는 대소문자 혼합 이름으로 작성해야 하며, 첫 글자는 소문자(소문자)로 작성해야 합니다.

범주: . 북마크할 수 있습니다.

이 블로그는 이 프로젝트에 전념하고 있으며 여기서는 프로젝트 소식과 프로그램 사용자 커뮤니티 구성원의 성과에 대해 이야기하겠습니다. 이 프로젝트는 Arduino 보드를 위한 시각적 프로그래밍 환경을 만드는 데 전념하고 있으므로 FLProg 프로그램에 대해 이야기하기 전에 먼저 하고 싶은 말이 있습니다. 짧은 리뷰이러한 보드를 프로그래밍하기 위해 설계된 기존 프로그램.

Arduino 보드의 프로그래밍 환경은 다음과 같은 유형으로 나눌 수 있습니다.

  1. 업그레이드된 "메모장"
  2. 텍스트 개발 환경
  3. 코드 구조를 시각화하는 그래픽 환경입니다.
  4. 코드를 그래픽으로 표시하는 그래픽 환경입니다.
  5. 코드를 사용하지 않는 시각적 프로그래밍 환경.
각 유형을 살펴보겠습니다.

업그레이드된 "메모장"

이 유형에는 원래 Arduino-IDE 프로그래밍 환경과 그 복제본이 많이 포함되어 있습니다.

컨트롤러용 프로그램은 C 언어(대부분 C++)의 방언인 처리/배선 언어로 설계되었습니다. 이 환경은 본질적으로 작성된 코드를 컨트롤러에 로드할 수 있는 일반 텍스트 편집기입니다.

텍스트 개발 환경

Arduino IDE의 대안은 마이크로 컨트롤러 제조업체인 Atmel(AVRStudio)의 개발 환경입니다.

프로그래밍은 순수 C로 이루어지며 이미 더 많은 기능을 갖추고 있으며 "실제" 프로그래밍 언어에 대한 진지한 IDE와 더 유사합니다.

이 두 가지 유형의 프로그램은 언어를 잘 알고 이를 사용하여 심각한 프로젝트를 만들 수 있는 숙련된 프로그래머를 위해 설계되었습니다.

코드 구조를 시각화하는 그래픽 환경입니다.

본질적으로 일반 확장 프로그램을 포맷하는 프로그램입니다. 텍스트 에디터암호. 그 안에는 프로그램도 C로 작성되었지만 더 편리한 버전입니다. 이제 그러한 환경이 많이 있으며 가장 눈에 띄는 예는 Scratch, S4A, Ardublock입니다. 언어의 구조와 구문을 훌륭하게 보여주기 때문에 C 프로그래밍 초보자에게 매우 적합합니다. 그러나 규모가 크고 심각한 프로젝트의 경우 프로그램이 번거로운 것으로 드러납니다.

코드를 그래픽으로 표시하는 그래픽 환경

이는 코드를 숨기고 그래픽 아날로그로 바꾸는 프로그램입니다. 또한 언어의 구조를 반복하여 주기, 전환 및 조건을 형성합니다. 또한 알고리즘을 구축하는 방법을 학습하고 이후에 고전 언어 프로그래밍으로 전환하는 데에도 매우 적합합니다. 또한 결과 디스플레이가 번거롭기 때문에 대규모 프로젝트를 구축하는 데에도 적합하지 않습니다. 이러한 프로그램의 예: MiniBlog, Algorithm Builder, Flowcode

위에 설명된 프로그램 유형은 프로그래머나 클래식 프로그래밍을 공부하기로 결정한 사람들을 위해 설계되었습니다. 그러나 최종 장치를 제조하려면 컨트롤러를 직접 프로그래밍하는 것 외에도 일반적으로 보드의 외부 회로 개발, 전원 부품, 입력 접합 등의 개발 및 계산이 필요합니다. 프로그래머는 종종 이것에 문제가 있습니다. 그러나 전기 기술자와 전자 엔지니어는 이 작업을 훌륭하게 수행합니다. 하지만 그들 중에는 컨트롤러용 프로그램을 작성할 수 있는 프로그래머가 거의 없습니다. 프로그래머와 전자 엔지니어의 결합은 다소 드문 경우입니다. 이러한 상황으로 인해 Arduino 보드(및 기타 컨트롤러)를 기반으로 하는 실제 완성된 프로젝트는 거의 없습니다. 이 문제를 해결하기 위해 후자 유형의 프로그램이 사용됩니다.

코드를 사용하지 않는 시각적 프로그래밍 환경.

이러한 프로그램은 거의 모든 산업용 컨트롤러 제조업체에서 수년 동안 사용해 온 원칙을 구현합니다. 이는 FBD 또는 LAD 언어로 컨트롤러용 프로그램을 생성하는 것으로 구성됩니다. 엄밀히 말하면 그들은 언어 자체가 아닙니다. 이는 오히려 회로나 논리 다이어그램을 그리기 위한 그래픽 환경입니다. 프로세서는 항상 마이크로프로세서가 아니라 디지털 칩을 기반으로 만들어졌다는 점을 기억하십시오. 따라서 디지털 기술 작업에 익숙한 사람들은 고전적인 프로그래밍 언어로 코드를 작성하는 것보다 디지털 기술 작업을 더 좋아할 것입니다. 이러한 프로그램의 예로는 Horizont 및 FLProg 프로젝트가 있습니다. 이 유형의 프로그램은 펄스 및 릴레이 기술의 구성을 연구하고 심각한 프로젝트를 만드는 데 매우 적합합니다.


그리고 마지막으로, 이 블로그의 주인공인 FLProg 프로젝트입니다.

저는 수년간 공정 제어 시스템 개발자로 일해왔기 때문에 선도적인 산업 장비 제조업체(Tia-Portal, Zelio Soft, Logo Soft Comfort)의 환경에서 제가 가장 좋아하는 모든 것을 FLProg 프로그램에 수집하려고 노력했습니다.
이 프로그램을 사용하면 기능 다이어그램(FBD)과 릴레이 다이어그램(LAD)의 두 가지 유형으로 다이어그램을 생성할 수 있습니다.

FBD(Function Block Diagram)는 IEC 61131-3 표준에 따른 그래픽 프로그래밍 언어입니다. 프로그램은 위에서 아래로 순차적으로 실행되는 회로 목록으로 구성됩니다. 프로그래밍할 때 라이브러리 블록 세트가 사용됩니다. 블록(요소)은 서브루틴, 함수 또는 기능 블록(AND, OR, NOT, 트리거, 타이머, 카운터, 아날로그 신호 처리 장치, 수학 연산 등). 각각의 개별 회로는 개별 요소를 그래픽으로 구성한 표현입니다. 다음 블록은 블록의 출력에 연결되어 회로를 형성합니다. 체인 내에서 블록은 연결된 순서대로 엄격하게 실행됩니다. 회로 계산 결과는 내부 변수에 기록되거나 컨트롤러 출력으로 전송됩니다.



래더 다이어그램(LD, LAD, RKS)은 릴레이(래더) 로직의 언어입니다. 언어의 구문은 릴레이 기술을 사용하여 만든 논리 회로를 대체하는 데 편리합니다. 이 언어는 산업 기업에서 일하는 자동화 전문가를 대상으로 합니다. 컨트롤러의 작동 로직에 대한 시각적 인터페이스를 제공하여 프로그래밍 및 시운전 작업뿐만 아니라 컨트롤러에 연결된 장비의 빠른 문제 해결도 용이하게 합니다. 릴레이 논리 언어의 프로그램은 전기 엔지니어에게 시각적이고 직관적인 그래픽 인터페이스를 갖추고 있으며 폐쇄 접점과 개방 접점이 있는 전기 회로로 논리적 작업을 나타냅니다. 이 회로의 전류 흐름 여부는 논리 연산의 결과에 해당합니다(true - 전류가 흐르면 false - 전류가 흐르지 않으면). 언어의 주요 요소는 접점이며 이는 비유적으로 한 쌍의 릴레이 또는 버튼 접점에 비유될 수 있습니다. 접점 쌍은 논리 변수로 식별되고 이 쌍의 상태는 변수 값으로 식별됩니다. 상시 폐쇄 및 상시 개방 접점 요소가 있으며, 이는 전기 회로의 상시 폐쇄 및 상시 개방 버튼과 비교할 수 있습니다.

이 프로그래밍 방법은 전기 및 전자 엔지니어가 자동 제어 시스템 개발에 쉽게 참여할 수 있는 매우 편리한 것으로 나타났습니다. 장치 프로젝트를 개발할 때 이러한 설치 작업을 컨트롤러의 작동 알고리즘에 쉽게 연결할 수 있습니다.

이러한 표현을 기반으로 구축된 FLProg 프로그램은 Arduino에서 작동합니다. 왜?
이 보드는 장치를 신속하게 개발하고 디버깅하는 데 매우 편리합니다. 이는 라디오 아마추어뿐만 아니라 학교 클럽 및 대학 교육 실험실에서도 매우 유용합니다. 한 가지 장점은 프로그래머가 필요하지 않다는 것입니다. Arduino 보드를 컴퓨터에 연결하고 개발 환경에서 완성된 프로그램을 다운로드합니다. 현재 다양한 Arduino 모듈, 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 버전을 지원합니다. 프로(ATmega168), 아두이노 프로(ATmega328), 아두이노 우노. 또한 최근 Intel Galileo gen2 보드가 지원되는 컨트롤러 목록에 나타났습니다. 앞으로는 이 목록을 확장하고 STM 컨트롤러 기반 보드를 추가할 계획입니다.

FLProg 프로그램의 프로젝트는 원본 보드 세트로, 각 보드에는 완전한 모듈이 조립됩니다. 일반적인 계획. 사용의 편의를 위해 각 보드에는 이름과 설명이 있습니다. 또한 각 보드는 접거나(작업이 끝난 후 작업 영역의 공간을 절약하기 위해) 펼칠 수 있습니다.

FBD 언어 요소 라이브러리의 현재 구성입니다.

장식

  • 영상
기본 요소
  • 상태 테이블
특수 블록
트리거
타이머
카운터
수학
대수학
비교
UART
  • UART로 보내기
  • UART에서 수신
  • UART에 변수 보내기
  • UART에서 변수 수신
스위치
모터
  • 서보 모터
  • 스텝모터
실시간 시계
디스플레이
  • HD44780 칩에 디스플레이
  • HD44780 I2C 칩의 디스플레이 백라이트
문자열
  • 문자열 추가
  • 문자열 비교
  • 줄 길이
  • 하위 문자열 검색
  • 하위 문자열 얻기
  • 문자열에서 문자 가져오기
  • 문자열에 Char 추가
배열
  • 배열에 요소 쓰기
  • 배열 요소 얻기
  • 배열 요소의 합
  • 배열에서 요소 찾기
센서
SD 카드
  • SD 카드에서 파일 업로드
  • SD 카드에 변수 쓰기
유형 변환
  • 문자열 변환
  • -> 바이트
  • -> 숯
확장 칩
  • 터미널 확장기 74HC595
  • MAX7219 LED 드라이버
비트 연산
  • 디코더
  • 인코더
  • 비트 읽기
  • 조금 녹음하다
여러 가지 잡다한
  • 매트릭스 키보드
  • 피에조 스피커
  • OneWare 버스 스캔
EEPROM
  • EEPROM에 쓰기
  • EEPROM에서 읽기
연락
  • ResiveVariableFrom통신
  • 웹서버페이지
  • SendVariableFrom통신
  • 웹클라이언트
기성품 서비스
  • narodmon.ru
  • goplusplatform.com

LAD 언어 요소 라이브러리의 현재 구성입니다.

장식

  • 영상
기본 블록
  • 연락하다
  • 코일
  • 바운스 방지
  • 앞 가장자리 선택
  • 상태 테이블
특수 릴레이
  • 쌍안정 릴레이
  • 타임 릴레이
  • 발전기
  • 비교 릴레이
대수학
  • 무작위의
아날로그 블록
  • 스케일링
  • 수학
  • 카운터
  • 아날로그 스위치
  • 다대일 스위치
  • 일대다 스위치
  • 아날로그 컨트롤러 입력
  • 아날로그 컨트롤러 출력
  • 아날로그 커넥터 입력
  • 아날로그 커넥터 출력
  • 속도계
UART
  • UART로 보내기
  • UART에서 수신
  • UART에 변수 보내기
  • UART에서 변수 수신
모터
  • 서보 모터
  • 스테퍼 모터
실시간 시계
  • 데이터를 얻으려면
  • 경보
  • 시간 설정
디스플레이
  • 칩 HD44780 디스플레이
  • HD4480 I2C 칩의 디스플레이 백라이트 제어 장치
  • 7세그먼트 표시자 디코딩 블록
문자열
  • 문자열 추가
  • 문자열 비교
  • 줄 길이
  • 하위 문자열 검색
  • 하위 문자열 얻기
  • 문자열에서 문자 가져오기
  • 문자열에 Char 추가
배열
  • 배열에 요소 쓰기
  • 배열 요소 얻기
  • 배열 요소의 합
  • 배열에서 요소 찾기
센서
  • 초음파 거리 측정기 HC-SR04
  • 온도 및 습도 센서 DHT11 (DHT21, DHT22)
  • 온도 센서 DS18x2x
  • IR 반응형
  • BMP-085
  • BH1750 조도계
SD 카드
  • SD 카드에 변수 쓰기
  • SD 카드에서 파일 업로드
유형 변환
  • 문자열 변환
  • 부동 소수점을 정수로 변환
  • -> 바이트
  • -> 숯
확장 칩
  • 터미널 확장기 74HC595
  • MAX7219 LED 드라이버
비트 연산
  • 인코더
  • 디코더
  • 비트 읽기
  • 조금 녹음하다
여러 가지 잡다한
  • 매트릭스 키보드
  • 피에조 스피커
  • OneWare 버스 스캔
EEPROM
  • EEPROM에 쓰기
  • EEPROM에서 읽기
연락
  • 통신을 통해 변수를 보내는 블록
  • 통신을 통해 변수 수신
  • 웹 페이지서버
  • 웹 클라이언트
기성품 서비스
  • narodmon.ru로 데이터 전송
  • RemoteXY를 통한 원격 제어

다음 게시물에서 이 프로젝트에 대해 자세히 설명하고, 마지막으로 프로그램 작동 원리와 스마트폰 애플리케이션에서 보드를 제어하는 ​​기능을 보여주는 짧은 비디오를 소개하겠습니다.

사이트 개발을 위해 일부 자금을 돕고 이체할 수 있습니다.

안녕하세요! 저는 추가 교육 교사인 Alikin Alexander Sergeevich입니다. 저는 Labinsk의 청소년 및 청소년 기술 센터에서 "로봇 공학" 및 "무선 공학" 클럽을 이끌고 있습니다. ArduBlock 프로그램을 사용하여 Arduino를 프로그래밍하는 간단한 방법에 대해 조금 이야기하고 싶습니다.

나는 이 프로그램을 교육 과정에 도입했고 그 결과에 만족합니다. 특히 간단한 프로그램을 작성하거나 일종의 프로그램을 만들 때 아이들 사이에서 큰 수요가 있습니다. 첫 단계복잡한 프로그램. ArduBlock은 그래픽 프로그래밍 환경입니다. 즉, 모든 작업은 러시아어로 서명된 작업이 포함된 그려진 그림으로 수행되므로 Arduino 플랫폼 학습이 크게 단순화됩니다. 이 프로그램 덕분에 초등학교 2학년 아이들도 아두이노 작업을 쉽게 익힐 수 있습니다.

예, 누군가 스크래치가 여전히 존재하며 Arduino 프로그래밍을 위한 매우 간단한 그래픽 환경이라고 말할 수도 있습니다. 그러나 스크래치는 Arduino를 플래시하지 않고 다음을 사용하여 제어만 합니다. USB 케이블. Arduino는 컴퓨터에 의존하며 자율적으로 작동할 수 없습니다. 자신만의 프로젝트를 만들 때 Arduino의 주요 요소는 자율성입니다. 특히 로봇 장치를 만들 때는 더욱 그렇습니다.

NXT 또는 EV3와 같은 잘 알려진 LEGO 로봇조차도 Arduino 프로그래밍에 ArduBlock 프로그램이 등장하면서 더 이상 학생들에게 그다지 흥미롭지 않습니다. Arduino는 또한 어떤 LEGO 구성 키트보다 훨씬 저렴하며 많은 구성 요소를 오래된 가전 제품에서 간단히 가져올 수 있습니다. ArduBlock 프로그램은 초보자뿐만 아니라 Arduino 플랫폼의 활성 사용자에게도 도움이 될 것입니다.

그렇다면 ArduBlock은 무엇입니까?이미 말했듯이 이것은 그래픽 프로그래밍 환경입니다. 거의 완전히 러시아어로 번역되었습니다. 하지만 ArduBlock의 하이라이트는 이것뿐만 아니라 우리가 작성한 ArduBlock 프로그램이 Arduino IDE 코드로 변환된다는 사실입니다. 이 프로그램은 Arduino IDE 프로그래밍 환경에 내장되어 있습니다. 즉, 플러그인입니다.

아래는 Arduino IDE에서 깜박이는 LED와 변환된 프로그램의 예입니다. 프로그램을 사용한 모든 작업은 매우 간단하며 모든 학생이 이해할 수 있습니다.

프로그램 작업을 통해 Arduino를 프로그래밍할 수 있을 뿐만 아니라 우리가 이해할 수 없는 명령도 공부할 수 있습니다. 텍스트 형식 Arduino IDE이지만 표준 명령을 작성하기가 너무 게으른 경우 마우스를 사용하여 ArduBlok에서 간단한 프로그램을 빠르게 스케치하고 Arduino IDE에서 디버깅할 수 있습니다.

ArduBlok을 설치하려면 먼저 Arduino 공식 웹사이트에서 Arduino IDE를 다운로드하여 설치하고 작업 시 설정을 이해해야 합니다. 아두이노 보드우노. 이를 수행하는 방법은 동일한 웹사이트나 Amperka에 설명되어 있거나 YouTube에서 시청하세요. 글쎄, 이 모든 것이 파악되면 여기 공식 웹사이트에서 ArduBlok을 다운로드해야 합니다. 최신 버전을 다운로드하는 것을 권장하지 않습니다. 초보자에게는 매우 복잡하지만 2013-07-12 버전이 가장 좋고 이 파일이 그곳에서 가장 인기가 있습니다.

그런 다음 다운로드한 파일의 이름을 ardublock-all 및 "documents" 폴더로 바꿉니다. Arduino > tools > ArduBlockTool > tool 폴더를 생성하고 후자에는 다운로드하고 이름을 바꾼 파일을 생성합니다. ArduBlok은 모든 운영 체제, 심지어 Linux에서도 작동합니다. 개인적으로 XP, Win7, Win8에서 테스트했으며 모든 예제는 Win7용입니다. 프로그램 설치는 모든 시스템에서 동일합니다.

간단히 말해서 7z Mail 디스크에 아카이브를 준비했는데 압축을 풀면 2개의 폴더가 있습니다. 이미 하나에서는 작업 프로그램 Arduino IDE 및 다른 폴더의 내용은 문서 폴더로 전송되어야 합니다.

ArduBlok에서 작업하려면 Arduino IDE를 실행해야 합니다. 그런 다음 도구 탭으로 이동하여 ArduBlok 항목을 찾아 클릭합니다. 여기에 우리의 목표가 있습니다.

이제 프로그램 인터페이스를 살펴 보겠습니다. 이미 알고 있듯이 설정은 없지만 프로그래밍을 위한 아이콘이 많이 있으며 각 아이콘은 Arduino IDE 텍스트 형식의 명령을 전달합니다. 새 버전에는 더 많은 아이콘이 있으므로 ArduBlok의 최신 버전을 이해하는 것이 어렵고 일부 아이콘은 러시아어로 번역되지 않습니다.

"관리" 섹션에서는 다양한 주기를 찾을 수 있습니다.

"포트" 섹션에서는 포트의 값과 이에 연결된 사운드 이미터, 서보 또는 초음파 근접 센서를 관리할 수 있습니다.

"숫자/상수" 섹션에서는 디지털 값을 선택하거나 변수를 생성할 수 있지만 아래 내용은 사용하지 않을 것입니다.

"연산자" 섹션에서는 필요한 모든 비교 및 ​​계산 연산자를 찾을 수 있습니다.

유틸리티 섹션은 주로 시간이 표시된 아이콘을 사용합니다.

"TinkerKit Bloks"는 구입한 TinkerKit 센서에 대한 섹션입니다. 물론 우리에게는 그런 세트가 없지만 이것이 아이콘이 다른 세트에 적합하지 않다는 의미는 아니며 반대로 LED를 켜거나 아이콘을 켜는 것과 같은 아이콘을 사용하는 것이 매우 편리합니다. 단추. 이 기호는 거의 모든 프로그램에서 사용됩니다. 그러나 특이한 점이 있습니다. 선택하면 포트를 나타내는 잘못된 아이콘이 있으므로 해당 아이콘을 제거하고 목록 상단의 "숫자/상수" 섹션에 있는 아이콘으로 대체해야 합니다.

"DF 로봇" - 이 섹션은 지정된 센서가 있는 경우 사용되며 때로는 발견됩니다. 오늘의 예도 예외는 아닙니다. "조정 가능한 IR 스위치"와 "라인 센서"가 있습니다. "라인 센서"는 Amperka 회사 제품이기 때문에 사진의 센서와 다릅니다. 그들의 동작은 동일하지만 감도 조절기가 있기 때문에 Ampere 센서가 훨씬 좋습니다.

“Seedstudio Grove” - 조이스틱만 있지만 이 섹션에서는 센서를 사용한 적이 없습니다. 새 버전에서는 이 섹션이 확장되었습니다.

그리고 마지막 섹션은 “링커 키트”입니다. 나는 그 안에 제시된 센서를 발견하지 못했습니다.

스트립을 따라 움직이는 로봇에 대한 프로그램의 예를 보여주고 싶습니다. 로봇은 조립과 구입이 매우 간단하지만, 가장 먼저 해야 할 일이 있습니다. 획득 및 조립부터 시작하겠습니다.

다음은 부품 세트 자체이며 모든 것은 Amperka 웹 사이트에서 구매했습니다.

  1. AMP-B001 모터 쉴드 (2채널, 2A) RUB 1,890
  2. AMP-B017 트로이카 쉴드 RUB 1,690
  3. AMP-X053 배터리실 3×2 AA 1 60 RUR
  4. AMP-B018 디지털 라인 센서 RUB 2,580
  5. ROB0049 MiniQ 이륜 플랫폼 RUB 1,1890
  6. SEN0019 적외선 장애물 센서 RUB 1,390
  7. FIT0032 적외선 장애물 센서용 마운트 RUB 1,90
  8. A000066 아두이노 우노 1 1150 RUR

먼저 바퀴 달린 플랫폼을 조립하고 와이어를 모터에 납땜해 보겠습니다.

그런 다음 오래된 마더보드나 기타 유사한 마운트에서 가져온 Arduino UNO 보드를 마운트하기 위한 랙을 설치합니다.

그런 다음 Arduino UNO 보드를 이 랙에 연결하지만 볼트 하나를 조일 수 없습니다. 커넥터가 방해가 됩니다. 물론 납땜을 풀 수도 있지만 이는 귀하의 재량에 달려 있습니다.

다음으로 적외선 장애물 센서를 특수 마운트에 부착합니다. 감도 조절 장치가 상단에 위치해 있어 쉽게 조정할 수 있습니다.

이제 디지털 라인 센서를 설치합니다. 여기서는 두 개의 볼트와 4개의 너트를 찾아야 합니다. 플랫폼 자체와 라인 센서 사이에 두 개의 너트를 설치하고 나머지는 센서를 고정합니다.

다음으로 Motor Shield를 설치합니다. 그렇지 않으면 이를 모터 드라이버라고 부를 수 있습니다. 우리의 경우 점퍼에 주목하세요. 모터에 별도의 전원을 사용하지 않을 것이므로 이 위치에 설치합니다. 만약을 대비해 Arduino UNO USB 커넥터에서 우발적인 단락이 발생하지 않도록 하단 부분은 전기 테이프로 밀봉되어 있습니다.

Motor Shield 위에 Troyka Shield를 설치합니다. 센서 연결의 편의를 위해 필요합니다. 우리가 사용하는 센서는 모두 디지털이므로 라인 센서는 핀이라고도 불리는 포트 8과 9에 연결되고 적외선 장애물 센서는 포트 12에 연결됩니다. 포트 4, 5, 6, 7은 모터 쉴드에서 모터를 제어하는 ​​데 사용되므로 사용할 수 없습니다. 학생들이 알아낼 수 있도록 특별히 빨간색 마커로 이 포트를 칠하기도 했습니다.

이미 눈치채셨다면 만약을 대비해 검은색 부싱을 추가해 우리가 설치한 배터리 칸이 날아가지 않도록 했습니다. 그리고 마지막으로 일반 고무줄로 전체 구조를 고정합니다.

배터리함 연결에는 2가지 유형이 있습니다. Troyka Shield에 첫 번째 전선 연결. 전원 플러그를 납땜하여 Arduino UNO 보드 자체에 연결하는 것도 가능합니다.

우리 로봇이 준비되었습니다. 프로그래밍을 시작하기 전에 모든 것이 어떻게 작동하는지 배워야 합니다. 즉:
- 모터:
포트 4와 5는 하나의 모터를 제어하는 ​​데 사용되고, 6과 7은 다른 모터를 제어하는 ​​데 사용됩니다.
우리는 포트 5와 6의 PWM을 사용하여 모터의 회전 속도를 조절합니다.
포트 4와 7에 신호를 보내 앞으로 또는 뒤로.
- 센서:
우리는 모두 디지털이므로 1 또는 0의 형태로 논리 신호를 제공합니다.
그리고 이를 조정하기 위해 특수 조절 장치가 있으며 적합한 드라이버를 사용하여 교정할 수 있습니다.

자세한 내용은 Amperke에서 확인할 수 있습니다. 왜 여기에? Arduino 작업에 대한 많은 정보가 있기 때문입니다.

글쎄, 우리는 아마도 모든 것을 표면적으로 살펴보고 연구했으며 물론 로봇을 조립했을 것입니다. 이제 프로그래밍해야 합니다. 오랫동안 기다려온 프로그램입니다!

그리고 프로그램은 Arduino IDE로 변환되었습니다.

무효 설정() ( 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); 아날로그Write(5, 50); 아날로그Write(6, 255); digitalWrite(7, HIGH); ) else ( digitalWrite(4, HIGH); 아날로그Write(5, 255); AnalogWrite(6, 255); digitalWrite(7 , HIGH); ) ) ) else ( digitalWrite(4 , HIGH); AnalogWrite(5, 0); AnalogWrite(6, 0); digitalWrite(7 , HIGH); ) )

결론적으로 이 프로그램은 단순히 교육을 위한 신의 선물이라고 말하고 싶고, 독학을 할 때도 Arduino IDE 명령을 배우는 데 도움이 될 것입니다. 주요 특징은 50개 이상의 설치 아이콘이 있으며 "결함"이 시작된다는 것입니다. 예, 실제로 이것은 ArduBlok에서만 프로그래밍하는 것이 Arduino IDE에서의 프로그래밍을 가르쳐주지는 않기 때문에 이것이 가장 중요한 부분입니다. 소위 "글리치"는 프로그램의 정확한 디버깅을 위해 명령을 생각하고 기억해 볼 수 있는 기회를 제공합니다.

나는 당신의 성공을 기원합니다.

세르게이 글루셴코

현재 세계는 다양한 수제 제품과 스타트업에서 마이크로컨트롤러를 사용하는 붐을 일으키기 시작했습니다. 실제로 마이크로컨트롤러의 가격은 하락했지만 그 성능은 지속적으로 성장하고 있습니다. 그리고 우리 친구들인 중국인들은 그들을 위한 주변 장치를 만드는 법을 배웠고, 그것들을 터무니없는 가격에 팔기도 합니다. 하지만 프로그래밍 마이크로컨트롤러를 사용하면 모든 것이 그렇게 장밋빛이 되지는 않습니다.

모든 것이 어떻게 시작되었고 어떻게 발전했는지

마이크로프로세서의 출현 이후 마이크로프로세서 작업 원리의 개발은 점점 더 추상화되는 방향으로 진행되었습니다. 첫 번째 단계는 기계 코드로 직접 프로그래밍을 표현했습니다. 프로그래밍은 복잡하고 시간이 많이 걸리며 매우 구체적인 사고방식이 필요했습니다. 따라서 프로그래머가 거의 없었습니다.

그러나 인간은 게으른 존재이고, 우리가 알고 있듯이 게으름은 진보의 원동력입니다. 우리는 추상화의 첫 번째 수준인 어셈블러를 생각해냈습니다. 프로그램 작성이 더 쉽고 재미있어졌습니다. 프로그래머의 수가 증가했습니다. 그러나 여전히 어셈블러는 기계어 코드와 크게 다르지 않았습니다.

따라서 다음 수준의 추상화가 나타났습니다. 고급 언어. 이 언어의 주요 목적은 가능한 한 인간과 가까운 언어로 기계에서 원하는 것을 기계에 설명하는 능력이었습니다. 이를 통해 덜 구체적인 사고방식을 가진 사람들도 프로그래밍에 참여할 수 있었습니다. 따라서 고급 언어의 발달과 함께 프로그래머의 수가 늘어나고, 유용한 프로그램그들이 만든 것.

지금은 어떤가요?

물론 컨트롤러로 직접 작업을 시작하려면 몇 가지 준비가 필요합니다. 즉, 프로그래머, 컴퓨터 프로그래밍을 위한 맞춤형 환경, 그리고 프로그래밍 언어에 대한 지식이 필요합니다. 또한 납땜 인두 작업 기술, 개발 프린트 배선판, 전기 공학 및 전자 지식. 따라서 마이크로컨트롤러에서 자신만의 장치를 만드는 분야에 진입하기 위한 임계값은 여전히 ​​높습니다.

또한 이러한 유형의 작업에는 거의 함께 사용할 수 없는 기술의 조합이 필요합니다. 프로그래머는 납땜 인두와 친구가 되는 경우가 거의 없으며, 전자 엔지니어는 프로그래머와 친구가 되는 경우가 거의 없습니다. 프로그래머의 경우 도구를 사용하지 않고도 장치를 조립할 수 있는 Arduino 보드를 만들어 문제를 해결했습니다.

전자 및 전기 기술자의 상황은 점점 더 악화되고 있습니다. 최근까지 마이크로 컨트롤러를 사용하여 자체 장치를 만들려면 두 가지 방법이 있었습니다. C 프로그래밍 언어를 직접 배우거나 프로그래머에게 도움을 요청하세요. 두 가지 방법 모두 최선은 아닙니다. 프로그래머가 되려면 독서 경험과 항상 양립할 수 없는 특정한 사고방식이 필요합니다. 전기 다이어그램. 그리고 당신이 아는 프로그래머가 가까이에 없을 수도 있습니다.

동시에 일반 전자 엔지니어나 전기 기술자에게 적합한 프로그래밍 환경이 오랫동안 존재해 왔습니다. 산업용 컨트롤러를 위한 프로그래밍 환경을 의미합니다. PLC. 그들은 당신이 만들 수 있습니다 소프트웨어언어 컨트롤러의 경우 FBD그리고 젊은이. 엄밀히 말하면 그들은 언어 자체가 아닙니다. 이는 오히려 회로나 논리 다이어그램을 그리기 위한 그래픽 환경입니다.

FBD(기능 블록 다이어그램)

- 그래픽 프로그래밍 언어 표준 IEC 61131-3. 프로그램은 위에서 아래로 순차적으로 실행되는 회로 목록으로 구성됩니다. 프로그래밍할 때 라이브러리 블록 세트가 사용됩니다. 블록(요소)은 서브루틴, 기능 또는 기능 블록(AND, OR, NOT, 트리거, 타이머, 카운터, 아날로그 신호 처리 블록, 수학 연산 등)입니다. 각각의 개별 회로는 개별 요소를 그래픽으로 구성한 표현입니다. 다음 블록은 블록의 출력에 연결되어 회로를 형성합니다. 체인 내에서 블록은 연결된 순서대로 엄격하게 실행됩니다. 회로 계산 결과는 내부 변수에 기록되거나 컨트롤러 출력으로 전송됩니다.

래더 다이어그램(LD, LAD, RKS)


- 릴레이(래더) 로직의 언어. 언어의 구문은 릴레이 기술을 사용하여 만든 논리 회로를 대체하는 데 편리합니다. 이 언어는 산업 플랜트에서 일하는 자동화 엔지니어를 대상으로 합니다. 컨트롤러의 작동 로직에 대한 시각적 인터페이스를 제공하여 프로그래밍 및 시운전 작업뿐만 아니라 컨트롤러에 연결된 장비의 빠른 문제 해결도 용이하게 합니다. 릴레이 논리 언어의 프로그램은 전기 엔지니어에게 시각적이고 직관적인 그래픽 인터페이스를 갖추고 있으며 폐쇄 접점과 개방 접점이 있는 전기 회로로 논리적 작업을 나타냅니다. 이 회로의 전류 흐름 여부는 논리 연산의 결과에 해당합니다(true - 전류가 흐르면 false - 전류가 흐르지 않으면). 언어의 주요 요소는 접점이며 이는 비유적으로 한 쌍의 릴레이 또는 버튼 접점에 비유될 수 있습니다. 접점 쌍은 논리 변수로 식별되고 이 쌍의 상태는 변수 값으로 식별됩니다. 상시 폐쇄 및 상시 개방 접점 요소가 있으며, 이는 전기 회로의 상시 폐쇄 및 상시 개방 버튼과 비교할 수 있습니다.

이 접근 방식은 전기 및 전자 엔지니어가 자동 제어 시스템 개발에 쉽게 참여할 수 있는 매우 편리한 것으로 나타났습니다. 설치 프로젝트를 개발할 때 이러한 설치 작업을 컨트롤러의 작동 알고리즘에 쉽게 연결할 수 있었습니다. 또한 기존 유지관리 인력이 자동제어시스템의 작동을 쉽게 확인하고 문제점을 찾아낼 수 있다면 이러한 설비의 현장 유지관리에도 더 좋습니다. 동시에 모든 사소한 일에 대해 "센터"에서 프로그래머에게 전화할 필요가 없습니다. 그리고 이 접근 방식은 성과를 거두었습니다. 오늘날 거의 모든 산업 자동화 시스템은 이러한 개발 도구를 사용하여 만들어집니다.

Siemens, ABB, Schneider Electric... 그리고 거의 모든 PLC 제조업체는 이러한 개발 환경을 갖추고 있습니다. DIY 애호가에게는 이상적인 솔루션인 것 같습니다. 하지만 늘 그렇듯이 "그러나"가 있습니다. 이러한 프로그래밍 환경은 모두 특정 제조업체의 산업용 컨트롤러와 연결되어 있습니다. 그리고 이 컨트롤러의 가격은 그다지 고무적이지 않습니다. 가족 예산으로 수만 루블의 컨트롤러를 구입할 수 있는 경우는 매우 드뭅니다.

그러나 Arduino 보드는 우리나라가 항상 부자였으며 앞으로도 부자가 될 DIY 및 공예가에게 이상적입니다. 하지만 또 "하지만". 이 보드는 C 언어로 프로그래밍되어 있습니다. 대부분의 가장 똑똑한 사람들에게 있어 매우 곧은 팔이 올바른 위치에서 자라는 경우 C 언어는 중국어 알파벳입니다. 그들은 가장 복잡한 회로를 발명하고, 그리고, 조립하고, 디버깅하고 실행할 수 있지만 If, For, Case, Void 등은 사용할 수 없습니다. - 이건 그들을 위한 것이 아닙니다. 물론 인터넷에서 설명을 읽어보고, 잠시 놀아보고, 예제를 이용해 LED를 깜박이는 것도 가능합니다. 그러나 보다 진지하게 적용하려면 언어에 대한 자세한 연구가 필요합니다. 왜 이것이 필요합니까?

그들은 그렇지 않을 것이다 전문 프로그래머. 그들은 다른 길을 가지고 있습니다. 그들은 뭔가를 생각해 냈습니다. 예, 마이크로컨트롤러를 사용하여 조립하는 것이 더 쉽고 아름답습니다. 하지만 몇 달 동안 언어를 배운 후에 프로그래머가 됩니까? 당연히 아니지. 물론 그들은 구식 방식으로 더 간단하게 수집하지만 자신의 영역에서 수집합니다.

이러한 모든 계산을 바탕으로 FLProg 프로젝트가 생성되었습니다. 이 프로젝트의 주요 아이디어는 산업용 프로그래밍의 원리와 Arduino의 저렴한 비용 및 편의성을 결합하는 것입니다. 이 프로젝트는 다소 대담한 표현으로 새로운 수준의 추상화를 제공합니다.

마이크로 컨트롤러를 프로그래밍하기 위해 프로그래밍 언어를 알 필요는 없습니다!

그 결과 전기 공학 및 전자 공학에 익숙한 사람이라면 누구나 Arduino에서 자신만의 프로젝트를 만들 수 있고 이러한 보드를 사용하여 자신만의 제품을 만들 수 있는 도구가 탄생했습니다.

이 프로젝트는 두 부분으로 구성됩니다.

첫 번째 부분은 데스크톱 응용 프로그램입니다. FLProg는 Arduino 보드용 그래픽 프로그래밍 환경입니다.

새 프로젝트를 생성할 때 프로젝트를 생성할 프로그래밍 언어와 이 프로젝트가 구현될 컨트롤러를 선택하라는 메시지가 표시됩니다.

다음은 현재 프로그램에서 지원하는 Arduino 보드 목록입니다.

아두이노 디에시밀라
Arduino Duemilanove
아두이노 레오나르도
아두이노 릴리패드
아두이노 메가 2560
아두이노 마이크로
아두이노 미니
아두이노 나노(ATmega168)
아두이노 나노(ATmega328)
아두이노 프로 미니
아두이노 프로(ATmega168)
아두이노 프로(ATmega328)
아두이노 우노

지원되는 보드 제품군에 새로운 제품이 곧 추가될 예정입니다. Arduino Due는 이미 출시 중이며 Intel Galileo(gen.2) 보드는 상트페테르부르크 주립 통신 대학 사물 인터넷 연구소 소장이 약속했습니다. 교수 엄마. Bonch-Bruevich. 시간이 지남에 따라 인수가 진행됨에 따라 STM 컨트롤러 기반 보드를 지원할 계획입니다.

FLProg의 프로젝트는 보드 세트로, 각 보드에는 일반 회로의 완전한 모듈이 조립됩니다. 사용의 편의를 위해 각 보드에는 이름과 설명이 있습니다. 각 보드는 접거나(작업 완료 시 작업 영역의 공간을 절약하기 위해) 펼칠 수도 있습니다. 보드 이름에 빨간색 표시가 있으면 보드 다이어그램에 오류가 있음을 나타냅니다.

작업 영역의 오른쪽에는 요소 라이브러리가 있습니다. 간단히 끌어서 놓으면 요소가 다이어그램으로 전송됩니다. 요소를 두 번 클릭하면 해당 요소에 대한 정보가 표시됩니다.

오늘 사용할 수 있는 블록 목록은 다음과 같습니다.

기본 요소



특수 블록

트리거



타이머


카운터


수학



대수학




비교

COM 포트

보내다
Send변수
수신변수

스위치


모터

서보 모터
스텝모터

실시간 시계


디스플레이

HD44780 칩에 디스플레이
HD44780 I2C 칩의 디스플레이 백라이트

문자열

문자열 추가

센서



SD 카드

SD 카드에 변수 쓰기
SD 카드에서 파일 업로드

유형 변환

문자열 변환

확장 칩

터미널 확장기 74HC595

비트 연산

인코더
디코더
비트 읽기
조금 녹음하다

여러 가지 잡다한

매트릭스 키보드
압전역학

EEPROM에 쓰기
EEPROM에서 읽기

연락

SendVariableFrom통신
ResiveVariableFrom통신
웹서버페이지
웹클라이언트

기본 블록

연락하다
코일
바운스 방지
앞 가장자리 선택

특수 릴레이

쌍안정 릴레이
타임 릴레이
발전기
비교 릴레이

대수학


코사인
탠 껍질
ABS
최대
최소
S.Q.
SQRT
포로
무작위의

아날로그 블록

스케일링
수학
카운터
아날로그 스위치
다대일 스위치
일대다 스위치
아날로그 컨트롤러 입력
아날로그 컨트롤러 출력
아날로그 커넥터 입력
아날로그 커넥터 출력
속도계

통신 포트

ComPort로 전송
통신 포트를 통해 변수 전송
Comm 포트를 통해 변수 수신

모터

서보 모터
스테퍼 모터

실시간 시계

데이터를 얻으려면
경보
시간 설정

디스플레이

칩 HD44780 디스플레이
HD4480 I2C 칩의 디스플레이 백라이트 제어 장치
7세그먼트 표시자 디코딩 블록

문자열

문자열 추가

센서

초음파 거리계 HC-SR04
온도 및 습도 센서 DHT11 (DHT21, DHT22)
온도 센서 DS18x2x
IR 반응형
BMP-085

SD 카드

SD 카드에 변수 쓰기
SD 카드에서 파일 업로드

유형 변환

문자열 변환
부동 소수점을 정수로 변환

확장 칩

터미널 확장기 74HC595

비트 연산

인코더
디코더
비트 읽기
조금 녹음하다

여러 가지 잡다한

매트릭스 키보드
압전역학

EEPROM에 쓰기
EEPROM에서 읽기

연락

통신을 통해 변수를 보내는 블록
통신을 통해 변수 수신
웹 서버 페이지
웹 클라이언트

현재 3축 자이로스코프, 조도계 및 기타 센서와 함께 작동하도록 기능 블록이 개발되고 있습니다. Bluetooth, 라디오 및 RS-485 인터페이스를 통해 데이터 교환을 구성하는 작업도 진행 중입니다. 향후 계획에서는. 개인용 컴퓨터 또는 그래픽 디스플레이에서 FLProg 프로그램으로 개발된 시스템의 인터페이스를 구성하기 위한 SCADA 시스템 개발.

프로그램이 지원하는 주변 장비 목록은 프로젝트 웹사이트 링크에서 확인할 수 있습니다.

일부 장비의 경우 웹사이트 섹션에 프로그램에서 해당 장비를 사용하는 방법을 더 쉽게 이해할 수 있는 리뷰 기사가 포함되어 있습니다.

작업 영역 상단에는 태그(변수 및 입력/출력)(FBD) 또는 설치된 장비(LAD) 목록이 있습니다. 태그나 장비는 드래그 앤 드롭만으로 다이어그램으로 전송됩니다.

프로젝트 작업이 완료되면 컴파일됩니다. 컴파일 후에는 "Arduino 1.5.7" 프로그램이 로드된 프로젝트 스케치와 함께 자동으로 열립니다. "Arduino IDE 1.5.7" 프로그램에서는 컨트롤러가 연결된 COM 포트 번호를 지정하고 해당 유형을 선택한 다음 컨트롤러에 스케치를 업로드해야 합니다. Arduino.ru 웹사이트에서 "Arduino IDE 1.5.7" 프로그램에 대한 자세한 내용을 읽을 수 있습니다.

FLProg는 어디서 다운로드할 수 있나요?

프로젝트의 일환으로 웹사이트 http://flprog.ru가 있습니다. 사이트의 주요 임무는 사용자가 다운로드할 수 있도록 하는 것입니다. 최신 버전프로그램을 통해 혁신과 변화에 대해 알아보세요.

사이트에 등록하지 않고도 프로그램을 다운로드할 수 있지만 등록된 사용자의 경우 사이트 기능이 눈에 띄게 확장됩니다. 등록은 매우 간단하며 확인만 필요합니다. 이메일. 다른 데이터를 입력할 필요가 없습니다.

프로그램 다운로드 페이지에는 설치 프로그램과 설치가 필요 없는 휴대용 버전이라는 두 가지 버전이 항상 제공됩니다. 가능하다면 이전 버전을 업데이트할 수 있는 훨씬 작은 업데이트 파일도 게시합니다.

또한 다운로드 페이지에서 이 버전의 혁신 사항 및 버그 수정 목록을 확인하고 이전 버전 아카이브로 이동할 수 있습니다.

최근 몇 년 동안 프로그래밍 및 로봇 공학 클럽은 매우 인기가 높아졌으며 심지어 학생들도 접근할 수 있게 되었습니다. 초등학교. 이는 대기업에서 적극적으로 사용하는 그래픽 프로그래밍 환경을 사용했기 때문에 가능했습니다. 그래픽 프로그래밍 환경에 대해 이야기하기 위해 가장 인기 있는 세 가지 환경을 선택했습니다.

Visuino는 Arduino 호환 Controllino 산업용 컨트롤러(PLC)로 구동되는 무료 그래픽 환경입니다. 복잡한 자동화 시스템과 IoT(사물인터넷) 솔루션 구축이 가능하며, 이는 시각적 블록을 이동하고 연결하는 것만으로도 가능합니다. 소프트웨어 환경은 산업용 컨트롤러용 코드를 자동으로 생성합니다.

그래서 무엇을 해야 할까요? 컴포넌트 패널에서 컴포넌트(모듈)을 선택하여 디자인 영역으로 이동시킵니다. 그런 다음 연결하고 속성을 구성해야 합니다. 이는 Object Inspector를 사용하여 수행됩니다.

Visuino의 장점에는 수학 및 논리 기능, 서보, 디스플레이, 인터넷 등을 위한 대규모 구성 요소 세트가 포함됩니다.

PLC가 프로그래밍되면 그래픽 환경에 프롬프트가 표시됩니다. 저렴한 방법컨트롤러에 대한 연결. 직렬 포트, 이더넷, Wi-Fi 또는 GSM이 될 수 있습니다.

마지막으로 프로젝트가 준비되었습니다. 모든 컨트롤러가 등록되었으며 모든 것이 작동합니다. 이제 다음 위치에 있는 Arduino 로고를 클릭하여 상단 패널, Visuino가 Arduino용 코드를 생성하고 개발 환경(Arduino IDE)을 열도록 강제하면 이를 통해 이미 코드를 컴파일하고 PLC에 로드할 수 있습니다.

조언. 설치된 보드가 Arduino와 일치하지 않는 경우 보드 선택 명령을 사용하여 변경할 수 있습니다.

이 그래픽 프로그래밍 환경은 MIT 미디어 랩 직원 그룹이 모든 사람이 액세스할 수 있는 프로그래밍 언어를 개발하기로 결정한 2003년에 만들어졌습니다. 그 결과, 얼마 후 스크래치가 대중에게 소개되었습니다.

무엇보다도 아마도 레고처럼 보일 것입니다. 최소한 원칙은 동일합니다. 프로그램이 다채롭고 밝은 부분으로 조립되는 객체 지향 환경입니다. 이러한 부분은 이동, 수정 및 다양한 방식으로 상호 작용할 수 있습니다. 스크래치의 기본은 센서, 변수, 움직임, 소리, 연산자, 모양, 펜, 컨트롤 등의 명령 블록입니다. 그래픽 편집기어떤 물체라도 그릴 수 있게 해줍니다. 스크래치가 탄생한 지 5년이 채 지나지 않아 Arduino PLC를 프로그래밍할 수 있는 Arduino용 스크래치 프로젝트(S4A로 약칭)가 등장했습니다.

시스템의 장점은 러시아화되었으며 완전히 현지화되어 있다는 점입니다. 누구나 많은 데이터를 찾을 수 있습니다. 또한 아직 읽기에 자신감이 없는 초등학생도 이 그래픽 환경에서 작업할 수 있습니다.

조언. 스크래치 초보자를 위한 특별한 리소스가 있습니다: https://scratch-ru.info.

이미 스크래치를 완전히 마스터했지만 Arduino 호환 보드가 프로그래밍된 Wiring에 아직 도달하지 않은 경우 Java로 작성된 ArduBlock 도구를 권장할 때입니다. 특히 로봇공학에 관심이 있는 분들에게 좋습니다.

차이점이 뭐야? 사실 스크래치는 Arduino를 플래시하는 방법을 모르고 USB를 통해서만 PLC를 제어합니다. 따라서 Arduino는 컴퓨터에 의존하기 때문에 스스로 작동할 수 없습니다.

실제로 ArduBloсk는 어린이용 Scratch와 완전 전문적인 Visuino 사이의 중간 단계입니다. Visuino와 마찬가지로 Arduino 호환 컨트롤러를 플래시할 수 있는 기능이 있기 때문입니다.

조언. PC에 Java 시스템을 설치하는 것을 잊지 마십시오. 시간이 많이 걸리지 않습니다.

따라서 더 많은 그래픽 환경이 좋고 다릅니다. Arduino가 당신과 함께 하길 바랍니다.

사진: 제조 회사, pixabay.com 프로그래밍에 관심이 있습니까? 예, 저는 프로그래머입니다 예, 이것은 매우 흥미로운 일입니다. 저는 관심이 없지만 제 아이는 관심이 없습니다. 아니요, 저는 이것에 관심이 없습니다. 결과 보기 로드 중... 또한 읽어 보세요: Arduino: 회전하는 방법 LCD 모니터를 온도계로

라즈베리 파이 3 모델 B+ 미니 PC가 스마트 홈의 중심이 될 수 있다



친구에게 말하다