전체 글 52

장기적인 목표를 세우는 이유와 오랫동안 실천하는 방법

장기적 목표를 세우고 실천해야 하는 이유 인류는 긴 시간동안 자연을 관찰하여 이를 바탕으로 생존을 해왔다. 계절의 변화를 관찰해 겨울을 미리 대비하였으며, 식물의 탄생과 성장을 관찰하여 농사를 짓기 시작했다. 이런 관찰은 긴 시간동안 이루어지며, 관찰 대상은 느린 템포로 변화한다. 자연은 자신만의 템포로 서서히 변화하기 때문이다. 자연의 변화는 하루 혹은 일주일 단위로 바뀌지 않는다. 자연은 적어도 1달의 시간을 주어야 그 변화가 눈에 들어온다. 하루하루 살면서 변화를 느끼지 못하지만, 어느 순간 확 바뀌어있는 모습을 볼 수 있다. 그리고 그 변화의 결과는 어마어마하다. 30도를 넘나드는 기온이 어느 순간 영하로 떨어지고, 푸릇푸릇했던 잎사귀들이 떨어져 앙상한 나뭇가지만 남는다. 초기 인류는 이런 자연의..

전략과 전술 2024.01.20

목표 달성을 위한 전략 - 행동 최적화

우리가 무언가를 이루고자 할 때 우리는 행동을 한다. 이전 글에서는 행동을 최적화하는 것의 필요성과 그 이유에 대해 이야기해 보았다. (이전 글 참고) 2024.01.16 - [생각 기록장] - 전략적 행동을 위한 최적화 전략적 행동을 위한 최적화 전략이라는 것은 원하는 바를 효율적으로 이루기 위해 사용된다. 우리가 가지고 있는 자원에는 한계가 있기 때문에 한계 내에서 원하는 바를 이루기 위해 전략을 사용한다. 공학에서는 두 개의 ti-project-11.tistory.com 행동 최적화 방법 이 글에서는 최적화의 방법론에 대해 좀 더 이야기해보려 한다. 사람은 기계가 아니기 때문에 계속해서 공부를 한다던가, 일을 하는 것이 불가능하다. 밥도 먹어야 하고, 잠도 자야 하고, 위생관리도 해줘야 한다. 이 ..

전략과 전술 2024.01.19

목표 설정과 행동

무엇을 하든 그것을 한 번에 잘하는 사람은 거의 없다. 정말 특출난 천재가 아닌 이상 처음 할 때 미숙한 것은 당연한 일이다. 그렇기 때문에 우리는 시도해 보고, 이를 기반으로 고쳐나가는 것이 필요하다. 하지만 나를 포함해서 조급한 성격의 사람들은 이를 해내는 것이 너무 힘들다. 무언가를 했는데 결과가 바로 나오지 않으면 답답해한다. 특히 정량적으로 측정할 수 없는 어떤 목표를 달성하고자 할 때는 더욱 그렇다. 많은 책에서 이를 정량화 할 수 있는 방법들을 많이 제안한다. 하루 동안 어떤 행동을 했는지, 계획한 것을 했는지 등등 많은 방법들이 있었다. 그러나 의지박약인 나에게는 이런 것들은 통하지 않았다. 이런 이유로 이루지 못한 많은 계획들이 있다. 대부분은 돈과 관련되어 있다. 이렇게 하면 돈을 벌겠..

전략과 전술 2024.01.18

전략적 행동을 위한 최적화

전략이라는 것은 원하는 바를 효율적으로 이루기 위해 사용된다. 우리가 가지고 있는 자원에는 한계가 있기 때문에 한계 내에서 원하는 바를 이루기 위해 전략을 사용한다. 공학에서는 두 개의 가치가 충돌하는 경우가 많다. 기능 1과 기능 2를 동시에 만들려고 할 때 기능 1이 좋아지면 기능 2가 나빠지고, 기능 2가 좋아지면 기능 1이 나빠지는 경우가 허다하다. 즉, 서로가 서로의 한계가 되는 것이다. 그렇기 때문에 원하는 동작을 위해서 기능 1과 기능 2의 성능을 적절히 조절하는 과정이 필요하다. 이 과정을 'optimization(최적화)'라고 한다. 전략에서도 이러한 최적화가 필요하다. 우리가 목표를 이루기 위해선 시간과 에너지가 필요하다. 하지만 목표에만 집중할 수 있는 환경이 마련되는 경우는 거의 없..

전략과 전술 2024.01.16

전략과 전술, 그리고 성격

전략과 전술을 실행하는 것이 어려운 이유 사람들은 지금까지 목표를 달성하기 위해 많은 전략과 전술들을 만들었다. 이 전략과 전술들은 계속해서 고도화 되었으며, 목표와는 상관이 없어 보이는 분야들의 아이디어를 빌려와 적용하는 등의 통합도 생겼다. 이러한 전략과 전술은 삶에 있어서도 중요한 사항이다. 삶에서 전략은 원하는 것을 얻을 수 있는 효율적인 방법을 제시해주고, 전술은 전략을 실행할 수 있는 힘을 준다. 전술과 전략이 시너지를 일으킬 때 우리는 우리가 원하는 것을 효율적으로 해낼 수 있다. 그러나 나를 포함한 사람들은 전략과 전술을 제대로 활용하지 못하는 것이 현실이다. 전략과 전술을 이용해 계획을 세우더라도 이를 끈기있게 실천하지 못한다. 결국 바뀌지 못하고 원래 상태로 돌아가게 된다. 이는 사람들..

전략과 전술 2024.01.13

아두이노로 SSD1306 GLCD 사용하기

이번 글에서는 아두이노로 SSD1306을 사용한 GLCD를 컨트롤하는 방법을 알아볼 것입니다. 먼저 GLCD와 SSD1306에 대해 간단하게 알아보고, 아두이노로 어떻게 컨트롤하고 있는지 알아보도록 하겠습니다. GLCD GLCD(그래픽 LCD)는 픽셀 하나하나 컨트롤하여 화면을 띄우는 LCD입니다. 픽셀을 컨트롤하여 화면을 띄우기 때문에 자유로운 화면 구성이 가능합니다. SSD1306 SSD1306은 GLCD를 컨트롤하기 위한 IC입니다. I2C통신을 이용하여 데이터를 받습니다. SSD1306을 개발한 Adafruit에서 만든 아두이노 라이브러리를 이용하면 쉽게 SSD1306을 컨트롤 할 수 있습니다. 아두이노로 GLCD 컨트롤하기 이제 아두이노로 GLCD를 컨트롤하는 방법을 알아보도록 하겠습니다. 먼저..

아두이노 2024.01.04

아두이노와 함수

프로그래밍을 하다 보면 코드가 길어져 함수를 써야 할 때가 있습니다. 함수는 코드의 가독성을 높여주고, 반복되는 작업을 줄여줍니다. 아두이노를 코딩할 때도 함수를 사용할 수 있습니다. 함수를 쓰는 방법은 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