디자인에 Arduino를 사용하지 않는 몇 가지 이유 Arduino Uno의 특이한 프로젝트 초보자를 위한 Arduino uno r3 프로젝트

이 기사에서 나는 완전한 것을 수집하기로 결정했습니다. 단계별 가이드아두이노 초보자를 위한. Arduino가 무엇인지, 학습을 시작하려면 무엇이 필요한지, 다운로드 위치와 프로그래밍 환경을 설치 및 구성하는 방법, 작동 방식과 프로그래밍 언어를 사용하는 방법 등 본격적인 Arduino를 만드는 데 필요한 많은 내용을 살펴보겠습니다. 이러한 마이크로 컨트롤러 제품군을 기반으로 하는 복잡한 장치입니다.

여기서는 Arduino 작업의 원리를 이해할 수 있도록 요약된 최소값을 제공하려고 노력할 것입니다. 프로그래밍 가능한 마이크로 컨트롤러의 세계에 더욱 완벽하게 몰입하려면 이 사이트의 다른 섹션과 기사를 주의 깊게 살펴보세요. 일부 측면에 대한 더 자세한 연구를 위해 이 사이트의 다른 자료에 대한 링크를 남겨 둘 것입니다.

Arduino는 무엇이며 용도는 무엇입니까?

아두이노는 전자 디자이너, 누구나 다양한 전기 기계 장치를 만들 수 있습니다. Arduino는 소프트웨어와 하드웨어로 구성됩니다. 소프트웨어 부분개발 환경(펌웨어 작성 및 디버깅을 위한 프로그램), 이미 만들어진 편리한 라이브러리, 단순화된 프로그래밍 언어가 포함되어 있습니다. 하드웨어에는 대규모 마이크로 컨트롤러 라인이 포함되어 있습니다. 기성 모듈그들을 위해. 덕분에 Arduino 작업이 매우 쉬워졌습니다!

Arduino의 도움으로 프로그래밍, 전기 공학 및 기계를 배울 수 있습니다. 그러나 이것은 단순한 교육 생성자가 아닙니다. 이를 바탕으로 정말 유용한 장치를 만들 수 있습니다.
간단한 깜박이는 조명, 기상 관측소, 자동화 시스템에서 시작하여 다음으로 끝납니다. 똑똑한 집, CNC 기계 및 무인 항공기. 구현에 대한 지침과 아이디어가 엄청나게 많기 때문에 가능성은 상상력에 의해 제한되지 않습니다.

Arduino 스타터 키트

Arduino 학습을 시작하려면 마이크로 컨트롤러 보드 자체와 추가 부품을 구입해야 합니다. Arduino 스타터 키트를 구입하는 것이 가장 좋지만 필요한 모든 것을 직접 선택할 수도 있습니다. 세트를 선택하는 것이 더 쉽고 가격도 저렴할 때가 많습니다. 다음은 반드시 공부해야 할 최고의 세트와 개별 부품에 대한 링크입니다.

초보자를 위한 기본 Arduino 키트:구입하다
교육 및 첫 번째 프로젝트를 위한 대형 세트:구입하다
추가 센서 및 모듈 세트:구입하다
Arduino Uno는 이 라인에서 가장 기본적이고 편리한 모델입니다.구입하다
쉬운 학습과 프로토타이핑을 위한 무납땜 브레드보드:구입하다
편리한 커넥터가 있는 전선 세트:구입하다
LED 세트:구입하다
저항기 키트:구입하다
버튼:구입하다
전위차계:구입하다

Arduino IDE 개발 환경

펌웨어를 작성, 디버깅 및 다운로드하려면 다운로드 및 설치가 필요합니다. 아두이노 IDE. 그것은 매우 간단하고 편리한 프로그램. 내 웹 사이트에서 개발 환경을 다운로드, 설치 및 구성하는 과정을 이미 설명했습니다. 그래서 여기에 링크를 남겨두겠습니다. 최신 버전프로그램과

버전 윈도우 맥 OS X 리눅스
1.8.2

Arduino 프로그래밍 언어

손에 마이크로컨트롤러 보드가 있고 컴퓨터에 개발 환경이 설치되어 있으면 첫 번째 스케치(펌웨어) 작성을 시작할 수 있습니다. 그러기 위해서는 프로그래밍 언어에 익숙해져야 합니다.

Arduino 프로그래밍은 사전 정의된 기능을 갖춘 단순화된 버전의 C++ 언어를 사용합니다. 다른 C 계열 프로그래밍 언어와 마찬가지로 코드 작성에도 여러 가지 규칙이 있습니다. 가장 기본적인 사항은 다음과 같습니다.

  • 각 명령 뒤에는 세미콜론(;)이 와야 합니다.
  • 함수를 선언하기 전에 함수가 반환하는 데이터 형식을 지정해야 하며, 함수가 값을 반환하지 않는 경우에는 void를 지정해야 합니다.
  • 변수를 선언하기 전에 데이터 유형을 지정하는 것도 필요합니다.
  • 주석은 다음과 같이 지정됩니다: // 인라인 및 /* 블록 */

데이터 유형, 함수, 변수, 연산자 및 언어 구성에 대한 자세한 내용은 페이지에서 확인할 수 있습니다. 이 모든 정보를 외우거나 기억할 필요는 없습니다. 언제든지 참고서로 가서 특정 함수의 구문을 살펴볼 수 있습니다.

모든 Arduino 펌웨어에는 최소 2개의 기능이 포함되어 있어야 합니다. setup()과 loop()가 그것이다.

설정 기능

모든 것이 작동하려면 스케치를 작성해야 합니다. 버튼을 누른 후 LED가 켜지고 다음 버튼을 누르면 꺼지도록 합시다. 첫 번째 스케치는 다음과 같습니다.

// 연결된 장치의 핀이 있는 변수 int switchPin = 8; int ledPin = 11; // 버튼과 LED의 상태를 저장하는 변수 boolean lastButton = LOW; 부울 전류 버튼 = LOW; 부울 ledOn = false; void setup() ( pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); ) // 디바운싱을 위한 함수 boolean debounse(boolean last) ( boolean current = digitalRead(switchPin); if(last != current) ( 지연 ( 5); current = digitalRead(switchPin); ) 전류 반환; ) void loop() ( currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) ( ledOn = !ledOn; ) lastButton = currentButton ; digitalWrite(ledPin, ledOn); )

// 연결된 장치의 핀이 있는 변수

int 스위치핀 = 8;

int ledPin = 11;

// 버튼과 LED의 상태를 저장하는 변수

부울 lastButton = LOW;

부울 currentButton = LOW ;

부울 ledOn = false ;

무효 설정() (

pinMode(switchPin, INPUT);

pinMode(led핀, OUTPUT);

// 디바운싱을 위한 함수

부울 디바운스(부울 마지막 ) (

부울 전류 = digitalRead(switchPin);

if (마지막 != 현재 ) (

지연(5);

현재 = digitalRead(switchPin);

현재 반환;

무효 루프() (

currentButton = debounse(lastButton);

if (lastButton == LOW && currentButton == HIGH ) (

주도온 = ! 주도;

lastButton = 현재버튼 ;

digitalWrite(ledPin, ledOn);

이 스케치에서 내가 만든 추가 기능디바운스는 접촉 바운스를 억제합니다. 내 웹사이트에 연락처 반송에 대한 정보가 있습니다. 이 자료를 꼭 확인해 보세요.

PWM 아두이노

펄스 폭 변조(PWM)는 신호의 듀티 사이클을 사용하여 전압을 제어하는 ​​프로세스입니다. 즉, PWM을 이용하면 부하를 원활하게 제어할 수 있다. 예를 들어, LED의 밝기를 부드럽게 변경할 수 있지만 이러한 밝기 변화는 전압을 낮추는 것이 아니라 낮은 신호의 간격을 늘려서 얻어집니다. PWM의 작동 원리는 다음 다이어그램에 나와 있습니다.

LED에 PWM을 적용하면 LED가 빠르게 켜지고 꺼지기 시작합니다. 인간의 눈은 주파수가 너무 높기 때문에 이것을 볼 수 없습니다. 하지만 동영상을 촬영할 때 LED가 켜지지 않는 순간을 보게 될 가능성이 높습니다. 이는 카메라 프레임 속도가 PWM 주파수의 배수가 아닌 경우에 발생합니다.

Arduino에는 펄스 폭 변조기가 내장되어 있습니다. 마이크로 컨트롤러가 지원하는 핀에서만 PWM을 사용할 수 있습니다. 예를 들어 Arduino Uno와 Nano에는 6개의 PWM 핀이 있습니다(D3, D5, D6, D9, D10 및 D11 핀). 핀은 다른 보드에 따라 다를 수 있습니다. 관심 있는 보드에 대한 설명을 찾을 수 있습니다.

Arduino에서 PWM을 사용하려면 핀 번호와 0~255 사이의 PWM 값을 인수로 사용하는 함수가 있습니다. 0은 높은 신호로 0% 채우기이고 255는 100%입니다. 예시로 간단한 스케치를 작성해보겠습니다. LED가 부드럽게 켜지도록 하고, 1초 정도 기다렸다가 부드럽게 사라지는 식으로 무한정 계속해 보겠습니다. 다음은 이 기능을 사용하는 예입니다.

// LED는 11번 핀에 연결됩니다. int ledPin = 11; void setup() ( pinMode(ledPin, OUTPUT); ) void loop() ( for (int i = 0; i< 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i >0; i--) ( 아날로그Write(ledPin, i); 지연(5); ) )

// LED가 핀 11에 연결됨

int ledPin = 11;

무효 설정() (

pinMode(led핀, OUTPUT);

무효 루프() (

for (int i = 0 ; i< 255 ; i ++ ) {

AnalogWrite(ledPin, i);

지연(5);

지연(1000);

for (int i = 255; i > 0; i -- ) (

아두이노를 선택하는 방법이 질문은 처음으로 Arduino를 사용하여 프로젝트를 만들기로 결정한 모든 사람에게 발생합니다. 우리는 센서, 센서, 모듈 등 필요한 세부 사항을 결정했으며 다양한 Arduino 보드에 직면했습니다. 또한 각 보드에는 2~3개의 아날로그도 있습니다. 어떤 사람들은 더 비싸고 강력할수록 더 좋다고 생각하고 Arduino Due와 같은 진지한 솔루션을 구입한 다음 모든 스케치가 작동하는 것은 아니며 이 솔루션의 모든 기능에 대처하기가 어렵다는 것을 깨닫습니다. 장치 자체. 다른 사람들은 반대 경로를 택하고 리소스 제약(메모리, 핀, 포트, 클럭 주파수, 영양). 그 황금률을 찾는 방법은 무엇입니까? 알아내도록 노력해 봅시다...

지불하다 찬성 마이너스

아두이노 우노

ProMini 및 Nano와 같은 기능
  • 보드는 Arduino 제품군에서 가장 일반적이며 이에 대한 레슨이 가장 많이 생성되었습니다.
  • DIP 패널이 있어 마이크로컨트롤러를 변경할 수 있습니다.
  • Arduino ProMini, Nano 및 Micro와 동일한 기능으로 보드 크기가 몇 배 더 커졌습니다.

아두이노 메가 2560

  • Arduino UNO용으로 제작된 쉴드가 적합합니다.
  • 최대 핀 수
  • 모든 유형의 메모리 용량 확장
  • 와이어를 사용하지 않으면 브레드보드에 설치할 수 없습니다.

아두이노 레오나르도

MICRO와 같은 기능

  • Arduino UNO용으로 제작된 쉴드가 적합합니다.
  • 이 보드는 Arduino UNO의 향상된 버전이며 대부분의 스케치와 함께 작동합니다.
  • 와이어를 사용하지 않으면 브레드보드에 설치할 수 없습니다.
  • Arduino Uno용으로 작성된 일부 스케치는 Leonardo에서 작동하지 않습니다. 다양한 마이크로컨트롤러가 사용됨

Arduino Due


  • Arduino Mega와 같은 핀 수
  • 두 개의 아날로그 출력이 구현되었습니다.
  • 클록 주파수가 84MHz인 강력한 32비트 마이크로컨트롤러를 사용합니다.
  • 와이어를 사용하지 않으면 브레드보드에 설치할 수 없습니다.
  • Arduino 제품군 전체에서 가장 큰 보드 크기
  • 모든 스케치가 이렇게 높은 클럭 주파수를 제공하는 것은 아닙니다.
  • 모든 것이 방패는 아닙니다 3.3V의 제한 전압으로 신호 전송을 제공합니다.
  • 공급 전압 3.3V

아두이노 프로미니 3.3V

Nano 및 UNO와 같은 기능


  • 마이크로컨트롤러의 가장 낮은 클록 주파수는 8MHz에 불과합니다.
  • 공급 전압 3.3V

아두이노 프로미니 5V

Nano 및 UNO와 같은 기능

  • 브레드보드에서 다이어그램을 디자인하는 데 사용할 수 있습니다.
  • Arduino 제품군 중 가장 작은 보드
  • 납땜된 핀 접점 없이 제공되므로 표면 장착 가능
  • Arduino UNO용으로 제작된 실드는 적합하지 않습니다.
  • 외부 프로그래머가 필요한 USB 컨트롤러가 없습니다.

아두이노 나노 V3.0

ProMini 및 UNO와 같은 기능


  • 브레드보드에서 다이어그램을 디자인하는 데 사용할 수 있습니다.
  • 보드는 Arduino ProMini보다 약간 크지만 USB 포트가 있어 외부 프로그래머를 사용할 필요가 없습니다.
  • Arduino UNO용으로 제작된 실드는 적합하지 않습니다.
  • 컨트롤러가 포함된 USB 포트의 도입으로 부트로더에 할당된 플래시 메모리의 양이 증가했습니다(Arduino ProMini와 비교).

아두이노 마이크로

Leonardo와 같은 기능


  • 브레드보드에서 다이어그램을 디자인하는 데 사용할 수 있습니다.
  • 보드는 Arduino Nano보다 약간 크지만 Arduino Leonardo의 모든 기능을 갖추고 있습니다.
  • 다양한 시뮬레이션이 가능합니다. USB 장치 PC에 연결했을 때 (보드가 마우스, 키보드 등으로 감지됩니다.)
  • Arduino UNO용으로 제작된 실드는 적합하지 않습니다.
  • USB 컨트롤러 기능을 마이크로컨트롤러로 이전하면 부트로더에 할당되는 플래시 메모리의 양이 늘어납니다.

Arduino 선택에 영향을 미치는 첫 번째 질문- 어떤 프로젝트를 구현하고 싶나요?

미리 만들어진 프로젝트를 만들고 싶다면, 다른 개발자가 친절하게 제공한 경우 논리적 구매는 프로젝트가 원래 생성된 Arduino가 됩니다. 현재 러시아 연방에서는 Arduino 보드가 Geduino 브랜드로 배포된다는 사실을 여기서 주목할 가치가 있습니다. . 즉, 올바르게 이해하셨듯이 공식 웹사이트에 명시된 대로 Arduino Micro는 이름과 로고가 Geduino Micro와 다릅니다(아날로그가 아님). 그리고 후자가 더 저렴하기 때문에 선택은 분명합니다.

아직 프로젝트를 결정하지 못했다면, 그러나 자신의 실험을 위해 Arduino를 구입하고 싶다면 중요한 요소는 수량입니다. 다양한 예네트워크에서 하나 또는 다른 Arduino 아래에 있습니다. 의심할 여지 없는 리더는 Arduino UNO입니다. , 이는 이 보드가 Arduino 라인에서 가장 오래되었지만 생성 이후 많은 변화를 겪었기 때문에 구식이 아니라는 사실로 설명됩니다.

자신만의 프로젝트를 구현할 계획이라면, 그렇다면 Arduino의 선택은 제거 방법으로 접근해야합니다. 프로젝트에 Arduino Uno용 핀이 있는 모듈이 있는 경우 Arduino ProMini 3.3V, Arduino ProMini 5V(Arduino Nano의 아날로그)를 제외하세요.) 그러나 USB 커넥터 유형, 크기가 약간 다를 수 있고 USB 컨트롤러, 마이크로 컨트롤러 케이스 유형, 보드 색상 등이 다를 수 있습니다. 여기서 이러한 보드는 동일한 시리즈의 동일한 ATmega 마이크로컨트롤러를 사용하기 때문에 원본의 기능(이름이 유사함)을 반복한다는 점을 이해해야 합니다. 보드 크기, 마이크로컨트롤러 하우징 및 유형 USB 포트, 사진에서 확인할 수 있습니다. 이름에 "CH340G"가 있다는 것은 USB 컨트롤러가 Arduino용 표준 FTDI 칩이 아니라 아날로그 CH340G라는 것을 의미합니다. 따라서 이러한 Arduino를 컴퓨터에 연결하려면 CH340G 칩용 드라이버를 설치해야 합니다. . 이 보드는 일회성 드라이버 설치가 불편하지 않고, 원래 이름보다 가격이 저렴하다는 장점이 있다고 생각하는 사람들에게 적합합니다.

Arduino는 모든 디자인 애호가들 사이에서 매우 인기가 있습니다. 들어본 적이 없는 사람들에게도 소개되어야 합니다.

아두이노란 무엇인가?

Arduino를 어떻게 간략하게 설명할 수 있나요? 최적의 말로될 것입니다: Arduino는 다양한 것을 만들 수 있는 도구입니다. 전자 기기. 본질적으로 이는 진정한 범용 하드웨어 컴퓨팅 플랫폼입니다. 구축하는 데 사용할 수 있습니다. 간단한 회로, 그리고 다소 복잡한 프로젝트의 구현을 위해.

설계자는 입출력 보드인 하드웨어를 기반으로 합니다. 보드 프로그래밍에는 C/C++ 기반의 언어가 사용된다. 이를 각각 처리/배선이라고 합니다. 그룹 C에서는 극도의 단순성을 물려받았는데, 그 덕분에 누구라도 매우 빨리 익힐 수 있고 실제로 지식을 적용하는 것은 그다지 중요한 문제가 아닙니다. 작업의 용이성을 이해하기 위해 Arduino는 초보 마법사 디자이너를 위한 것이라고 흔히 말합니다. 어린이도 Arduino 보드를 이해할 수 있습니다.

그것에 대해 무엇을 수집할 수 있나요?

Arduino의 응용 분야는 매우 다양합니다. 기사 끝 부분에서 권장되는 가장 간단한 예와 조작기, 로봇 또는 생산 기계를 포함한 매우 복잡한 메커니즘 모두에 사용할 수 있습니다. 일부 장인은 이러한 시스템을 사용하여 태블릿, 전화기, 가정 감시 및 보안 시스템, 스마트 홈 시스템 또는 단순히 컴퓨터를 만듭니다. 경험이 없는 사람도 시작할 수 있는 초보자를 위한 Arduino 프로젝트는 기사 마지막 부분에 있습니다. 원시 시스템을 만드는 데에도 사용할 수 있습니다. 가상 현실. Arduino 프로그래밍이 제공하는 다양한 하드웨어와 기능 덕분입니다.

구성품은 어디서 구입할 수 있나요?

이탈리아에서 제작된 부품은 정품으로 간주됩니다. 그러나 그러한 키트의 가격은 낮지 않습니다. 따라서 많은 회사 또는 개인이 농담으로 생산 복제품이라고 부르는 Arduino 호환 장치 및 구성 요소의 장인적 방법을 만들고 있습니다. 그러한 클론을 구입할 때 그것이 효과가 있다고 확신할 수는 없지만 돈을 절약하려는 욕구는 큰 타격을 입습니다.

구성 요소는 키트의 일부로 구매하거나 별도로 구매할 수 있습니다. 자동차, 헬리콥터를 조립할 수 있도록 미리 준비된 키트도 있습니다. 다양한 방식통제 또는 선박. 위 그림과 같은 세트는 중국산이며 가격은 49달러입니다.

장비에 대한 추가 정보

Arduino 보드는 간단합니다. AVR 마이크로컨트롤러, 부트로더로 플래시되었으며 필요한 최소 USB-UART 포트가 있습니다. 다른 중요한 구성요소도 있지만 기사 범위 내에서는 이 두 구성요소에만 초점을 맞추는 것이 좋습니다.

먼저, 개발된 프로그램이 위치한 단일 회로에 구축된 메커니즘인 마이크로 컨트롤러에 대해 설명합니다. 프로그램은 버튼 누르기, 생성 구성 요소(저항기, 트랜지스터, 센서 등)로부터 신호 수신 등을 통해 영향을 받을 수 있습니다. 또한 센서의 목적은 조명, 가속도, 온도, 거리 등 매우 다를 수 있습니다. 압력, 장애물 등. LED 및 트위터부터 그래픽 디스플레이와 같은 복잡한 장치에 이르기까지 간단한 부품을 디스플레이 장치로 사용할 수 있습니다. 고려되는 품질은 모터, 밸브, 계전기, 서보, 전자석 등이며 나열하는 데 매우 오랜 시간이 걸립니다. MK는 연결 와이어를 사용하여 이러한 목록 중 일부와 직접 작동합니다. 일부 메커니즘에는 어댑터가 필요합니다. 하지만 일단 디자인을 시작하면, 자신을 찢기 어려울 것입니다. 이제 Arduino 프로그래밍에 대해 이야기하겠습니다.

보드 프로그래밍 프로세스에 대해 자세히 알아보기

이미 마이크로컨트롤러에서 실행할 준비가 되어 있는 프로그램을 펌웨어라고 합니다. 하나의 프로젝트 또는 Arduino 프로젝트가 있을 수 있으므로 각 펌웨어를 별도의 폴더에 저장하여 찾는 프로세스 속도를 높이는 것이 좋습니다. 필요한 파일. 특수 장치인 프로그래머를 사용하여 MK 크리스탈에 플래시됩니다. 그리고 Arduino에는 한 가지 장점이 있습니다. 프로그래머가 필요하지 않습니다. 초보자를 위한 Arduino 프로그래밍이 어렵지 않도록 모든 작업이 완료되었습니다. 작성된 코드는 USB 케이블을 통해 MK에 로드될 수 있습니다. 이 이점은 사전 구축된 일부 프로그래머가 아니라 특수 펌웨어인 부트로더를 통해 달성됩니다. 부트로더는 연결 후 바로 시작되어 명령이 있는지, 크리스탈을 플래시할지, 아두이노 프로젝트가 있는지를 듣는 특수 프로그램이다. 부트로더를 사용하면 몇 가지 매우 매력적인 이점이 있습니다.

  1. 추가 시간 비용이 필요하지 않은 하나의 통신 채널만 사용합니다. 따라서 Arduino 프로젝트에서는 다양한 전선을 연결할 필요가 없으며 전선을 사용할 때 혼란이 생길 ​​수 있습니다. 성공적인 작동을 위해서는 하나의 USB 케이블로 충분합니다.
  2. 구부러진 손으로부터 보호합니다. 직접 펌웨어를 사용하여 마이크로 컨트롤러를 브릭 상태로 만드는 것은 매우 쉬우므로 열심히 일할 필요가 없습니다. 부트로더로 작업할 때 잠재적으로 위험한 설정에 액세스할 수 없습니다(물론 개발 프로그램의 도움으로 그렇지 않으면 모든 것이 깨질 수 있습니다). 따라서 초보자를 위한 Arduino는 이해하기 쉽고 편리하다는 관점뿐만 아니라 함께 일하는 사람의 경험 부족으로 인해 발생하는 원치 않는 재정적 비용을 피할 수 있도록 고안되었습니다.

시작해야 할 프로젝트

키트, 납땜 인두, 로진 및 납땜을 구입한 후 매우 복잡한 구조를 즉시 조각해서는 안됩니다. 물론 만들 수는 있지만 복잡한 프로젝트에서는 초보자가 Arduino에서 성공할 확률이 상당히 낮습니다. 기술을 훈련하고 향상시키기 위해 Arduino의 상호 작용과 작동을 이해하는 데 도움이 되는 몇 가지 간단한 아이디어를 구현해 볼 수 있습니다. 초보자를 위한 Arduino 작업의 첫 번째 단계로 다음을 고려하도록 조언할 수 있습니다.

  1. Arduino 덕분에 작동하는 것을 만드십시오.
  2. Arduino에 별도의 버튼을 연결합니다. 이 경우에는 1번 포인트부터 버튼으로 LED의 발광 정도를 조절할 수 있도록 만들어주시면 됩니다.
  3. 전위차계 연결.
  4. 서보 드라이브 제어.
  5. 3색 LED를 연결하여 작업합니다.
  6. 압전소자를 연결합니다.
  7. 포토레지스터를 연결합니다.
  8. 모션 센서를 연결하고 작동에 대한 신호를 보냅니다.
  9. 습도 또는 온도 센서를 연결합니다.

미래를 위한 프로젝트

개별 LED를 연결하기 위해 Arduino에 관심이 없을 것 같습니다. 아마도 당신은 자신의 자동차를 만들거나 비행 턴테이블을 만들 수 있는 기회에 매력을 느낄 것입니다. 이러한 프로젝트는 구현하기 어렵고 많은 시간과 인내가 필요하지만 일단 완료되면 원하는 것을 얻을 수 있습니다. 즉, 초보자를 위한 귀중한 Arduino 설계 경험입니다.

Arduino의 지연은 매우 큰 역할을 합니다. 이것이 없으면 지정된 시간 후에 LED를 깜박이는 가장 간단한 Blink 예도 작동할 수 없습니다. 그러나 대부분의 초보 프로그래머는 시간 지연에 대해 거의 알지 못하고 이 명령의 부작용을 모르고 Arduino 지연만 사용합니다. 이 글에서는 타이밍 기능과 이를 Arduino IDE에서 사용하는 방법에 대해 자세히 설명하겠습니다.

Arduino에는 시간 및 일시 중지 작업을 담당하는 여러 가지 명령이 있습니다.

  • 지연()
  • 지연마이크로초()
  • 밀리초()
  • 마이크로()

정확도가 다르며 코드를 작성할 때 고려해야 할 고유한 특성이 있습니다.

Arduino 지연 기능 사용

통사론

Arduino 지연은 가장 간단한 명령이며 초보자가 가장 자주 사용합니다. 본질적으로 이는 괄호 안에 표시된 밀리초 동안 프로그램을 일시 중지하는 지연입니다. (1초는 1000밀리초입니다.) 최대값은 4294967295ms일 수 있으며 이는 대략 50일과 같습니다. 이 명령이 어떻게 작동하는지 명확하게 보여주는 간단한 예를 살펴보겠습니다.

Void setup() ( pinMode(13, OUTPUT); ) void loop() ( digitalWrite(13, HIGH); // 핀 13에 높은 신호를 보냅니다. 지연(10000); // 10000ms 또는 10초 동안 일시 중지 digitalWrite13, LOW) ; // 13번 핀에 로우 신호를 보냅니다. Delay(10000); // 10000ms 또는 10초 동안 일시 중지)

방법에서 설정핀 13이 출력으로 사용되도록 지정합니다. 프로그램의 주요 부분에서는 높은 신호가 먼저 핀으로 전송된 다음 10초 지연됩니다. 이 기간 동안 프로그램은 중단된 것으로 보인다. 그런 다음 낮은 신호가 주어지고 다시 지연이 발생하고 모든 것이 다시 시작됩니다. 결과적으로 핀에 5V 또는 0이 교대로 공급된다는 것을 알 수 있습니다.

지연을 사용하여 일시 중지하는 동안 프로그램 작업이 일시 중지되고 애플리케이션이 센서로부터 어떠한 데이터도 수신하지 않는다는 점을 분명히 이해해야 합니다. 이것이 아두이노 지연 기능을 사용할 때의 가장 큰 단점이다. 인터럽트를 사용하여 이 제한을 해결할 수 있지만 이에 대해서는 별도의 기사에서 설명하겠습니다.

LED가 깜박이는 지연의 예

지연 기능의 작동 방식을 설명하는 예제 회로입니다.
LED와 저항으로 회로를 만들 수 있습니다. 그런 다음 LED를 깜박이는 표준 예를 살펴보겠습니다. 이렇게 하려면 양극 접점이 있는 LED를 출력으로 지정한 핀에 연결해야 합니다. 약 220Ω의 저항을 통해 LED의 자유 다리를 접지에 연결합니다(약간 더 가능함). 내부를 보면 극성을 확인할 수 있습니다. 내부의 큰 컵은 마이너스에 연결되고 작은 다리는 플러스에 연결됩니다. 새 LED인 경우 리드 길이에 따라 극성을 결정할 수 있습니다. 긴 다리는 플러스이고 짧은 다리는 마이너스입니다.

지연마이크로초 함수

이 기능은 측정 단위가 밀리초가 아니라 마이크로초(1초에는 1,000,000마이크로초임)라는 점을 제외하면 지연과 완전히 유사합니다. 최대값은 16383이며 이는 16밀리초와 같습니다. 해상도는 4입니다. 즉, 숫자는 항상 4의 배수입니다. 예제 스니펫은 다음과 같습니다.

디지털쓰기(2, 높음); // 핀 2에 높은 신호를 보냅니다.layMicroseconds(16383); // 16383 µs 일시 정지 digitalWrite(2, LOW); // 핀 2에 낮은 신호를 보냅니다.layMicroseconds(16383); // 16383μs 동안 일시 중지

DelayMicroseconds의 문제는 지연의 문제와 정확히 동일합니다. 이러한 기능은 프로그램을 완전히 "중지"시키고 문자 그대로 잠시 동안 정지합니다. 현재로서는 포트 작업, 센서의 정보 읽기, 수학 연산 수행이 불가능합니다. 이 옵션은 깜박이는 조명에 적합하지만 숙련된 사용자는 이러한 실패가 필요하지 않기 때문에 대규모 프로젝트에는 사용하지 않습니다. 따라서 아래 설명된 기능을 사용하는 것이 훨씬 좋습니다.

지연 대신 Millis 함수

millis() 함수를 사용하면 Arduino에서 지연 없이 지연을 수행할 수 있으므로 이전 방법의 단점을 피할 수 있습니다. millis 매개변수의 최대값은 지연 함수의 최대값(4294967295ms 또는 50일)과 동일합니다.

Millis를 사용하면 전체 스케치의 실행을 중지하지 않고 단순히 Arduino가 일시 중지하려는 정확한 코드 블록을 "우회"해야 하는 시간을 나타냅니다. 지연 밀리초와 달리 자체적으로는 아무것도 중지하지 않습니다. 이 명령은 마이크로컨트롤러의 내장 타이머에서 시작 후 경과된 밀리초 수를 반환합니다. 루프를 호출할 때마다 우리는 코드의 마지막 호출 이후 경과한 시간을 직접 측정하고 시간 차이가 원하는 일시 중지보다 작으면 코드를 무시합니다. 차이가 필요한 일시 중지보다 커지자마자 코드를 실행하고 동일한 밀리초를 사용하여 현재 시간을 가져온 다음 이를 기억합니다. 이 시간이 새로운 시작점이 됩니다. 다음 주기에서는 이미 새 지점부터 카운트다운이 이루어지며, 밀리초와 이전에 저장한 값 사이의 새로운 차이가 원하는 일시 중지에 다시 도달할 때까지 코드를 다시 무시합니다.

Millis를 사용하면 지연 없는 지연에는 더 많은 코드가 필요하지만 이 기능을 사용하면 시스템을 중지하지 않고도 LED를 깜박이고 스케치를 일시 중지할 수 있습니다.

다음은 팀의 작업을 명확하게 보여주는 예입니다.

서명되지 않은 긴 타이밍; // 참조점을 저장하기 위한 변수 void setup() ( Serial.begin(9600); ) void loop() ( /* 이 시점에서 지연() 아날로그 실행이 시작됩니다. 현재 순간과 현재 순간의 차이를 계산합니다. 이전에 저장한 기준점 차이가 원하는 값보다 크면 코드를 실행합니다. 그렇지 않으면 아무 작업도 하지 않습니다. */ if (millis() - timing > 10000)( // 10000 대신 타이밍이 필요한 일시정지 값으로 대체합니다. = millis(); Serial.println ("10초") ; ) )

먼저 밀리초 수를 저장할 타이밍 변수를 소개합니다. 기본적으로 변수 값은 0입니다. 프로그램의 주요 부분에서 조건을 확인합니다. 마이크로컨트롤러 시작부터의 밀리초 수에서 타이밍 변수에 기록된 수를 뺀 값이 10000보다 크면 포트 모니터에 메시지를 출력하는 동작이 수행되고 현재 시간 값이 변수에 기록됩니다. 프로그램 실행 결과 10초마다 포트 모니터에 10초라는 메시지가 표시됩니다. 이 방법지연 없이 LED를 깜박일 수 있습니다.

지연 대신 마이크로 기능

이 기능은 지연 명령을 사용하지 않고 지연을 수행할 수도 있습니다. 밀리초와 정확히 동일하게 작동하지만 4μs의 분해능으로 밀리초가 아닌 마이크로초를 계산합니다. 최대값은 4294967295마이크로초 또는 70분입니다. 오버플로되면 값이 0으로 재설정되므로 잊지 마세요.

요약

Arduino 플랫폼은 프로젝트 지연을 구현하는 여러 가지 방법을 제공합니다. 지연을 사용하면 스케치 실행을 빠르게 일시 중지할 수 있지만 동시에 마이크로 컨트롤러의 작동도 차단됩니다. millis 명령을 사용하면 Arduino에서 지연 없이 작업을 수행할 수 있지만 프로그래밍이 조금 더 필요합니다. 선택하다 가장 좋은 방법프로젝트의 복잡성에 따라 다릅니다. 일반적으로 간단한 스케치 및 10초 미만의 지연이 있는 경우 지연이 사용됩니다. 작동 논리가 더 복잡하고 큰 지연이 필요한 경우 지연 대신 밀리초를 사용하는 것이 좋습니다.

초보자를 위한 Arduino의 아마추어 무선 실험이 포함된 일련의 기사 및 교육 다이어그램입니다. 이것은 납땜 인두 없이 에칭하는 일종의 아마추어 무선 건설 장난감입니다. 프린트 배선판전자 애호가라면 누구나 전문적인 프로토타입 제작과 전자 연구의 아마추어 실험 모두에 적합한 본격적인 작업 장치를 조립할 수 있습니다.


Arduino 보드는 주로 초보 무선 아마추어에게 마이크로 컨트롤러 프로그래밍의 기본 사항을 가르치고 심각한 이론 교육 없이 직접 손으로 마이크로 컨트롤러 장치를 만드는 데 사용됩니다. Arduino 개발 환경을 사용하면 미리 만들어진 프로그램 코드를 컴파일하고 보드 메모리에 로드할 수 있습니다. 게다가 코드 로딩도 매우 간단합니다.

초보자를 위한 Arduino 시작점

우선, 초보 전자 엔지니어가 Arduino 보드를 사용하려면 Arduino 개발 프로그램을 다운로드해야 합니다. 이 프로그램은 프로그램 코드로 작업할 수 있는 내장 텍스트 편집기, 메시지 영역, 텍스트 출력 창(콘솔)으로 구성됩니다. ), 자주 사용하는 명령과 여러 메뉴에 대한 버튼이 있는 도구 모음입니다. 프로그램을 다운로드하고 통신하기 위해 이 프로그램은 표준 USB 케이블을 통해 Arduino 보드에 연결됩니다.


다음으로 작성된 코드 아두이노 환경, 라고 불리는 스케치. 에 쓰여 있습니다 텍스트 에디터에는 텍스트 삽입/잘라내기, 바꾸기/검색을 위한 특수 도구가 있습니다. 저장하고 내보내는 동안 메시지 영역에 설명이 나타나고(바로 아래 초보자를 위한 첫 번째 강의 그림 참조) 오류도 표시될 수 있습니다. 콘솔에는 전체 오류 보고서 및 기타 내용을 포함한 Arduino 메시지가 표시됩니다. 유용한 정보. 도구 모음 버튼을 사용하면 스케치 확인 및 기록, 열기, 생성 및 저장, 직렬 버스 모니터링 열기 등을 수행할 수 있습니다.

그럼 첫 번째로 넘어가겠습니다. 아두이노 레슨초보 전자 엔지니어를 위한 회로도.

초보자의 편의를 위해 Arduino UNO 컨트롤러에는 이미 저항과 LED가 커넥터의 핀 13에 연결되어 있으므로 첫 번째 실험에서는 외부 무선 요소가 필요하지 않습니다.


코드를 로드함으로써 Arduino는 프로그램이 시스템 초기화에 참여할 수 있도록 합니다. 이를 위해 초기 부팅 시 실행될 마이크로컨트롤러 명령을 지정한 다음 완전히 잊어버립니다(즉, 이러한 명령은 시작 시 Arduino에 의해 한 번만 실행됩니다). 그리고 이를 위해 코드에서 이러한 명령이 저장되는 블록을 선택합니다. 무효 설정(), 또는 이 함수의 중괄호 안의 공간에서 프로그램 스케치를 참조하세요.

중괄호를 잊지 마세요!그 중 적어도 하나가 손실되면 전체 스케치가 완전히 작동하지 않게 됩니다. 하지만 추가로 괄호를 넣지 마세요. 이렇게 하면 오류가 발생할 수도 있습니다.

다운로드 코드:
001-1_mig-led.ino 파일에 설명과 설명이 포함된 스케치

기능 무효 루프()여기에 Arduino가 켜져 있는 동안 실행될 명령을 입력하는 곳입니다. 첫 번째 명령부터 실행을 시작한 Arduino는 맨 끝에 도달하고 즉시 처음으로 이동하여 동일한 시퀀스를 반복합니다. 보드에 전원이 공급되는 한 무한한 횟수로 계속됩니다. 핵심적으로 보이드 루프는 Arduino의 진입점인 주요 기능입니다.


기능 지연(1000)은 프로그램 처리를 1000밀리초 지연시킵니다. 모든 것은 영원한 순환 속에서 진행됩니다 고리().

Arduino의 첫 번째 프로그램을 이해한 후의 주요 결론은 다음과 같습니다. void 루프 및 void 설정 기능을 사용하여 지침을 마이크로컨트롤러에 전달합니다. setup 블록 내부에 있는 모든 항목은 한 번만 실행됩니다. 루프 모듈의 내용은 Arduino가 켜져 있는 동안 루프에서 반복됩니다.

이전 프로그램에서는 LED를 켜고 끄는 사이에 두 번째 지연이 있었습니다. 위에서 사용한 초보 Arduino 운영자의 가장 간단한 코드에는 큰 단점이 하나 있었습니다. LED를 1초 동안 켜고 끄는 사이에 일시 정지 기능을 사용했습니다. 지연()따라서 현재 컨트롤러는 주 기능에서 다른 명령을 실행할 수 없습니다. 고리(). 함수의 코드 수정 고리(), 아래 제시된 내용은 이 문제를 해결합니다.

값을 HIGH로 설정한 다음 LOW로 설정하는 대신, ledPin의 값을 가져와서 반전시킵니다. HIGH라면 LOW 등이 될 것이라고 가정해 보겠습니다.

두번째 LED 제어를 위한 Arduino 코드 옵션여기:

그런 다음 기능을 대체 할 수 있습니다 지연(). 대신에 이 기능을 사용하는 것이 더 좋습니다. 밀리초(). 프로그램이 시작된 이후 경과한 밀리초 수를 반환합니다. 프로그램 코드를 실행한 후 약 50일 후에 함수가 오버플로됩니다.

비슷한 기능은 마이크로(), 프로그램 코드가 시작된 이후 경과된 마이크로초 수를 반환합니다. 이 기능은 프로그램 작동 후 70분 후에 0으로 돌아갑니다.

물론 이렇게 하면 스케치에 몇 줄의 코드가 추가되지만 확실히 더 많은 작업을 수행할 수 있습니다. 숙련된 프로그래머 Arduino의 잠재력이 높아질 것입니다. 이렇게 하려면 millis 함수를 사용하는 방법만 배우면 됩니다.

가장 간단한 지연 기능은 전체 Arduino 프로그램의 실행을 일시 중지하여 이 기간 동안 어떤 작업도 수행할 수 없게 만든다는 점을 분명히 이해해야 합니다. 전체 프로그램을 일시 중지하는 대신 작업이 완료되기 전에 경과한 시간을 계산할 수 있습니다. 이는 millis() 함수를 사용하여 구현됩니다. 모든 것을 쉽게 이해할 수 있도록 시간 지연 없이 LED를 깜박이는 다음 옵션을 고려해 보겠습니다.

이 프로그램의 시작은 다른 표준 Arduino 스케치와 동일합니다.


안에 이 예에서는두 개의 Arduino 디지털 I/O 핀이 사용됩니다. LED는 OUTPUT으로 구성된 핀 8에 연결됩니다. 버튼은 INPUT으로 구성된 9개의 via에 연결됩니다. 버튼을 누르면 핀 9가 HIGH로 설정되고 프로그램은 핀 8을 HIGH로 전환하여 LED를 켭니다. 버튼을 놓으면 핀 9가 LOW로 재설정됩니다. 그런 다음 코드는 핀 8을 LOW로 전환하여 표시등을 끕니다.

5개의 LED를 제어하기 위해 Arduino 포트를 사용하여 다양한 조작을 사용하겠습니다. 이를 위해 데이터를 직접 작성합니다. 아두이노 포트, 이를 통해 하나의 기능만으로 LED 값을 설정할 수 있습니다.

Arduino UNO에는 3개의 포트가 있습니다. (8에서 13까지의 디지털 입력/출력); (아날로그 입력); (디지털 입력/출력 0~7)

각 포트는 세 개의 레지스터를 제어합니다. 첫 번째 DDR은 핀이 입력인지 출력인지를 지정합니다. 두 번째 PORT 레지스터를 사용하면 핀을 HIGH 또는 LOW로 설정할 수 있습니다. 세 번째를 사용하면 Arduino 다리가 입력으로 작동하는 경우 상태에 대한 정보를 읽을 수 있습니다.

회로를 작동하려면 포트 B를 사용합니다. 이를 위해 모든 포트 핀을 디지털 출력으로 설정합니다. 포트 B에는 다리가 6개만 있습니다. DDRB 레지스터 비트는 다음으로 설정되어야 합니다. "1" , 핀이 출력(OUTPUT)으로 사용될 경우, "0" , 핀을 입력(INPUT)으로 사용하려는 경우. 포트 비트는 0부터 7까지 번호가 지정되지만 항상 8핀이 모두 있는 것은 아닙니다.

의 말을하자: DDRB = B00111110;// 포트 B 핀 1~5를 출력으로 설정하고 0을 입력으로 설정합니다.

우리의 주행등 회로에서는 5개의 출력을 사용합니다. DDRB = B00011111; // 포트 B 핀 0~4를 출력으로 설정합니다.

포트 B에 데이터를 쓰려면 PORTB 레지스터를 사용해야 합니다. 제어 명령을 사용하여 첫 번째 LED를 켤 수 있습니다. 포트B = B00000001;, 첫 번째 및 네 번째 LED: 포트B = B00001001등등

두 개의 이진 시프트 연산자(왼쪽 및 오른쪽)가 있습니다. 왼쪽 시프트 연산자는 모든 데이터 비트를 왼쪽으로 이동시키고, 오른쪽 시프트 연산자는 데이터 비트를 오른쪽으로 이동시킵니다.

예:

varA = 1; // 00000001
varA = 1 varA = 1 varA = 1

이제 우리 프로그램의 소스 코드로 돌아가 보겠습니다. 두 가지 변수를 입력해야 합니다. 위아래위 또는 아래로 이동할 위치의 값과 두 번째 값이 포함됩니다. 사일론어떤 LED가 켜질지 알려줍니다.

구조적으로 이러한 LED는 공통 단자 1개와 색상별 단자 3개를 갖습니다. 아래는 공통 음극을 사용하여 RGB LED를 Arduino 보드에 연결하는 다이어그램입니다. 연결 회로에 사용되는 모든 저항은 220-270Ω의 동일한 값이어야 합니다.


공통 음극 연결의 경우 3색 LED의 연결 다이어그램은 공통 핀이 접지(장치의 GND)가 아닌 +5V 핀에 연결된다는 점을 제외하면 거의 동일합니다. 두 경우 모두 빨간색, 녹색 및 파란색 핀은 컨트롤러 디지털 출력 9, 10 및 11에 연결됩니다.

220Ω 저항을 통해 외부 LED를 Arduino UNO의 9번째 핀에 연결합니다. 후자의 밝기를 원활하게 제어하려면 다음 기능을 사용하십시오. 아날로그쓰기(). 컨트롤러 다리에 PWM 신호 출력을 제공합니다. 게다가 팀은 핀모드()전화할 필요가 없습니다. 왜냐하면 아날로그쓰기(핀, 값)두 개의 매개변수가 포함되어 있습니다: 핀 - 출력용 핀 번호, 값 - 0에서 255 사이의 값.

암호:
/*
LED의 페이드 효과를 구현하기 위한 AnalogWrite() 명령의 기능을 보여주는 초보 Arduino 개발자를 위한 튜토리얼 예제
*/
정수 밝기 = 0; // LED 밝기
int fadeAmount = 5; // 밝기 변경 단계
부호 없는 긴 currentTime;
부호 없는 긴 loopTime;

무효 설정() (
핀모드(9, 출력); // 핀 9를 출력으로 설정
현재시간 = 밀리스();
loopTime = 현재시간;
}

무효 루프() (
현재시간 = 밀리스();
if(현재시간 >= (loopTime + 20))(
아날로그쓰기(9, 밝기); // 핀 9에 값을 설정합니다.

밝기 = 밝기 + fadeAmount; // 다음 주기에 설정될 밝기 변경 단계를 추가합니다.

// 최소값에 도달한 경우 또는 최대. 값을 입력한 다음 반대 방향(역방향)으로 이동합니다.
if (밝기 == 0 || 밝기 == 255) (
fadeAmount = -fadeAmount ;
}
loopTime = 현재시간;
}
}

아두이노 작동인코더 포함

인코더는 회전 각도를 전기 신호로 변환하도록 설계되었습니다. 그것으로부터 우리는 위상이 반대인 두 개의 신호(A와 B)를 수신합니다. 이 튜토리얼에서는 회전당 12개의 위치(각 위치는 정확히 30°)가 있는 SparkFun COM-09117 인코더를 사용합니다. 아래 그림은 엔코더가 시계 방향 또는 시계 반대 방향으로 움직일 때 출력 A와 B가 어떻게 서로 의존하는지 명확하게 보여줍니다.

신호 A가 양수 레벨에서 0으로 바뀌면 출력 B의 값을 읽습니다. 이 시점에서 출력 B가 양수 상태에 있으면 엔코더는 시계 방향으로 움직이고 B가 0 레벨을 출력하면 인코더는 반대 방향으로 움직입니다. 두 출력을 모두 읽으면 마이크로컨트롤러를 사용하여 회전 방향을 계산할 수 있고 인코더의 A 출력에서 ​​펄스를 계산하여 회전 각도를 계산할 수 있습니다.

필요한 경우 주파수 계산을 사용하여 인코더가 얼마나 빨리 회전하는지 확인할 수 있습니다.

튜토리얼 예제에서는 인코더를 사용하여 PWM 출력을 사용하여 LED의 밝기를 조정합니다. 인코더에서 데이터를 읽으려면 이미 다룬 소프트웨어 타이머 기반 방법을 사용하겠습니다.

가장 빠른 경우 엔코더 손잡이를 1/10초에 180° 회전할 수 있다는 사실을 고려하면 이는 1/10초에 6펄스 또는 1초에 60펄스가 됩니다.

실제로는 더 빠르게 회전하는 것이 불가능합니다. 모든 반주기를 추적해야 하므로 주파수는 약 120Hz여야 합니다. 완전히 확신하기 위해 200Hz를 사용하겠습니다.

이 경우 기계식 엔코더를 사용하고 있으므로 접촉 바운스가 가능하며, 낮은 빈도그런 잡담을 완벽하게 걸러냅니다.


프로그램 타이머 신호를 기반으로 엔코더 출력 A의 현재 값을 이전 값과 지속적으로 비교해야 합니다. 상태가 양수에서 0으로 변경되면 출력 B의 상태를 폴링합니다. 상태 폴링 결과에 따라 값 카운터를 늘리거나 줄입니다. LED 밝기주도의. 약 5ms(200Hz)의 시간 간격을 갖는 프로그램 코드는 다음과 같습니다.

Arduino 초보자 코드:
/*
** 인코더
** LED의 밝기를 제어하기 위해 Sparkfun의 인코더가 사용됩니다.
*/

내부 밝기 = 120; // LED 밝기, 절반부터 시작
int fadeAmount = 10; // 밝기 변경 단계
부호 없는 긴 currentTime;
부호 없는 긴 loopTime;
const int pin_A = 12; // 핀 12
const int pin_B = 11; // 핀 11
부호 없는 문자 인코더_A;
부호 없는 문자 인코더_B;
부호 없는 문자 인코더_A_prev=0;
무효 설정() (
// 핀 9를 출력으로 선언합니다.
핀모드(9, 출력); // 핀 9를 출력으로 설정
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
현재시간 = 밀리스();
loopTime = 현재시간;
}
무효 루프() (
현재시간 = 밀리스();
if(currentTime >= (loopTime + 5))( // 5ms마다 상태를 확인합니다(주파수 200Hz).
인코더_A = 디지털읽기(핀_A); // 인코더의 출력 A 상태를 읽습니다.
인코더_B = 디지털읽기(핀_B); // 엔코더 출력 B
if((!encoder_A) && (encoder_A_prev))( // 상태가 양수에서 0으로 변경되는 경우
if(encoder_B) (
// 출력 B는 양의 상태입니다. 이는 회전이 시계 방향이라는 것을 의미합니다.
// 글로우의 밝기를 255 이하로 늘립니다.
if(밝기 + fadeAmount )
또 다른(
// 출력 B는 0 상태에 있습니다. 이는 회전이 시계 반대 방향이라는 것을 의미합니다.
// 밝기를 줄이되 0 이하로는 안 됩니다.
if(밝기 - fadeAmount >= 0) 밝기 -= fadeAmount;
}

}
인코더_A_prev = 인코더_A; // 다음 루프를 위해 A의 값을 저장합니다.

AnalogWrite(9, 밝기); // 밝기를 9번째 핀으로 설정

LoopTime = 현재시간;
}
}

이 초보자의 예에서는 압전 이미터를 사용하여 소리를 생성하는 방법을 살펴보겠습니다. 이를 위해 20Hz - 20kHz의 주파수 범위에서 음파를 생성할 수 있는 압전 센서를 사용하겠습니다.

볼륨 전체에 LED가 배치된 아마추어 무선 디자인입니다. 이 구성표를 사용하면 다양한 조명 및 애니메이션 효과를 생성할 수 있습니다. 복잡한 회로다양한 3차원 단어를 표시할 수도 있습니다. 즉, 이것은 기본 서라운드 모니터입니다.

서보 드라이브는 다양한 무선 조종 모델 설계의 주요 요소이며 컨트롤러를 사용한 제어가 간단하고 편리합니다.


제어 프로그램은 간단하고 직관적입니다. 서보 드라이브를 제어하는 ​​데 필요한 모든 명령이 포함된 파일을 연결하는 것부터 시작됩니다. 다음으로, ServoMain과 같은 서보 개체를 만듭니다. 다음 함수는 setup()으로, 서보가 컨트롤러의 9번째 핀에 연결되도록 지정합니다.

암호:
/*
아두이노 서보
*/
#포함하다
서보 서보메인; // 서보 객체

보이드 설정()
{
ServoMain.attach(9); // 9번 핀에 연결된 서보
}

무효 루프()
{
ServoMain.write(45); // 서보를 왼쪽으로 45° 회전
지연(2000); // 2000밀리초(2초) 동안 기다립니다.
ServoMain.write(0); // 서보를 왼쪽으로 0° 회전시킵니다.
지연(1000); // 1초 동안 일시중지합니다.

지연(1500); // 1.5초 동안 기다립니다.
ServoMain.write(135); // 서보를 오른쪽으로 135° 회전
지연(3000); // 3초 동안 일시중지합니다.
ServoMain.write(180); // 서보를 오른쪽으로 180° 회전
지연(1000); // 1초 동안 기다립니다.
ServoMain.write(90); // 서보를 90° 회전시킵니다. 중앙 위치
지연(5000); // 5초 동안 일시중지합니다.
}

주요 기능에서는 고리(), 우리는 서보모터에 명령을 내립니다. 명령 사이에는 잠시 멈춤이 있습니다.

7세그먼트 표시기의 Arduino 카운터 회로

초보자를 위한 이 간단한 Arduino 프로젝트에는 일반 7세그먼트 공통 음극 디스플레이를 사용하여 카운터 회로를 만드는 작업이 포함됩니다. 프로그램 코드아래에 제공된 를 사용하면 버튼을 누를 때 0부터 9까지 계산을 시작할 수 있습니다.

7 세그먼트 표시기 - 8개의 LED(마지막 LED가 포인트를 담당함)와 공통 음극의 조합으로, 원하는 순서로 켜서 숫자를 생성할 수 있습니다. 이 회로에서는 아래 그림을 참조하여 핀 3과 8이 음극에 할당되어 있습니다.


대응표는 오른쪽에 표시됩니다. Arduino 핀및 LED 표시 핀.

이 프로젝트의 코드:

바이트 수 = (
B11111100, B01100000, B11011010, B11110010, B01100110,
B10110110, B10111110, B11100000, B11111110, B11100110
};
무효 설정() (
for(int i = 2; i pinMode(i, OUTPUT);
}
핀모드(9, INPUT);
}
정수 카운터 = 0;
bool go_by_switch = true;
int last_input_value = LOW;
무효 루프() (
if(go_by_switch) (
int switch_input_value = digitalRead(9);
if(last_input_value == LOW && switch_input_value == HIGH) (

}
last_input_value = 스위치_입력_값;
) 또 다른 (
지연(500);
카운터 = (카운터 + 1) % 10;
}
writeNumber(카운터);
}

무효 writeNumber(int 숫자) (
if(9번) (
반품;
}
바이트 마스크 = 숫자;
바이트 currentPinMask = B10000000;
for(int i = 2; i if(마스크 & currentPinMask) digitalWrite(i,HIGH);
그렇지 않으면 digitalWrite(i,LOW);
currentPinMask = currentPinMask >> 1;
}
}

다음을 사용하여 Arduino 보드의 잠재력을 크게 확장할 수 있습니다. 추가 모듈, 거의 모든 장치의 PIN 핀에 연결할 수 있습니다. 가장 인기 있고 흥미로운 확장 모듈 또는 방패라고도 불리는 것을 고려하십시오.