기술연구

김경현 2019. 4. 7. 09:58

안녕하세요.


기술이 공유되지 않으면 미래의 사회는 지금보다 더욱 폐쇄적이고 불평등한 사회가 될 것입니다. 카피레프트(copyleft)는 개인의 지적재산권을 중시하는 기존의 카피라이트(copyright)에 대항해 사회적 공유를 강조하는 정신이자 운동입니다. DIY연구소는 카피레프트(copyleft) 정신과 4차 산업기술의 확산을 위하여 연구한 내용을 무료로 배포하고 있습니다. 오늘은 '3D프린터 로봇제어를 위한 교육'을 공유다.


 앱인벤터

 앱인벤터로 애니메이션 만들기 (이론)







DIY연구소 김경현 배상 (010 8604 6802)



[교육내용]


☞ 1. 3D프린터 설계제작

☞ 2. 3D프린터 프로그램

☞ 3. 3D프린터 의수제작

☞ 4. Core XY 3D프린터 구동방식과 조립

☞ 5. Prusa i3 3D프린터 조립

☞ 6. Prusa i3 3D프린터 배선

☞ 7. 3D프린터 전기조립 기초

☞ 8. Fun i3 3D프린터 조립

☞ 9. 3D프린터 오픈소스 RepRap

☞ 10. 20만원대 교육용 3D프린터 개발

☞ 11. 3D프린터 전기자전거 개발

☞ 12. 원노즐 듀얼 3D프린터 개발

☞ 13. 3D프린터 모델링 프로그램 라이노(Rhino)

☞ 14. 3D프린터로 나만의 조명 만들기

☞ 15. 3D프린터로 홀로그램 만들기

☞ 16. 3D프린터 설계제작 공유

☞ 17. 3D프린터로 드론 만들

☞ 18. 스크래치 프로그램 (코딩)

☞ 19. 콘크리트 3D프린터 (대형) 개발

☞ 20. 3D프린터로 애완동물 사료 자동급식기 만들기

☞ 21. 3D프린터 아두이노 기초

☞ 22. 3D프린터 안드로이드 앱 프로그래밍 기초

☞ 23. 3D프린터 동물보호 방안

☞ 24. 3D프린터로 인공지능 로봇 만들기

☞ 25. 3D프린터로 에어콘 만들기

☞ 26. 3D프린터로 4차산업 설계제작






☞ 앱인벤터


[3D프린터 로봇제어를 위한 교육 ]


DIYLAB_ROBOT_TUTORIAL1.aia

DIYLAB_ROBOT_TUTORIAL1.apk


■ 앱 화면

















■ [HOME]







■ [팔레트]






■ [사용자 인터페이스]





1. 버튼 : 클릭을 하면 연결된 동작을 수행하는 컴포넌트입니다. 다양한 모양으로 변경할 수 있으며, 클릭을 가능하게 할지 (활성 여부)도 디자이너 또는 블록 에디터에서 변경할 수 있습니다.


2. 체크 상자 : 사용자 클릭에 따라 선택되거나 해제됩니다. 디자이너 또는 블록 에디터에서 모양을 다양하게 변경할 수 있습니다.


3. 날짜 선택 : 클릭하면 날짜를 선택하는 대화창을 띄워주는 버튼입니다.


4. 이미지 : 이미지를 보여주기 위한 컴포넌트입니다. 보여줄 사진이나 이미지의 모양은 디자이너 또는 블록 에디터에서 지정할 수 있습니다.


5. 레이블 : 텍스트 속성에 지정된 글을 화면에 표시하는 컴포넌트입니다. 디자이너 또는 블록 에디터에서 텍스트의 모양이나 위치를 변경하거나 다른 속성들을 지정할 수 있습니다.


6. 목록선택 : 클릭하면 사용자에게 여러 선택지를 제공하는 버튼입니다. 디자이너나 블록 에디터에서 목록 문자열 속성에 콤마로 구분된 문자 (예를들어, 선택 1, 선택 2, 선택 3)를 지정하거나, 또는 블록 에디터에서 요소 목록 속성 값에 목록을 지정하여 원하는 항목들을 설정할 수 있습니다. 필터창 사용 속성을 참으로 지정하면, 목록 검색 기능이 활성화됩니다. 다른 속성들(텍스트 정렬, 배경 색상 등)은 버튼의 모양을 바꾸기도 하며, 클릭 가능 여부(활성 여부)를 변경하기도 합니다.


7. 목록뷰 : 스크린에 문자들을 목록 모양으로 표시하는 컴포넌트입니다. 목록 문자열 속성에 값을 지정하거나 블록 에디터에서 목록 속성에 리스트 블록을 조립하여 목록 뷰에 표시할 항목들을 지정할 수 있습니다. 경고: 이 컴포넌트는 스크롤 가능한 스크린에서는 정상적으로 작동하지 않을 수도 있습니다.


8. 알림 : 알림 컴포넌트는 다음과 같은 함수를 사용하여 경고창, 메시지, 임시 경고를 화면에 표시하거나 안드로이드 로그를 생성합니다. 메시지창 나타내기 : 메시지를 화면에 표시합니다. 사용자가 버튼을 누르면 사라집니다. 선택 대화창 나타내기 : 메시지와 함께 사용자가 선택 할 수 있는 두 개의 버튼 (예를 들어, 예 또는 아니오)을 나타냅니다. 두 개 중 하나를 선택하면 선택 한 후 이벤트가 발생합니다. 텍스트 대화창 나타내기 : 사용자가 메시지에 대한 응답을 입력하도록 합니다. 입력을 하면 텍스트 입력 후 이벤트가 발생합니다. 경고창 나타내기 : 짧은 시간이 지나면 자동으로 사라지는 일시적인 경고창을 표시합니다. 오류 로그 : 안드로이드에 오류 메시지 로그를 남깁니다. 정보 로그 : 안드로이드에 정보 메시지 로그를 남깁니다. 경고 로그 : 안드로이드에 경고 메시지 로그를 남깁니다. 대화창 (경고창이 아닌)의 메시지들은 다음과 같은 HTML 태그를 사용하여 모양을 지정할 수 있습니다. <b>, <big>, <blockquote>, <br>, <cite>, <dfn>, <div>, <em>, <small>, <strong>, <sub>, <sup>, <tt>. <u> 또한 폰트 태그를 사용하여 색상을 변경 할 수도 있습니다. 예를 들어, <font color="blue">. 이용 가능한 색상은 aqua, black, blue, fuchsia, green, grey, lime, maroon, navy, olive, purple, red, silver, teal, white, yellow 입니다.


9. 비밀번호 상자 : 비밀번호를 입력하는 상자입니다. 일반적으로 텍스트 상자와 사용법이 동일합니다. 다만 사용자가 입력하는 문자가 표시되지 않습니다. 상자의 텍스트 값은 텍스트 속성을 통해 가져오거나 지정할 수 있습니다. 만약 상자가 비어있을 때는, 힌트 속성 값이 상자에 흐리게 표시되어 사용자가 무엇을 입력해야 할 지 알려줄 수 있습니다. 텍스트 상자는 주로 버튼 컴포넌트와 함께 사용되어, 클릭을 통해 입력 완료합니다.


10. 슬라이더 : 조정 컨트롤을 드래그하여 진행 상태를 표시하는 컴포넌트이다. 조정 컨트롤을 터치하여 왼쪽이나 오른쪽으로 드래그하면 슬라이더 조정 컨트롤의 위치를 바꿀 수 있다. 슬라이더 조정 컨트롤이 드래그되면, 위치 변경됨 이벤트가 발생하여 슬라이더 조정 컨트롤의 위치를 알려준다. 슬라이더의 변경된 조정 컨트롤 위치 값은 텍스트 상자의 글꼴 크기, 공의 반지름과 같은 다른 컴포넌트의 속성을 동적으로 업데이트 하는데 사용됩니다.


11. 스피너 : 선택하면 목록을 팝업으로 표시하는 컴포넌트입니다. 디자이너 또는 블록 에디터에서 목록 문자열 속성에 콤마로 구분된 문자 (예를 들어, 선택 1, 선택 2, 선택 3)를 지정하거나 블록 에디터에서 목록 에 리스트 블록을 조립하여 원하는 항목들을 지정할 수 있습니다.


12. 텍스트 상자 : 사용자가 텍스트를 입력할 수 있는 상자입니다. 초기값이나 사용자가 입력한 텍스트는 텍스트 속성에 지정됩니다. 만약 값이 비어있다면, 힌트 속성의 값이 흐리게 텍스트 상자에 표시되 무엇을 입력해야 할지 사용자에게 알려주는 역할을 합니다. 여러 줄 속성은 한 줄 이상 입력 하도록 상자를 변경합니다. 한 줄 텍스트 상자의 경우, 사용자가 완료 키를 누르면 키보드가 자동으로 닫히게 됩니다. 여러 줄 텍스트 상자의 경우 키보드를 닫으려면, 앱이 키보드 숨기기 함수를 사용하거나 사용자가 뒤로 가기 키를 눌러야 합니다. 숫자만 속성은 숫자 값만 입력하도록 제한합니다. 다른 속성들(텍스트 정렬, 배경 색상 등)은 버튼의 모양을 바꾸기도 하며, 클릭 가능 여부(활성 여부)를 변경하기도 합니다. 텍스트 상자는 주로 버튼 컴포넌트와 함께 사용되어 텍스트 입력 완료를 확인할 수 있습니다. 만약 사용자가 입력하는 텍스트가 숨기고 싶으면, 비밀번호 상자를 사용하면 됩니다.


13. 시간 선택 : 버튼을 클릭하면 시간을 선택할 수 있는 팝업 대화상자를 띄웁니다.


14. 웹뷰어 : 웹 페이지를 보여주기 위한 컴포넌트입니다. 디자이너 또는 블록 에디터에서 홈 URL을 지정할 수 있습니다. 링크들을 따라가도록 뷰를지정할 수 있습니다. 웹 폼을 채우도록 사용할 수도 있습니다. 경고: 이것은 실제 브라우저와 완전히 똑같지는 않습니다. 예를 들어, 스마트폰의 하드웨어 뒤로 가기 버튼을 누르면, 브라우저의 이전 페이지로 돌아가지 않고 앱이 종료됩니다. 웹뷰어.웹뷰문자열 속성을 사용하면 웹뷰어 페이지에서 여러분의 앱과 자바스크립트 코드 동작간의 통신이 가능합니다. 앱에서 웹뷰문자열을 가져오거나 지정할 수 있습니다. 웹뷰어서는, window.AppInventor 객체를 참조하는 자바스크립트를 포함하고 있으며, 이를 통해 , setWebViewString(text) 함수를 사용할 수 있습니다. 예를 들어, 웹뷰어가 자바스크립트 명령어 document.write("The answer is" + window.AppInventor.getWebViewString()); 을 실행하는 페이지를 열었고 그리고 웹뷰.웹뷰문자열을 “hello”라고 지정했다면, 웹 페이지에서는 The answer is hello라고 나타나게 됩니다. 또한 웹 페이지의 자바스크립트가 window.AppInventor.setWebViewString("hello from Javascript")라는 명령어를 실행하면, 웹뷰문자열 속성에는 hello from Javascript 라는 값이 지정되게 됩니다.







■ [레이아웃]




1. 수평배치 : 컴포넌트들을 화면에 가로로(왼쪽에서 오른쪽으로) 배치시키는 레이아웃 요소입니다. 만약 컴포넌트를 세로로(위에서 아래로) 배치하고 싶으면, 수직배치를 사용하세요.


2. HorizontalScrollArrangement : A formatting element in which to place components that should be displayed from left to right. If you wish to have components displayed one over another, use VerticalArrangement instead. This version is scrollable.


3. 표배치 : 컴포넌트들을 표 형태로 배치하는 레이아웃 요소입니다.


4. 수직배치 : 컴포넌트들이 차곡 차곡 쌓이도록 배치하는 레이아웃 요소입니다. (첫 번째 컴포넌트가 가장 위에, 두 번째는 그 아래에 배치됩니다.) 만약 컴포넌트를 서로 나란하게 배치하고 싶다면, 수평 배치 요소를 사용하세요.


5. VerticalScrollArrangement : A formatting element in which to place components that should be displayed one below another. (The first child component is stored on top, the second beneath it, etc.) If you wish to have components displayed next to one another, use HorizontalArrangement instead. This version is scrollable.




■ [미디어]





1. 캠코더 : 사용하여 영상을 녹화하는 컴포넌트입니다. 영상이 녹화된 다음에는, 클립 파일 이름을 녹화 후 이벤트의 인자로 사용 가능합니다. 예를 들어, 파일 이름을 비디오 플레이어 컴포넌트의 소스 속성으로 지정할 수 있습니다.


2. 카메라 : 사용하여 사진을 찍는 컴포넌트입니다. 사진을 찍은 다음에는, 사진 파일 이름을 사진 찍은 후 이벤트의 인자로 사용 가능합니다. 예를 들어, 파일 이름을 이미지 컴포넌트의 사진 속성에 지정할 수 있습니다.


3. 이미지 선택 : 특수 버튼입니다. 사용자가 이미지 선택을 누르면, 기기의 갤러리가 실행되고 원하는 이미지를 선택할 수 있습니다. 이미지를 선택한 다음, SD카드에 저장되고 이미지 파일 속성에 이미지 파일 이름이 지정됩니다. 용량이 넘치지 않도록 최대 10개까지 저장됩니다. 더 많은 이미지를 선택하면 이전 이미지들은 삭제되고 새로운 이미지가 저장됩니다.


4. 플레이어 : 음악을 재생하거나 스마트폰의 진동을 울리게 하는 멀티미디어 컴포넌트입니다. 디자이너 또는 블록 에디터에서 재생하고자 하는 멀티미디어를 소스 속성 값에 지정할 수 있습니다. 진동 시간은 블록 에디터에서 밀리초 (1000 분의 1초) 단위로 지정할 수 있습니다. 지원하는 오디오 포맷은, 안드로이드 지원 가능한 미디어 포맷 문서를 참고하시기 바랍니다. 소리 컴포넌트가 효과음과 같은 짧은 파일에 적합한 것과 반대로, 이 컴포넌트는 노래와 같이 길이가 긴 소리 파일을 재생하는데 최적화 되어있습니다.


5. 소리 : 소리 파일을 재생하는 멀티미디어 컴포넌트입니다. 부가적으로 블록 에디터에 지정한 시간 (밀리초 단위, 1000분의 1초)동안 진동하는 기능도 할 수 있습니다. 재생할 소리 파일의 이름은 디자이너나 블록 에디터에서 지정할 수 있습니다. 지원 가능한 오디오 파일 포맷은, 안드로이드 지원 가능한 미디어 포맷 문서를 참고하시기 바랍니다. 플레이어 컴포넌트는 노래와 같은 길이가 긴 소리를 재생하는데 적합한 반면, 이 소리 컴포넌트는 효과음과 같은 짧은 소리 파일을 재생하는데 최적화되어 있습니다.


6. 녹음기 : 소리를 기록하여 저장하는 멀티미디어 컴포넌트입니다.


7. 음성 인식 : 입력된 말을 글로 변환해주는 컴포넌트입니다.


8. 음성 변환 : 글을 말로 바꾸어주는 컴포넌트입니다.


9. 비디오 플레이어 : 비디오를 재생할 수 있는 멀티미디어 컴포넌트입니다. 앱이 실행되면, 비디오 플레이어가 화면에 네모나게 나타납니다. 만약 사용자가 사각형을 터치하면, 영상 안에 재생/일시정지, 빨리감기, 되감기를 위한 조작 화면이 나타납니다. 또한 시작, 일시정시, 찾기 함수를 호출하여 조작할 수도 있습니다. 비디오 파일은 Windows Media Video (.wmv)포맷, 3GPP(.3gp), MPEG-4 (.mp4) 포맷이어야 합니다. 더 자세한 내용은 안드로이드 지원 가능한 미디어 포맷을 참고하세요. 앱 인벤터는 1 MB 이하의 비디오 파일만 사용할 수 있습니다. 그리고 미디어 (비디오, 오디오, 사운드)로 이용할 수 없는 파일을 모두 포함하여 앱의 총 크기는 5 MB까지 허용됩니다. 만약 미디어 파일이 너무 크다면, 패키징하거나 앱을 설치 할 때 오류가 발생합니다. 이 경우 미디어 파일의 수나 크기를 줄여야 합니다. 대부분의 영상 편집 소프트웨어 (Windows Movie Maker나 Apple iMovie 등)를 사용하여 길이를 줄이거나 인코딩을 다시하여 용량을 줄일 수 있습니다. 영상을 스트리밍하는 URL을 미디어 소스로 지정할 수도 있습니다. 단, 비디오를 재생하는 프로그램이 아닌 비디오 파일 자체를 가리키는 URL이여야 합니다.


10. Yandex 번역 : 단어나 문장을 다른 언어로 번역하려면 이 컴포넌트를 사용하세요. 이 컴포넌트는 Yandex.Translate 서비스에 요청을 보내므로, 인터넷에 연결되어야 사용할 수 있습니다. 원래 언어와 번역하고자 하는 언어를 두 글자의 언어 코드를 사용하여 소스-대상 형식으로 입력하세요. 예를 들어 ”en-es”는 영어에서 스페인어로, "es-ru”는 스페인어에서 러시아어로 번역합니다. 소스 언어를 지정하지 않으면, 서비스는 자동으로 소스 언어를 알아내려합니다. 만약 “es”라고만 입력하면 소스 언어는 자동으로 알아내어 스페인어로 번역합니다. 이 컴포넌트는 Yandex 번역 서비스를 통해 운영됩니다. 자세한 내용은 http://api.yandex.com/translate/ 를 참고하세요. 이용 가능한 언어, 언어 코드, 상태 코드의 의미를 알 수 있습니다. 참고: 번역은 백그라운드에서 비동기로 진행됩니다. 번역이 완료되면, “번역 받음” 이벤트가 실행됩니다.





■ [그리기&애니메이션]




1. 공 : 이 동그란 “스프라이트”는 캔버스에 놓을 수 있습니다. 터치나 드래그에 반응하며 다른 스프라이트 (이미지 스프라이트, 공)나 캔버스의 모서리와 상호작용을 할 수 있습니다. 또한 지정된 속성에 맞추어 움직일 수 있습니다. 예를 들어, 공을 캔버스의 위쪽으로 매 500 밀리초 (0.5초) 마다 4 픽셀씩 이동시키고자 한다면, 속도를 4 [픽셀] 로, 간격을 500 [밀리초] 으로, 방향을 90 [도] 으로, 활성 여부를 참으로 속성들을 지정합니다. 이 속성들은 언제든지 바꿀 수 있습니다. 공과 이미지 스프라이트의 차이는 이미지 스프라이트의 경우, 이미지 파일을 사용하여 모양을 정할 수 있다는 점입니다. 반대로 공은 페인트 색상과 반지름 속성을 통해서만 모양을 바꿀 수 있습니다.


2. 캔버스 : 터치 가능한 2차원 패널로 그림을 그릴 수도 있고 스프라이트를 움직일 수도 있습니다. 캔버스의 배경색, 페인트 색상, 배경 이미지, 너비, 높이를 디자이너 또는 블록 에디터에서 지정할 수 있습니다. 너비와 높이의 단위는 픽셀이며 반드시 0보다 커야 합니다. 캔버스에서의 위치는 (X, Y) 값의 쌍으로 표현되며, X는 캔버스의 왼쪽 모서리로부터 떨어진 픽셀 수 Y는 캔버스의 위쪽 모서리로부터 떨어진 픽셀 수입니다. 이벤트를 통해 캔버스의 어디가 터치되었는지, 또는 스프라이트 (이미지 스프라이트 또는 공)가 드래그 되었는지를 알 수 있습니다. 여러 함수들을 사용하면 점, 선, 원들을 그릴 수도 있습니다.


3. 이미지 스프라이트 : 이미지 스프라이트는 캔버스에 놓을 수 있습니다. 터치나 드래그에 반응하며 다른 스프라이트 (공, 이미지 스프라이트)나 캔버스의 모서리와 상호작용 할 수 있습니다. 또한 지정된 속성에 따라 움직일 수도 있습니다. 사진 속성에 지정된 값에 따라 이미지 모양이 달라집니다 (만약 표시 속성이 거짓이라면 보이지 않게 됩니다). 예를 들어 이미지 스프라이트를 매 1000밀리초 (1초) 마다 왼쪽으로 10픽셀씩 움직이게 하려면, 속도를 10 [픽셀]로, 간격을 1000 [밀리초]로, 방향을 180 [도], 활성 여부를 참으로 지정하면 됩니다. 회전 속성이 참이라면 스프라이트의 방향이 변하는데 따라 이미지가 회전하게 됩니다. 현재 회전된 스프라이트 충돌 검사는 회전되지 않은 상태의 위치를 사용합니다. 따라서 길고 얇거나 짧고 넓은 스프라이트들의 위치값은 다소 부정확할 수도 있습니다. 스프라이트의 모든 속성들은 언제든지 프로그램 조작으로 변경 될 수 있습니다.




■ [Maps]




1. Circle : Use the Circle component to draw a circle of a given radius around a point. The radius is specified in meters. Click and drag the handle on the edge of the circle to change its size. Click and drag the center to change its location.


2. FeatureCollection : Use a FeatureCollection to show a group of features. Load a GeoJSON file as an asset (or using a URL in blocks) into the FeatureCollection to see the data contained within.


3. LineString : Use the LineString component to draw a sequence of line segments on a Map. Click and drag on the vertices of the LineString to move it in the designer. Click and drag the midpoint of a line segment to split it into smaller pieces.


4. Map : A two-dimensional container that renders map tiles in the background and allows for multiple Marker elements to identify points on the map. Map tiles are supplied by OpenStreetMap contributors and the United States Geological Survey. The Map component provides three utilities for manipulating its boundaries within App Inventor. First, a locking mechanism is provided to allow the map to be moved relative to other components on the Screen. Second, when unlocked, the user can pan the Map to any location. At this new location, the "Set Initial Boundary" button can be pressed to save the current Map coordinates to its properties. Lastly, if the Map is moved to a different location, for example to add Markers off-screen, then the "Reset Map to Initial Bounds" button can be used to re-center the Map at the starting location.


5. Marker : Marker is an icon positioned at a point to indicate information on a Map. Markers can be used to provide an info window, custom fill and stroke colors, and custom images to convey information to the user.


6. Polygon : Use a Polygon to draw arbitrary shapes on a Map. Click and drag on the handles to move the vertices of the Polygon. Click and drag the handle at the midpoint of an edge to split that edge into two parts. Drag the Polygon around to reposition it.


7. Rectangle : Use the Rectangle to draw a rectangle on a Map bounded by north, south, east, and west edges. Click and drag the handles of the Rectangle to change its size. Click and drag the Rectangle to reposition it on the Map.





■ [센서]




1. 가속도 센서 : 흔들림을 감지하여 3차원 공간에서의 가속도 근사값을 측정하는 보이지 않는 컴포넌트입니다(SI 단위 m/s2 사용). 컴포넌트는 다음과 같이 구성되어 있습니다. x가속도: 스마트폰이 지면에 평평하게 놓여있을 경우 0의 값을 가집니다. 스마트폰이 오른쪽으로 기울어지면 (즉, 왼쪽 면이 들려지면) 양의 값을, 왼쪽으로 기울어지면 (즉, 오른쪽 면이 들려지면) 음의 값을 가지게 됩니다. y가속도: 스마트폰이 지면에 평평하게 놓여있을 경우 0의 값을 가집니다. 스마트폰의 아래쪽이 들려지면 양의 값을, 반대로 위쪽이 들려지면 음의 값을 가지게 됩니다. z가속도: 디스플레이가 위쪽을 바라본 채로 스마트폰이 지면과 평행하게 놓여져 있을 때 -9.8 (중력 가속도, 단위는 미터/초2) 값을 가집니다. 지면과 수직하게 놓여져 있다면 0, 지면과 평행하면서 디스플레이가 아래쪽을 바라본다면 +9.8이 됩니다. 이 값은 스마트폰이 중력을 따르거나 거슬러 움직이는 가속 운동에 영향을 받을 수 있습니다.


2. 바코드 스캐너 : 바코드 스캐너를 사용하여 바코드를 읽을 수 있는 컴포넌트입니다.


3. 시계 : 스마트폰의 시계, 타이머, 그리고 시간 계산을 기능을 하는 제공하는 보이지 않는 컴포넌트입니다.


4. GyroscopeSensor : Non-visible component that can measure angular velocity in three dimensions in units of degrees per second. In order to function, the component must have its Enabled property set to True, and the device must have a gyroscope sensor.


5. 위치 센서 : 경도, 위도, 고도 (기기의 지원 여부에 따라 다름), 주소와 같은 위치 정보를 제공하는 숨겨진 컴포넌트입니다. 또한 주어진 주소를 (반드시 현재 위치일 필요는 없음) 위도 (주소에서 위도 가져오기 사용)나 경도 (주소에서 경도 가져오기 사용)로 변환하는 “지오코딩” 역할도 합니다. 이 기능을 사용하려면, 컴포넌트의 활성 여부 값을 참으로 설정하고, 무선 네트워크나 GPS 위성 (야외인 경우)을 통해 위치 정보를 가져오는 센서를 사용할 수 있는 기기여야 합니다. 위치 정보는 앱을 시작하자 마자 바로 사용 할 수 없을 수도 있습니다. 위치 제공 기지국을 찾고 사용하는데 까지 잠시 기다리거나 위치 변경됨 이벤트가 발생할 때 까지 기다려야 합니다.


6. NFC : NFC 기능을 제공하는 숨겨진 컴포넌트입니다. 현재는 텍스트 태그 읽기, 쓰기만을 지원합니다 (지원되는 기기에 한정) 텍스트 태그를 읽고 쓰려면, 읽기 모드 값이 기능에 따라 참 또는 거짓으로 지정되어 있어야 합니다.


7. 방향 센서 : 3차원 공간에서의 기기의 물리적 방향에 대한 정보를 제공하는 숨겨진 컴포넌트입니다. 롤 각도: 진행 방향과 평평하게 위치할 때를 0도로 정의한다. 기기가 왼쪽으로 기울때마다 90도까지 증가하고, 오른쪽으로 기울때마다 -90도로 감소한다.피치 각도: 진행 방향과 평평하게 위치할 때를 0도로 정의한다. 기기의 위쪽이 아래로 기울때마다 90도까지 증가하고, 방향이 바뀌어 돌아가면 180도까지 증가한다. 마찬가지로, 기기의 아래쪽이 아래로 기울때마다 -90도까지 감소하며, 더 나아가 방향이 바뀌면 -180도까지 감소한다. 방위각: 기기의 위쪽이 북쪽을 가리키면 0도, 동쪽은 90도, 남쪽은 180도, 서쪽은 270도로 정의한다.

이는 기기가 움직이지 않고 있다는 가정으로 계산을 한 값이다.


8. Pedometer : 걸음 수를 셀 수 있는 컴포넌트입니다.


9. 근접 센서 : 기기의 스크린으로부터 상대적으로 물체가 얼마나 근접해있는지를 (단위는 cm) 측정할 수 있는 보이지 않는 컴포넌트입니다.이 센서는 주로 스마트폰이 사람의 귀에 가까이에 있는지를 확인하기 위해 사용합니다; 즉, 물체가 기기로부터 얼마나 멀리 있는지를 확인하는 것입니다. 많은 기기들은 cm 단위릐 절대 거리를 반환합니다. 그러나 몇몇은 단지 가까운지 멀리 있는지만 알려주기도 합니다. 이 경우에 센서는, 멀리 있을 경우에는 최대 거리를가까이 있을 때는 이보다 작은 값을 알려줍니다.






■ [소셜]




1. 연락처 선택 : 버튼을 클릭하면 연락처를 선택할 수 있는 목록을 화면에 표시합니다. 연락처를 선택하면, 다음과 같은 속성들이 선택된 연락처의 정보로 지정됩니다. 연락처 이름: 연락처의 이름 이메일 주소: 연락처의 기본 이메일 주소 사진: 연락처의 사진 파일 이름. 이미지 또는 이미지 스프라이트의 <사진> 속성 값으로 사용 가능. 버튼 모양 (텍스트 정렬, 배경색)에 영향을 주는 다른 속성들과 클릭 가능한지를 알 수 있는 활성 여부. 단, 모든 휴대전화를 지원하지는 않습니다. 만약 실패한다면, 이 컴포넌트에서 알림을 띄웁니다. 오류는 스크린.오류 발생함 이벤트 핸들러에 오버라이드됩니다.


2. 이메일 선택 : 이메일 선택은 텍스트 상자의 한 종류입니다. Â 만약 사용자가 연락처의 이름이나 이메일 주소를 입력하기 시작하면, 휴대전화는 자동 완성 선택지를 드랍다운 메뉴로 보여줍니다. Â 만약 연락처가 많으면, 드랍다운이 나타나는데 몇 초 걸릴 수 있으며, 계산하는 동안 중간 결과 값을 보여줍니다. 텍스트 상자의 초기 값과 사용자가 입력한 내용이 텍스트 속성에 들어갑니다. Â 만약 텍스트 속성의 초기 값이 비어있으면, 힌트 속성의 내용이 텍스트 상자에 희미하게 힌트로 표시됩니다. 다른 속성들은 텍스트 상자의 모양 (텍스트 정렬, 배경 색상 등에 영향을 주거나 사용 할지 말지(활성 여부)를 정합니다. 이와 같은 텍스트 상자들은 주로 버튼 컴포넌트와 함께 사용되어, 버튼 클릭 시 텍스트 입력을 완료시킬 수 있습니다.


3. 전화 : 전화번호 속성에 지정된 번호로 전화를 거는 보이지 않는 컴포넌트입니다. 전화번호는 디자이너 또는 블록 에디터에서 지정할 수 있습니다. 전화 걸기 함수는 프로그램이 전화를 거는 기능을 합니다. 주로, 이 컴포넌트는 휴대전화에 저장된 연락처를 선택하여 그 값을 전화번호 속성에 저장 할 수 있는 연락처 선택 컴포넌트와 함께 사용됩니다. 직접 전화번호를 입력하려면 (예, 650-555-1212) 전화번호 속성을 숫자로만 이루어진 텍스트 (예, “6505551212”). 줄표, 점, 괄호는 (예, “(650)-555-1212”)는 자동으로 생략됩니다; 빈 칸도 포함되지 않습니다.


4. 전화번호 선택 : 버튼을 클릭하면 선택 가능한 전화번호 목록을 화면에 표시합니다. 사용자가 전화번호를 선택을 하면, 선택된 연락처의 정보가 다음과 같은 속성들에 입력됩니다. 연락처 이름: 연락처의 이름 전화번호: 연락처의 전화번호 이메일 주소: 연락처의 이메일 주소 사진: 연락처의 이미지 파일 이름. 이미지나 이미지 스프라이트의 사진 속성에 사용 가능합니다. 버튼 모양 (텍스트 정렬, 배경 색상)에 영향을 주는 다른 속성들과 클릭 가능한지를 알 수 있는 활성 여부. 단, 모든 휴대전화를 지원하지는 않습니다. 만약 실패한다면, 이 컴포넌트에서 알림을 띄웁니다. 기본 오류는 스크린.오류 발생함 이벤트 핸들러에 오버라이드됩니다.


5. 공유 : 기기에 설치된 다른 앱들에 파일이나 메시지를 공유할 수 있도록 해주는 숨겨진 컴포넌트입니다. 이 컴포넌트는 다룰 수 있는 정보와 함께 설치된 앱 리스트를 표시합니다. 메일 앱, 소셜 네트워크 앱, 문자 앱과 같이 콘텐츠를 공유할 앱을 선택하게 됩니다. 파일 경로는 카메라나 이미지 선택와 같은 다른 컴포넌트로 부터 바로 가져올 수도 있고 저장소에서 직접 읽어올 수도 있습니다. 기기에 따라 저장소를 처리하는 방식이 다른 점을 유의해야 합니다. 예를 들어 Appinventor/assets 폴더의 arrow.gif라는 파일은 다음과 같을 수 있습니다: "file:///sdcard/Appinventor/assets/arrow.gif" 또는 "/storage/Appinventor/assets/arrow.gif"


6. 문자 메시지 : 메시지 보내기 함수가 호출되면, 전화번호 속성의 전화번호로 메시지 속성의 값을 내용으로 하는 문자 메시지를 보내는 컴포넌트입니다. 만약 수신 활성화 속성이 1이면, 메시지를 받을 수 없습니다. 만약 수신 활성화 속성이 2이면, 앱이 동작 중일 때에만 메시지를 받을 수 있습니다. 마지막으로 만약 수신 활성화 속성이 3이면 앱이 동작 중일 때 메시지를 받을 수 있고, 추가로 앱이 동작 중이 아니면, 메시지가 큐에 쌓이게 되고 사용자에게 알림이 가게 됩니다. 메시지가 도착하면, 메시지 받음 이벤트가 발생하고 전화번호와 메시지가 전달됩니다. 이 컴포넌트를 가지고 있는 앱은 백그라운드 상태 (즉, 스크린에서 볼 수 없을 때) 에서도 메시지를 받을 수 있습니다. 심지어 만약 앱이 동작 중이 아니더라도, 설치가 되어있다면 메시지를 받을 수 있습니다. 만약 앱이 구동 중이 아닐 때 문자 메시지를 받으면, 알림창에 알림이 뜨게 됩니다. 알림을 선택하면 앱으로 이동합니다. 사용자에게 수신 활성화 값을 변경할 수 있는 기능을 제공하여, 문자 메시지를 차단하도록 할 수도 있습니다. 만약 구글 보이스 활성화가 참이라면, Wifi에서 구글 보이스를 사용하여 메시지를 보낼 수도 있습니다. 이 방법을 사용하려면 사용자가 구글 보이스 계정이 있어야하고, 휴대전화에 모바일 보이스 앱이 설치되어 있어야 합니다. 구글 보이스는 안드로이드 2.0 (이클레어) 이상 버전에서만 지원됩니다. 전화번호를 입력하려면 (예, 650-555-1212), 전화번호속성에 숫자로된 문자열로 지정하면 됩니다 (예, 6505551212). 전화번호에 포함된 줄표, 점, 괄호는 (예, (650)-555-1212) 자동으로 생략됩니다; 빈 칸도 포함되지 않습니다. 전화번호 선택 컴포넌트를 통해서도 연락처에 저장된 번호 중 하나를 선택하여 전화번호를 지정하도록 할 수 있습니다.


7. 트위터 : 트위터와 통신하기 위해 사용하는 숨겨진 컴포넌트입니다. 일단 사용자가 자신의 트위터 계정으로 로그인하면 (인증 완료이벤트를 통해 성공적으로 인증이 확인되면), 더 많은 기능들을 사용할 수 있습니다: 트위터의 트윗이나 레이블 검색 (트위터 검색) 트윗 보내기 (트윗) 이미지와 함께 트윗 보내기 (이미지와 함께 트윗) 특정 사용자에게 쪽지 보내기 (쪽지) 로그인된 사용자의 가장 최근 쪽지 가져오기 (쪽지 리스트 요청하기) 특정 사용자 팔로우하기 (팔로우) 특정 사용자 언팔로우하기 (언팔로우)

로그인 된 사용자의 팔로워 목록 가져오기 (팔로워 리스트 요청하기) 로그인 된 사용자의 친구들의 가장 최근 메시지 가져오기 (친구 타임라인 요청하기) 로그인 된 사용자의 가장 최근 멘션 가져오기 (멘션 리스트 요청하기) 트위터 인증을 하려면 http://twitter.com/oauth_clients/new 에서 여러분 앱의 컨슈머 키와 컨슈머 시크릿을 획득해야 합니다





■ [저장소]




1. 파일 : 파일을 저장하고 검색하는데 사용하는 숨겨진 컴포넌트입니다. 이 컴포넌트는 기기에 파일을 쓰거나 읽을 때 사용하세요. 기본 기능은 앱의 비공개 데이터 공간에 파일을 쓰는 것입니다. 컴패니언은 특별히 디버깅을 수행하기 위해 /sdcard/AppInventor/data에 파일을 씁니다. 만약 파일 경로가 슬래쉬 (/)로 시작한다면, /sdcard 아래의 상대 경로로 파일이 만들어집니다. 예를들어 파일을 /myFile.txt 에 쓴다면 실제로는 /sdcard/myFile.txt 에 파일을 쓰게 됩니다.


2. 퓨전 테이블 제어 : 구글 퓨전 테이블과 통신하는 숨겨진 컴포넌트입니다. 퓨전 테이블에 데이터를 저장하고 공유하고 검색하거나 시각화하는 데이터 테이블입니다; 이 컴포넌트를 사용하여 테이블을 검색, 생성, 수정을 할 수 있습니다. 이 컴포넌트는 Fusion Tables API V2.0을 사용합니다. 퓨전 테이블을 사용하는 앱은 구글 서버의 인증을 받아야합니다. 인증에는 두 가지 방법이 있습니다. 첫 번째 방법은 API 키 (아래 내용 참고)를 사용하는 것입니다. 이 방법은 최종 사용자도 퓨전 테이블에 접근하기 위해 로그인을 해야 합니다. 두 번째 방법은 서비스 계정을 사용하는 것입니다. 이 방법은 자격 증명서와 특별 “서비스 계정 이메일 주소”를 만들어야 합니다. 이는 Google APIs Console에서 할 수 있습니다. 그 다음에는 퓨전 테이블 컨트롤에 서비스 계정 이메일 주소를 입력하고 앱에 비밀키를 업로드하여 키 파일 속성에 해당 파일을 지정해줍니다. 마지막으로 디자이너 에디터에서 “서비스 인증 사용”에 체크를 합니다. 서비스 계정을 사용하면, 최종 사용자는 퓨전 테이블을 사용하기 위해 로그인할 필요가 없습니다. 여러분의 서비스 계정이 모든 접근에 대한 권한을 인증합니다. API 키를 얻으려면, 다음 방식을 따라해보세요. Google APIs Console로 이동하여 필요하다면 로그인을 합니다. 왼쪽 메뉴에서 서비스를 선택합니다. 목록에서 퓨전 테이블 서비스를 선택하여 실행합니다. 메인 메뉴로 돌아가서 API 접근을 선택합니다. 여러분의 API 키가 화면의 아래쪽에 “간편 API 접근”이라는 이름으로 있을 것입니다. 해당 키를 여러분의 류전 테이블 앱의 Api키 속성으로 지정해줍니다. API 키를 설정하고 나면, 유효한 퓨전 테이블 SQL 쿼리를 쿼리 속성 값에 지정하고 쿼리를 실행하기 위해 쿼리 보내기를 호출해주세요. 앱 인벤터가 퓨전 테이블 서버에 쿼리를 보내게 되고 서버로 부터 결과가 돌아오면 결과 받음 블록이 실행됩니다. 쿼리 결과는 CSV 포맷으로 나오며, "CSV 테이블을 리스트로" 또는 "CSV 행을 리스트로" 블록을 사용하여 리스트로 변환할 수 도 있습니다. 참고로 UTF-인코딩에 대해서는 걱정하지 않아도 됩니다. 하지만 쿼리가 래퍼런스 매뉴얼에 있는 문법(열 이름 대소문자 구분 확인하기, 빈 칸이 있다면 따옴표로 이름을 감싸고 있는지 등)을 잘 따르는지 확인할 필요는 있습니다.


3. TinyDB : TinyDB는 앱에 데이터를 저장할 수 있는 컴포넌트입니다. 앱 인벤터로 만든 앱들은 매번 실행될 때 마다 초기화됩니다: 만약 변수에 값을 지정해놓고 앱을 종료하면, 그 변수의 값은 다음 번 앱을 실행할 때 사라지게 됩니다. 하지만, TinyDB는 영구적 데이터 저장소입니다. 즉, 매번 앱을 실행할 때 마다 저장해둔 데이터를 사용할 수 있습니다. 예를 들어 게임을 만든다면, 최고 점수를 저장해두고 매번 게임을 플레이 할 때 마다 가져올 수 있습니다. 데이터 항목들은 문자열이며 태그로 구분하여 저장됩니다. 데이터 항목을 저장하려면, 태그를 지정해줘야 합니다. 그러면, 태그로 저장된 데이터를 찾을 수도 있습니다. 앱 마다 하나의 데이터 저장소를 가지게 됩니다. 만약 여러개의 TinyDB 컴포넌트를 가지고 있어도, 모두 같은 데이터 저장소를 사용하게 됩니다. 별도의 저장소를 사용하는 효과를 내려면, 다른 키를 사용하세요. 또한 각각의 앱은 각각의 데이터 저장소를 가지게 됩니다. TinyDB는 다중 스크린 앱의 여러 스크린들 간의 데이터 공유는 가능하지만, 휴대전화의 서로 다른 앱들 사이에 데이터를 전달할 수는 없습니다. AI 컴패니언을 이용해 앱을 개발 중이라면, 컴패니언을 사용하는 모든 앱들은 같은 TinyDB를 공유하게 됩니다. 앱이 패키징되면 더 이상 공유되지 않습니다. 그러나, 개발하는 동안에는, 새로운 앱 개발을 시작 할때마다, 주의해서 TinyDB를 초기화 해야합니다.


4. TinyWebDB : 정보를 저장하고 검색하기 위해 웹 서비스와 통신하는 숨겨진 컴포넌트입니다.




■ [연결]




1. 액티비티 스타터 : 액티비티 시작 함수를 사용하여 액티비티를 실행시킬 수 있는 컴포넌트입니다. 실행될 수 있는 액티비티들은 다음과 같습니다: 다른 앱 인벤터 안드로이드 앱 시작 카메라 앱 시작 웹 검색 실행 브라우저에서 특정 웹 페이지 열기 특정 위치를 지도 앱으로 열기 또한 텍스트 데이터를 반환하는 액티비티를 실행할 수도 있습니다. 예제를 확인하려면 Using the Activity Starter 문서를 참고하세요.


2. 블루투스 클라이언트 : 블루투스 클라이언트 컴포넌트입니다.


3. 블루투스 서버 : 블루투스 서버 컴포넌트입니다.


4. 웹 : HTTP GET, POST, PUT, DELETE 요청을 보내는 보이지 않는 컴포넌트입니다.




■ [LEGO MINDSTORMS]




1. Nxt드라이브 : LEGO MINDSTORMS NXT robot에 로보트를 움직이고 회전하게 할 수 있는 기능과 고급 인터페이스를 제공하는 컴포넌트.


2. Nxt색상 센서 : LEGO MINDSTORMS NXT robot의 컬러 센서에 고급 인터페이스를 제공하는 컴포넌트


3. Nxt조도 센서 : LEGO MINDSTORMS NXT robot의 조명센서에 고급 인터페이스를 제공하는 컴포넌트.


4. Nxt소리 센서 : LEGO MINDSTORMS NXT robot의 소리 센서에 고급 인터페이스를 제공하는 컴포넌트


5. Nxt터치 센서 : LEGO MINDSTORMS NXT robot의 터치 센서에 고급 인터페이스를 제공하는 컴포넌트


6. Nxt초음파 센서 : LEGO MINDSTORMS NXT robot의 초음파 센서에 고급 인터페이스를 제공하는 컴포넌트


7. Nxt직접 명령 : LEGO MINDSTORMS NXT robot에 NXT에 직접 명령을 전달하는 기능과 초급 인터페이스를 제공하는 컴포넌트.


8. Ev3Motors : A component that provides both high- and low-level interfaces to control the motors on LEGO MINDSTORMS EV3.


9. Ev3ColorSensor : A component that provides a high-level interface to a color sensor on a LEGO MINDSTORMS EV3 robot.


10. Ev3GyroSensor : A component that provides a high-level interface to a gyro sensor on a LEGO MINDSTORMS EV3 robot.


11. Ev3TouchSensor : A component that provides a high-level interface to a touch sensor on a LEGO MINDSTORMS EV3 robot.


12. Ev3UltrasonicSensor : A component that provides a high-level interface to an ultrasonic sensor on a LEGO MINDSTORMS EV3 robot.


13. Ev3Sound : A component that provides a high-level interface to sound functionalities on LEGO MINDSTORMS EV3 robot.


14. Ev3UI : A component that provides a high-level interface to a LEGO MINDSTORMS EV3 robot, which provides graphic functionalities.


15. Ev3Commands : A component that provides a low-level interface to a LEGO MINDSTORMS EV3 robot, with functions to send system or direct commands to EV3 robots.






■ [실험적]




1. CloudDB : Non-visible component allowing you to store data on a Internet connected database server (using Redis software). This allows the users of your App to share data with each other. By default data will be stored in a server maintained by MIT, however you can setup and run your own server. Set the "RedisServer" property and "RedisPort" Property to access your own server.


2. FirebaseDB : A non-visible component allowing you to store data on a Web database powered by Firebase. This allows the users of your app to share data with each other. By default, data will be stored in App Inventor's shared Firebase database. Otherwise, you can specify the URL for your own Firebase in the "FirebaseURL" property. Learn more at Firebase.com.




■ [Extension]




1. Extension : Import extension




■ Screen15








■ 로봇과 대화


DIYLAB_ROBOT_CHAT1.aia

DIYLAB_ROBOT_CHAT1.apk


□ 디자이너 & 블록
































































사업자 정보 표시
| | | 사업자 등록번호 : -- | TEL : -- | 사이버몰의 이용약관 바로가기