아두이노 클래스 만들기, 또는 사용하기를 검색하면 라이브러리
라는 단어가 대부분을 차지한다.
모든 글들을 읽어 본 것은 아니지만, 읽어 본 글들은 실제로 라이브러리
화 해서 사용하는 것에
대한 설명이 주를 이뤘다.
그래서 처음에 아두이노에서 클래스(Class)는 라이브러리를 만드는 경우에만 사용하나? 생각도 했었다.
결론은 클래스를 바로 적용할 수 있다는 것!
왜 그럴까?
화면에 표시된 컨텍스트(Context) 메뉴에서 새 탭
항목을 클릭한다.
새로운 파일을 위한 이름
텍스트 박스에 클래스의 이름과 확장자(소스: cpp, 헤더: h)를 입력하고 확인을 클릭한다.
NewClass.cpp 탭
이 추가된 것을 확인할 수 있다.
새로운 파일을 위한 이름
에 확장자를 입력하지 않을 경우ino
파일이 생성된다.
Visual Studio VMicro에서 새 클래스를 생성한 경우이다.
NewClass.h
// file: NewClass.h
#ifndef _NEWCLASS_h
#define _NEWCLASS_h
#if defined(ARDUINO) && ARDUINO >= 100
#include "arduino.h"
#else
#include "WProgram.h"
#endif
class NewClass
{
public:
void toString();
};
extern NewClass New;
#endif
NewClass.cpp
// file: NewClass.cpp
#include "NewClass.h"
void NewClass::toString()
{
Serial.println("NewClass::toString");
}
NewClass New;
multiple.ino
// file: multiple.ino
#include "NewClass.h" // 새로 만든 클래스 header 추가
void setup() {
Serial.begin(115200);
NewClass _newcls;
_newcls.toString();
}
void loop() {
}
작은 크기의 프로그램을 개발하는 경우라면 아두이노에서 클래스를 만들어 사용할 일은 없겠지만, 그렇다고 라이브러리로 사용한다는 식으로 알려주는 것은 아니라는 생각이 든다.
요즘 재미삼아 이것 저것 해보고 있는데 80C196을 사용했던 시절에 비해서 매우 편해졌다는 생각이 든다.
가격도 무척 저렴하고… 호환 보드는 더~ 저렴하고… 예전 기억도 새록새록 나고… 아~ 납땜의 추억!!!
개발 작업을 할 때 여러 개의 Editor나 IDE를 사용하여 개발을 진행하는 데 가끔씩 Encoding이 의도와는 다르게 적용되는 경우들이 있다. (파일 탐색기에서 새 텍스트 문서를 만드는 경우 등) Github에서 소스를 확인할 때 텍스트가 깨져서 나오는 경우 당혹스럽기까지 하다.
- Encoding을 변경할 파일을
Visual Studio
에서 열기- 파일 메뉴에서
고급 저장 옵션
클릭고급 저장 옵션
다이얼로그 박스에서유니코드(서명 있는 UTF-8) - 코드 페이지 65001
로 변경
First level header
==================
Second level header
------
Other first level header
=
# First level header (h1)
## Second level header (h2)
...
###### Sixth level header (h6)
> This is the first blockquote.
> on multiple lines
that may be lazy.
>
> This is the second paragraph.
>
> > This is the second blockquote.
This is the first blockquote. on multiple lines that may be lazy.
This is the second paragraph.
This is the second blockquote.
A code block can be started by using four spaces
or one tab
and
then the text of the code block.
Here comes some code
This text belongs to the same code block.
~~~
Here comes some code.
~~~
~~~
Console.WriteLine("How to use the Code Blocks? First method");
~~~
{: .language-csharp}
Console.WriteLine("How to use the Code Blocks? First method");
or
~~~ csharp
Console.WriteLine("How to use the Code Blocks? Second method");
~~~
Console.WriteLine("How to use the Code Blocks? Second method");
A list is started with a list marker (in case of unordered lists one of +
, -
or *
– you can mix them – and in case of ordered lists a number followed by a period
) followed by one tab
or at least one space
1. ordered list 1, item 1
1. nested list item 1 (indent `four spaces` or `one tab`)
2. ordered list 1, item 2
^
1. ordered list 2, item 1
2. nested list item 1
3. nested list item 2
4. nested list item 3
2. ordered list 1, item 2
10. ordered list 1, item 3
four spaces
or one tab
)+ unordered list, item 1
- nested list item 1
* nested list item 2
+ nested list item 3
* unordered list, item 2
definition term
: This definition will just be text because it would normally be a
paragraph and the there is no preceding blank line.
> although the definition contains other block-level elements
: This definition *will* be a paragraph since it is preceded by a
blank line.
although the definition contains other block-level elements
This definition will be a paragraph since it is preceded by a blank line.
|-----------------+------------+-----------------+----------------|
| Default aligned |Left aligned| Center aligned | Right aligned |
|-----------------|:-----------|:---------------:|---------------:|
| First body part |Second cell | Third cell | fourth cell |
| Second line |foo | **strong** | baz |
| Third line |quux | baz | bar |
|-----------------+------------+-----------------+----------------|
| Second body | | | |
| 2 line | | | |
|=================+============+=================+================|
| Footer row | | | |
|-----------------+------------+-----------------+----------------|
Default aligned | Left aligned | Center aligned | Right aligned |
---|---|---|---|
First body part | Second cell | Third cell | fourth cell |
Second line | foo | strong | baz |
Third line | quux | baz | bar |
Second body | |||
2 line | |||
Footer row | see more |
* * *
---
_ _ _ _
---------------
Three types of links are supported: automatic links, inline links and reference links.
Information can be found on the <http://example.com> homepage.\\
You can also mail me: <[email protected]>
Information can be found on the http://example.com homepage.
You can also mail me: [email protected]
This is [a link](http://google.com) to a page.
A [link](../test "local URI") can also have a title.
And [spaces](link with spaces.html)!
This is a link to a page. A link can also have a title. And spaces!
This is a [reference style link][linkid] to a page.
And [this][linkid] is also a link. As is [this][] and [THIS].
[linkid]: http://www.example.com/ "Optional Title"
This is a reference style link to a page. And this is also a link. As is [this][] and [THIS].
Here comes a ![smiley](../images/smiley.png)! And here
![too](../images/other.png 'Title text'). Or ![here].
With empty alt text ![](see.jpg)
Here comes a ! And here . Or ![here]. With empty alt text
Here is an inline ![smiley](smiley.png){:height="56px" width="33px"}.
And here is a referenced ![smile]
[smile]: smile.png "Title text"
{: height="56px" width="33px"}
Here is an inline . And here is a referenced
This is a ***text with light and strong emphasis***.
This **is _emphasized_ as well**.
This *does _not_ work*.
This **does __not__ work either**.
This is a text with light and strong emphasis.
This is emphasized as well.
This does _not_ work.
This does __not__ work either.
Use `<html>` tags for this.
Use
<html>
tags for this.
Here is a literal `` ` `` backtick.
And here is `` `some` `` text (note the two spaces so that one is left
in the output!).
Here is a literal
`
backtick.
And here is`some`
text (note the two spaces so that one is left
in the output!).
This is a ` literal backtick.
As \`are\` these!
This is a ` literal backtick. As `are` these!
This is a C# code fragment `x = new SmartListBox();`{:.language-csharp}
This is a C# code fragment
x = new SmartListBox();
This is some text.[^1]. Other text.[^footnote]
[^1]: Some *crazy* footnote definition.
[^footnote]: this is a footnote definition.
This is some text.1. Other text.2
{::comment}
This text is completely ignored by kramdown - a comment in the text.
{:/comment}
Do you see {::comment}this text{:/comment}?
{::comment}some other comment{:/}
{::options key="val" /}
Do you see ?