전체 글 56

아두이노와 함수

프로그래밍을 하다 보면 코드가 길어져 함수를 써야 할 때가 있습니다. 함수는 코드의 가독성을 높여주고, 반복되는 작업을 줄여줍니다. 아두이노를 코딩할 때도 함수를 사용할 수 있습니다. 함수를 쓰는 방법은 C언어를 쓰는 방법과 동일합니다. 여기서는 함수에 대해 모르는 분들을 위해 기초부터 설명하도록 하겠습니다. 함수를 사용하는 방법 함수의 구성요소로는 반환타입, 매개변수, 함수 이름, 실행할 코드가 있습니다. 각각에 간단하게 대해 살펴보겠습니다. 반환 타입 : 반환타입은 함수 안에서 실행한 코드의 결과 값의 타입을 나타냅니다. 꼭 필요한 것은 아닙니다. 매개변수 : 함수 내의 코드가 실행할 때 필요한 변수 값을 의미합니다. 함수를 호출할 때 값을 넣습니다. 함수 이름 : 함수의 이름을 의미합니다. 실행할 ..

아두이노 2023.12.31

esp32 보드를 아두이노로 사용하는 방법

ESP32는 에스프레시스 시스템(Espressif systems)에서 만든 마이크로 컨트롤러 제품입니다. 이 제품은 Wi-Fi와 Bluetooth 기능이 내장되어 있는 것이 가장 큰 특징입니다. 자세한 내용은 에스프레시스 시스템 홈페이지에 상세하게 나와있습니다. https://www.espressif.com/en/products/socs/esp32 ESP32 Wi-Fi & Bluetooth SoC | Espressif Systems ESP32 A feature-rich MCU with integrated Wi-Fi and Bluetooth connectivity for a wide-range of applications www.espressif.com 다행이도(?) ESP32는 아두이노 IDE를 이용해 ..

아두이노 2023.12.30

아두이노 및 아두이노 IDE 튜토리얼

이번 글에서는 아두이노가 무엇인지, 아두이노 안에 있는 MCU라는 것이 무엇인지 알아보도록 하겠습니다. 아두이노란? 아두이노는 코드를 넣으면 그 코드에 따라 회로가 동작하도록 만든 보드입니다. 골치아픈 전자회로 지식이 없이 할 수 있도록 회로가 이미 만들어져 있습니다. 그렇기에 임베디드 시스템을 입문하기 좋습니다. 아두이노는 다음과 같이 생겼습니다. 아두이노는 양 옆에 핀을 꽂을 수 있도록 되어 있습니다. 이곳을 통해 외부에 있는 부품이나 기기를 아두이노가 컨트롤 할 수 있습니다. 또한 이곳을 통해 외부에서 들어오는 데이터를 읽기도 합니다. 오른쪽 아래에 위치한 검은색 직사각형이 아두이노의 핵심인 ATMEGA328P입니다. 이 부품은 MCU로써 직접적으로 코드를 실행하는 부분입니다, MCU에 대해서는 아..

아두이노 2023.12.28

아두이노 GPIO 인터럽트(Interrupt)

인터럽트란 무엇이고, 언제 쓰는가 아두이노로 무언가 하다 보면 중간에 다른 일을 해야 할 때가 있습니다. 예를 하나 들어봅시다. 아두이노가 LED를 깜박이고 있습니다. 이때 버튼이 눌리면 LED를 껴야 합니다. 그래서 우리는 digitalRead를 이용해 스위치의 입력을 받을 수 있게 해놨습니다. 다음과 같이 말이죠. bool LED_ON = true; void setup() { // put your setup code here, to run once: pinMode(13,OUTPUT); pinMode(12, INPUT); } void loop() { // put your main code here, to run repeatedly: if(digitalRead(12)) { LED_ON = !LED_ON;..

아두이노 2023.12.28

UART를 이용해 아두이노와 컴퓨터 통신하기

UART는 무엇인가? UART는 2개의 선을 이용한 통신 방식입니다. 이 통신 방식은 직렬 통신 방식으로 여러 비트의 데이터를 순차적으로 하나씩 보냅니다. UART를 이용해 두 디바이스를 연결하는 방법은 다음과 같습니다. Tx는 송신선으로 데이터를 다른 디바이스로 보내는 역할을 합니다. Rx는 수신선으로 데이터를 다른 디바이스로 부터 받는 역할을 합니다. 두 선을 교차로 연결해야 UART 통신을 할 수 있습니다. Tx는 다른 Rx에 연결해야 보낸 데이터를 받을 수 있다고 생각하시면 편합니다. 아두이노로 컴퓨터와 통신하기 아두이노는 자체적으로 컴퓨터와 연결할 수 있는 회로를 가지고 있습니다. 그렇기에 USB로 연결하기만 하면 UART 통신이 가능합니다. 우리는 코드를 짜고 업로드하기만 하면 됩니다. UAR..

아두이노 2023.12.27

Drift를 이용한 Todo 앱 제작 -(2)

이번 글에서는 저번 글에 이어서 Drift를 이용한 Todo 앱을 제작한다. 2023.07.17 - [단기 프로젝트] - Drift를 이용한 Todo 앱 제작 -(1) Drift를 이용한 Todo 앱 제작 -(1) 이번에는 저번 글에서 만든 Todo 앱을 Drift를 이용해 만들어본다. Drift는flutter에서 sqlite를 쉽게 사용할 수 있도록 만든 라이브러리이다. 저번에 만든 앱은 저장이 되지 않기 때문에 앱을 끄면 값이 ti-project-11.tistory.com 1. TodoBox TodoBox는 하나의 todo를 표현하기 위한 상자이다. 이 안에는 완료되었는지 확인 할 수 있는 체크 박스와 todo의 내용이 들어가 있다. class TodoBox extends StatelessWidget..

플러터 (flutter) 2023.07.24

Drift를 이용한 Todo 앱 제작 -(1)

이번에는 저번 글에서 만든 Todo 앱을 Drift를 이용해 만들어본다. Drift는flutter에서 sqlite를 쉽게 사용할 수 있도록 만든 라이브러리이다. 저번에 만든 앱은 저장이 되지 않기 때문에 앱을 끄면 값이 날라간다. SQLite를 이용하면 작성한 Todo 데이터를 로컬에 저장할 수 있다. 앱은 Todo를 생성할 수 있고 (1) ~ (3), 완료하면 체크를 할 수 있다. 체크가 되면 줄이 그어진다. 오른쪽 밑에 있는 버튼을 누르면 완료된 리스트가 삭제 된다. 앱을 끄고 다시 키면 이전에 만들어 놓은 데이터가 유지되어 있는 것을 볼 수 있다. 1. pubspec.yaml pubspec.yaml에 있는 dependencies와 dev_dependencies에 라이브러리를 추가해준다. 이 라이브러..

플러터 (flutter) 2023.07.17

Flutter를 이용한 Todo 앱 제작하기

이번 글에서는 Todo app을 제작해본다. 이 앱의 기능은 다음과 같다. (1) 앱이 처음 실행되면 뜨는 창이다. (2) 텍스트 필드를 터치하면 필드 안에 글을 쓸 수 있다. (3) 텍스트 필드 밑에 있는 '+' 버튼을 누르면 할 일이 추가된다. (4) 체크 박스를 터치하면 완료로 뜬다. (5) 오른쪽 아래에 있는 refresh 버튼을 누르면 완료된 일이 사라진다. 이 앱의 제작에는 3개의 dart 파일이 사용되었다. lib 파일 안에 다음과 같이 폴더와 파일을 추가해준다. 1. textBox.dart textBox.dart에서는 맨 위의 제목과 할 일을 적는 TextField가 포함되어 있다. 그 밑에는 '+' 버튼을 생성하여 할 일을 추가할 수 있도록 했다. 'textBox.dart'의 위젯트리는 ..

플러터 (flutter) 2023.07.09

Flutter 위젯 생성 및 삭제

저번 글에서는 사용자가 위젯을 드래그하면 그대로 위젯이 움직이도록 만들었다. 이번 글에서는 움직일 수 있는 위젯을 선택하여 추가, 삭제 할 수 있도록 할 것이다. 이 앱을 실행하면 다음과 같은 결과가 나온다. 앱 동작 영상 아래에 있는 네모들을 클릭하면 그 네모가 화면에 나온다. 아래 위젯은 스크롤이 가능하다. 네모는 드래그를 통해 이동이 가능하다. 네모를 터치하면 하안 선으로 감싸진다. 이 상태는 네모가 선택되어 있는 상태이다. 이 상태로 오른쪽 위에 있는 쓰레기통 버튼을 누르면 위젯이 삭제된다. 이번 앱에는 저번에 만든 앱을 기반으로 만들어진다. 위젯의 이동에 대해서는 저번 글에 참고하자. 2023.07.05 - [단기 프로젝트] - Flutter 화면에서 드래그로 위젯 이동시키기 (프로젝트1_2) ..

플러터 (flutter) 2023.07.06

Flutter 화면에서 드래그로 위젯 이동시키기

이번 글에서는 화면 안에서 위젯을 어떻게 이동시키는지 알아본다. 앱을 완성하면 다음과 같이 드래그로 위젯을 이동시킬 수 있다. 위젯을 움직이기 위해 이 앱에서는 Stack, Positioned, GestureDetector를 사용한다. Stack : Stack은 children 안에 있는 위젯들을 쌓아 올리는 위젯이다. Positioned : Positioned 위젯은 child 안에 있는 위젯이 위치할 곳을 지정해 준다. GestureDetector : GestureDetector는 사용자가 화면과 상호작용하는 것을 감지하고 그것에 대한 데이터를 넘겨준다. 위젯 트리는 다음과 같다. Stack안에 자식 위젯으로 2개의 Positioned 위젯을 가진다. 각각의 Positioned 위젯은 position..

플러터 (flutter) 2023.07.05