본문 바로가기

분류 전체보기

(125)
Hangul_Directed.H 를 이용한 한글 출력 예제 동영상보기 Hangul_Directed.H // Hangul_Direct.H ver 1.0 아두이노용 한글 출력 클래스 // // 제작자 : 신 옥 진 // // 재배포는 금지, 그냥 링크를 사용 하세요. // // 영리목적( 유료 강의 자료, 판매 시스템에 포함 등 )의 사용은 사전 허락을 받아야 합니다. // // // #define _TFTLCD_ myLcd // myLcd는 원하는 이름으로 하면 됨 // #include "c:\\Arduino\\HanGul_Direct.H" // 헤더파일 전체 경로 // HanGul_TFT ht; // 한글출력 클래스 // #ifndef _Hangul_Direct_ #define _Hangul_Direct_ #include #inclu..
필요한 폰트를 메모리에 두지 말고 파일에 담아 사용하자. 필요한 폰트를 파일에 담아 사용하기 위해서는 아두이노 한글 폰트 Code 자동생성 프로그램 ver 2.0에 다음과 같은 폰트 파일을 추가로 생성하게 해야 한다. ( Font.utf ) 필드 1 필드2 36Byte 한글코드 4byte 폰트 (unsigned short 2byte ) *16 = 32byte 출력을 위하여 Hangul_Direct.H를 수정하여 Hangul_SelectSD.H를 제작 한다. 출력할 문자를 폰트파일의 한글코드와 비교하여 폰트를 찾는 것으로 수정 하면 된다. 기존 _memFont( long code) 를 _sdFont( long cod)로 수정 한다. 기존 함수 memFont( long code) bool HanGul_TFT::_memFont( long code ) { int si..
F연산자와 readLine 함수 사용하여 메모리 확보하기 코드 내부의 글자도 메모리를 잡아 먹는다. 그래서 F연산자로 플래쉬메모리(코드저장부분) 저장 하지만 그래도 한계가 있다. Uno의 경우는 더 심하다. 코드내에 글자수가 맘아지면 담을 수 있는 폰트도 많이 줄어 버린다. 이경우를 해결하기 위하여 코드안의 문장을 파일로 저장하고 출력 직전에 불러 오는 방식을 사용 하려고 한다. 문제는 문장을 쓰는 SD.prinln()은 있지만 문장을 읽어 오는 함수가 없어 엄청 불편 하다. 그래서 String readLine( File inf ) 함수를 만들었다. 메모장 등에서 텍스터 파일을 작성하면 문장 끝에는 16진수 0x0d 0x0a의 두 바이트가 붙어 있다. String readLine( File inf ) // 읽어올 파일을 변수로 받는다. { char buff[5..
Hangul_SD,H ( SD카드에 폰트화일,인덱스화일 ) 아두이노 Mega 사용시 주의할 점 SD카드를 사용 하려면 Uno와 SPI핀 번호가 달라 다음 2가지 중 하나의 방법으로 해야 한다. 쉴드를 아두이노 Mega에서 SD카드 사용을 위한 방법(Uno와 SPI핀 다름) Uno의 SPI핀번호에 해당하는 핀을 SPI핀과 연결함 번거롭다(납땜이 필요) 핀4개 사용불가 SD모듈을 따로 구입하여 사용한다. 얼마 안함 저렴함.( 추천 ) 폰트화일과 인덱스파일은 스스로 만들어 보세요. 규격은 여기로 대부분의 경우 따로 폰트가 필요 없는 Hangul_Direct.H를 Mega보드(120자 정도)와 같이 사용 하면 됩니다. HanGul.SD ver 1.0 // HanGul.SD ver 1.0 아두이노용 한글 출력 클래스 // // 제작자 : 신 옥 진 // // 재배포 금지..
Hangul_Direct.h ( 필요한 폰트만 코드에 삽입 ) 아두이노 한글 폰트 Code 자동생성 프로그램 ver 2.0 으로 폰트를 만들어 아두이노 소스코드에 삽입한 후 한글을 출력하는 한글 Class sd카드와 별도의 폰트파일이 필요 없다. 필요에 따라 16x16 폰트 에디터로 만든 사용자 문자도 사용 가능 하다. 아두이노 코드에서 사용 하는 예 사용 보드는 아두이노 mega ( Uno는 20~30자가 메모리 한계임) 코드 내부의 글자도 메모리를 잡아 먹는다. 그래서 F연산자로 플래쉬메모리(코드저장부분) 저장 하지만그래도 한계가 있다. Uno의 경우는 더 심하다. 코드내에 글자수가 많아 지면 담을 수 있는 폰트도 많이 줄어 버린다.이경우를 해결하기 위하여 코드안의 문장을 파일로 저장하고 출력 직전에 불러 오는 방식을 사용 하려고 한다.문제는 문장을 쓰는 SD...
16x16 폰트 에디터 버튼 기능 2Byte배열 만들기 2Byte배열[32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} ; 4Byte배열 만들기 4Byte배열[16] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; 저장하기 이진파일로 저..
아두이노 DB와 휴대폰 바코드 연동하여 TFT LCD에 출력하기 동영상 확인하기 #define _TFTLCD_ myLcd // TFT LCD 이름 정의 #define _INDEX_TYPE_2_ // 인덱스방법 2로 사용시 // 방법 1로 사용시 주석처리 하면 됨 #include "D:\\Program Files (x86)\\Arduino\\myHeader\\HanGul_TFT.H" HanGul_TFT ht; // 한글출력 클래스 #define dbFileName "BarCode.txt" File dbFile; struct Record // 레코드 구조체 { String barCode; String productName; }; String readLine() { char buff[50]; int idx=0; while(true) { byte b,b2; b=dbFile...
아두이노 SD카드에 DaraBase구축 간단한 데이타베이스를 구축 할 것이다. 레코드는 다음과 같이 구성 (구조체) struct Record // 레코드구조체 { String barCode; String productName; }; 필드명 변수 내용 barCode String 바코드를 저장 productName String 제품명을 저장 간단이 레코드 추가 검색 기능만 일단 구현하고 삭제기능은 삭제한 곳의 빈공간 처리가 필요하여 추후에 추가 할 것이다.. SD카드 라이브러리에서 String을 파일에 쓰기에는 println함수가 있지만 읽기에는 없다. 그래서 readLine이라는 함수를 따로 만들었다. String readLine() { char buff[50]; int idx=0; while(true) { byte b,b2; b=dbFile...
아두이노와 바코드앱 메세지 주고 받기 이젠 PC대신 아두이노를 사용한다. 앱은 그대로 사용 하면 되고 아두이노는 TFT LCD 쉴드를 사용한다. 아두이노 우노의 경우 쉴드를 사용하면 블루투스는 0(RX),1(TX) 핀을 사용 해야한다. TFT LCD , SD카드 사용 하면 A5핀과 RX,TX핀만 남는다. 주의 점은 프로그램 업로드시 블루투스 모듈을 제거해야 한다. 업로드도 RX,TX핀을 사용 한다. 쉴드 때문에 핀에 선을 연결 하기 힘들다. 그래서 블루투스 연결 선을 납땜하여 사용한다. 핀에 직접 할 필요 없이 우도 보드를 보면 RX,TX,VCC,GND가 따로 모여 있는 곳이 있다. 이곳에서 선을 납땜하면 된다. 블루투스 RX는 아두이노 TX 블루투스 TX는 아두이노 RX에 연결한다. 동영상 확인하기 #define _TFTLCD_ myLcd..
DataGrid 프로그램과 앱 연동하기 ( 검색, 추가 ) 동영상 확인하기 DataGrid 프로그램에 추가한 코드 public static System.IO.Ports.SerialPort port; // 다른 폼에서 접근하기 의해 port변수설정 string barCode = ""; bool barCodeOn=false; private void btBarcode_Click(object sender, EventArgs e) { if (! barCodeOn) { port = myPort; // PotOpen폼에서 myPort 이용하기 위해 PortOpen frm = new PortOpen(); DialogResult re= frm.ShowDialog(); if (re == DialogResult.OK ) { btBarcode.Text = "바코드\nOn"; btBa..
PC와 앱사이 메세지 주고 받기 이제 프로그램을 수정하여 PC와 앱이 메세지를 주고 받게 하겠다. 메세지 흐름 메세지 의미 휴대폰앱 to PC B바코드 바코드 전송 A상품명 상품 등록 Pc to 휴대폰앱 -1 검색에서 일치하는 바코드 없음 -2 상품명 등록이 중복임 Cancel 1 정상 등록됨 OK 동영상 확인하기
PC에서 블루투스 동글 사용하여 휴대폰과 연결하기 내 PC가 구형이라 블루투스 기능이 없다. 그래서 블루투스 동글을 사용했다. 동글도 없다면 아두이노 보드나 UART convert를 블루투스모튤과 연결 하면 된다. 연결시 미리 터미널 프로그램을 실행한후 블루투스 ComPort에 연결 한다. 이렇게 안하면 앱에서 연결이 실패한다. 앱인벤트 소스 외부스캐너사용 체크를 하면 안된다. 실행화면 https://youtu.be/zPJhBbXLF6s
휴대폰을 사용한 BarCode Reader BarCode PC XML DataBase와 연동 하기 앱인벤트로 바코드 읽기 PC에서 블루투스 동글 사용하여 휴대폰과 연결하기 PC와 앱사이 메세지 주고 받기 DataGrid 프로그램과 앱 연동하기 ( 검색, 추가 ) BarCode 아두이노와 연동하기 아두이노와 바코드앱 메세지 주고 받기 아두이노 SD카드에 DaraBase구축 아두이노 DB와 휴대폰 바코드 연동하여 TFT LCD에 출력하기 아두이노 Mega사용하기 메모리 내장폰트와 SD카드 폰트 동시 사용으로 화면 출력속도 개선 Test ☞ 속도 차이 없음 ( 코드에 폰트 삽입 이나 SD카드이용 속도가 거의 같음 ) Mega로 바코드 연동하기 ☞ SD카드를 사용 안할시 Uno보다 훨씬 많은 폰트를 삽입할 수 있음( 100자 이상) 참고로 SD카드를 사..
앱인벤트로 BarCode 읽기 휴대폰을 Barcode Reader로 사용하려고 한다. 읽은 바코드는 PC의 XML 데이타베이스와 연동 할 것이다. 그리고 아두이노 TFT LCD SD카드를 이용하여 PC가 아닌 아두이노에 데이타베이스를 만들어 운영 할 계획이다. 먼저 앱 인벤트로 바코드를 읽는 부분을 만들어야 겠다. 이미 만들어진 부분을 활용 하면된다. 블루투스로 데이타를 PC로 넘기는 수정만 하면 된다.
한글CLASS 메소드 HanGul_SD.H HanGul_Direct.H Class 메소드 void start() 한글클래스 시작 void end() 한글클래스 종료 : 사용 안해도 됨 void color(int _c ) 글자색 void color(int _c ,int _bk) 글자색, 배경색 void fill(int _c) 바로 앞에 출력한 문자열을 _c 색으로 채우기 void fill() 배경색으로 채우기 void rect(int _c) 바로 앞에 출력한 문자열에 _c 색으로 테두리 그리기 void rect() 문자색으로 테두리 그리기 void under(int _c) 바로 앞에 출력한 문자열에 문자색으로 밑줄 그리기 void under() 문자색으로 밑줄 그리기 void print( String s, int x, int ..
한글출력 Class 폰트파일, 인덱스 규격 HanGul.TFT.H ver 1.0 아두이노용 한글 출력 클래스 사용할 폰트와 인텍스는 다음 규격으로 만들어 사용 하세요.( Binary 파일로 작성하세요) 폰트 파일 규격 구조 레코드당 : 32 Byte Font Data Binary File 폰트 기록 순서 코드 값이 작은 것부터 기록 폰트파일 32Byte 32Byte : 32Byte 인덱스 방법 필드 1 필드 2 레코드 사이즈 인덱스 방법 1 폰트offset : 4byte Long 4Byte 인덱스 방법 2 폰트코드 : 4byte Long 폰트offset : 4byte Long 8Byte 인덱스 방법 1 인덱스 방법 2 폰트 offset : 4Byte 문자코드 : 4Byte 폰트 offset : 4Byte 폰트 offset : 4Byte 문자코드 ..
앱인벤터 블록 소스 블루투스 연결 부분은 여기로 이동하세요.
아두이노 소스코드 #include // 블루투스 시리얼 통신 라이브러리 추가 #define BT_RXD 9 // RXD SoftwareSerial bluetooth(BT_RXD, BT_TXD); boolean pSetup = false; // 셋업모드가 아님 int pMode = 1; // 정지모드 int dcPin =3; // 릴레이 신호핀 unsigned long setTime=0; // 작동시간 void setup() { bluetooth.begin(9600); pinMode( dcPin,OUTPUT); } void loop() { char code=' '; if (bluetooth.available()) code = char(bluetooth.read()); //블루투스에서 한문자 받음 else code= ' ';..
릴레이로 DC모터 제어하기 휴대폰 앱으로 릴레이를 제어 하는 프로젝트입니다. DC모터 패턴 출력이 필요하여 만들었는 데 다른 곳에도 응용 하시면 될 듯합니다. 전등 같은... 이번 패턴출력은 모터를 정해진 n초로 On 0.2초 정지를 반복하는 것입니다. 프로그래밍 을 수정 하면 보다 다양한 패턴을 출력 할수 있습니다. 사용할 모터는 24V로 릴레이가 감당 할수 있는 규격이네요. 앱인벤트로 앱을 작성했고 아두이노 nano에서 릴레이를 제어 합니다. https://youtu.be/8NKTlgHlltU
아두이노 Uno
아두이노 Mega 통신 핀 Serial( UART ) RX TX Serial 0 1 Serial 1 19 18 Serial 2 17 16 Serial 3 15 14 I2C ( Wire.H ) 비교 Uno SDA 20 A4 SCL 21 A5 SPI ( SPI.H ) MOSI 51 11 MISO 50 12 SCK 52 13 SS 53 10 소프트시리얼 가능핀 10,11,12,13,14,15, 50,51,52,53, 62,63,64
C# tip 목록 문자 숫자 형변환 C# 문자를 숫자로 변환하기 C# 숫자를 문자열로 변환하기 코드값을 문자로 전환 / 문자코드값 구하기 문자열 나누기 StringSplit 파일 C# 텍스트파일 입출력 Text File C# 2진 파일 입출력 BinaryFile 현재작업디렉토리 파일패스에서 파일명 얻기 Serialize 사용 안하고 이진파일로 구조체 / Class 저장하고 읽기 Serialize 사용 이진파일로 구조체 / Class 저장하고 읽기 외부 프로그램 실핼 인수 없이 외부프로그램 실행시키기 커맨드 라인 인자 전달 외부프로그램 실행 실행한 외부프로그램 종료까지 기다리기 DataGridView DataGridView Header 속성 편집 DataGridView에 Row Index 표시하기 DataGridView 선..
TFT LCD SD카드 한글 출력 Index 방법 Index파일을 사용하면 빠르게 폰트 data를 찾아 표시 할 수 있다. Index방법은 2가지 방법이 있다. 아두이노는 UTF-8 3Byte 한글코드를 사용한다 한글코드는 0xE28A82 ~ 0xEFBFA6 범위에 널려있다. 한곳에 모여 있어면 한글코드로 바로 폰트파일에서 폰트를 찾으면 되다. (한글코드 - 시작 한글코드) * 폰트크기 : 폰트파일에서 폰트위치 그래서 중간에 Index파일을 사용하여 해결했다. Index파일을 사용하면 빠르게 폰트 data를 찾아 표시 할 수 있다. Index방법은 2가지 방법이 있다. Index방법 장점 단점 비고 인덱스 방법 1 빈코드를 포함한 Index 속도가 빠름 Index파일의 크기가 큼 혹시 방법 2로 속도가 안나오면 대신 사용 인덱스 방법 2 일반적인 Ind..
XML DataGridView DB 프로그램 1. C# XML 데이타베이스 구조 관리 프로그램 C# XML 데이타베이스 구조 관리 프로그램 개요 ver 2.0 2.1 C# XML 데이타베이스 구조 관리 프로그램 사용법 (2) 2. DataGrid 프로그램 ( XML DataBase 편집 프로그램 ) DataGrid 프로그램 ( XML DataBase 편집 프로그램 ) ver 1.5 DataGrid 프로그램 ( XML DataBase 편집 프로그램 )중요 소스 (2) C# XML 데이타베이스 구조 관리 프로그램 소스코드 (3)
전체글 목록 ◯━━━━━◀ 업데이트중 ▶━━━━━━━━━━━━━━━━━━━◯ ♡ MQTT 프로토콜로 PC, 아두이노, 휴대폰 다중 연결하기 ♡ 휴대폰을 무선 디스플레이로 활용하기 ( 완성 - APK ,AIA 다운가능) ♡ 휴대폰을 이용한 BarCode Reader ♡ 아두이노용 TFT LCD 한글 출력 ( 완성 - 소스 Copy 가능) ◯━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◯ ♡ 16x16 폰트에디터 ♡ 앱으로 조정 하는 릴레이를 이용한 24V DC모터 패턴 출력 릴레이로 DC모터 제어하기 앱인벤트 블럭 소스 아두이노 소스 ♡ C# XML 데이타베이스 구조 관리 프로그램 ♡ 시리얼 터미널 프로그램 ver 1.0 시리얼 터미널 프로그램 ver 1.0 시리얼 터미널 프로그램 소스코드 ♡ GoFol..
TFT LCD에 한글 출력 하기 ◯━━━━━◀ 최신 자료 ▶━━━━━━━━━━━━━━━━━━━◯ 한글 출력 방법 3가지 ( 클릭 하면 해당 소스로 감..) 1. Hangul_Directed.H - SD카드 필요 없음 아두이노 한글 폰트 Code 자동생성 프로그램 ver 2.5 필요 추출한 폰트를 프로그램에 삽입 하는 방식 Uno최대 30자정도, Mega(주2) 160자정도 프로그램이 길어지면 더욱 줄어 든다. 2. Hangul_SD_Selected.H - SD카드 필요함 아두이노 한글 폰트 Code 자동생성 프로그램 ver 2.5 필요 추출한 폰트를 파일로 저장하여 필요시 읽어 옴 폰트수 이론상 제한 없음 다만 아두이노 코딩안의 한글수가 제한됨 (메모리를 소모시킴) ( 주1) 3. Hangul_SD.H - SD카드 필요 - 별도의 폰트..
TFT LCD에서 SD카드 다양한 한글 출력 (7) https://youtu.be/yS_wQY9ekw4
TFT LCD에서 SD카드 한글 출력 인덱스 사용( 속도 빨라짐) (6) 앞의 (5)번글에서 상당이 속도가 느렸다. 글자당 폰트파일 하나를 만드는 방식은 폰트를 찾을 때 한글코드로 바로 찾을 수 있는 장점이 있다. 예로 '가'는 EAB080으로 폰트 파일은 EAB080.utf 로 바로 찾을 수 있다. 여러가지 실험 끝에 파일 오픈에 매우 많은 시간이 소요 되었다. 그래서 글자마다 계속 하나씩 파일 오픈하니 속도가 느려질 수밖에 없었다. 그래서 폰트 파일을 하나의 파일로 만들었다 Hangul.utf 파일을 프로그램 시작시 오픈 한 후 계속 사용하면 오픈에 소용되는 시간이 없어져 속도가 크게 개선 될것이다. 구조는 레코드당 ( 한글코드+폰트)로 만들었다. 근데 문제는 한글코드로 폰트 위치 찾기였다. 일단 단순하게 레코드의 한글코드를 모두 비교하여 코드를 찾았다. 시간이 별로 개선..
TFT LCD에서 SD카드 한글 출력-많이 느림 (5) SD카드에 한글폰틀 모두 저장하고 TFT LCD에 표시해 보았습니다. 하나의 폰트파일에서 코드를 검색하여 폰트를 가져오는 방법은 코딩이 길어져 아두이노의 메모리에 부담을 줄것 같아 폰트를 코드를 이름으로 하는 각각 한글자당 하나의 파일로 만들고 불러오는 방식으로 했습니다. SD카드 라이브러리가 많은 용량을이 필요하여 가급적 코드를 줄였습니다. 처음에는 폴더 파일을 만들고 그 안에 모든 폰트파일을 담아 실행하니 너무 속도가..ㅠㅠ 그래서 모든 파일은 root에 두었습니다. 그래도 역시 메모리 보다 상당이 속도가...ㅠㅠ 함 보시죠. https://youtu.be/ubfARR1dFyo 좀더 방법을 연구..............
GoFold ver 1.0 간편 폴드 열기 프로그램 동영상에서 보는 것보다 개선되어 더 작게 접어짐 체크박스 설명 ☑ Checked □ UnChecked ☑ 항상 위 TopMost =true 가능한 다른 폼 위에 표시(주1) ☑ 버튼세팅 간편버튼( 종료버튼 위에 있는 5개) 편집모드 일반 모드 ☑ 설명표시 편집모드시 설명 표시 표시 안함 (주1) TopMost=true인 다른 폼이 있는 경우 항상 최상위에 표시 되는 것 아니에요. 편집 모드시 설명 ☑ 버튼세팅 기능 사 용 법 등록하기 리스트박스에서 원클릭으로 선택 후 원하는 버튼을 클릭하먄 등록됨 삭제하기 버튼 옆의 체크박스를 Check한 후 삭제버튼을 클릭한다 등록된 폴더 열기 리스트박스에서 리스트박스에서 원하는 목록을 더블 클릭한다. (원 클릭은 선택만 하는 것임 ) 간편버튼 원하는 버튼을 클릭 등록..