본문 바로가기

분류 전체보기

(125)
Arduino TFT LCD 한글 출력 소스 CODE(1) #include // TFT LCD 사용을 위해 그냥 Copy하여 사용할 코드들 입니다. #include #define _TFTLCD LcdName // LcdName을 원하시는 이름으로 변경 하시면 됩니다. UTFTGLUE myGLCD(0x9488,A2,A1,A3,A4,A0); ///////////////////// TFT #define cBLACK #define cWHITE #define cRED #define cGREEN #define cBLUE #define cSILVER #define cGRAY #define cMAROON #define cYELLOW #define cOLIVE #define cLIME #define cAQUA #define cTEAL #define cNAVY #define cF..
아두이노 한글 폰트 Code 자동생성 프로그램 ver 2.5 2.5버젼으로 업그레이드 되면서 한글 Class는 Hangul_Direct.H Hangul_SD_Selected.H만 사용 이전에 만든 다른 한글 Class와는 호환이 안됨 두개의 파일이 생성됨 txt파일은 Hangul_Direct.H용 (코드 삽입용) utf파일은 Hangul_SD_Selected.H용 (SD카드 저장용) 처음 한글1자씩 추출하는 프로그램에서 출발하여 이제 완성 되었습니다. 제가 사용 해보니 이젠 별다른 개선은 필요 없을 듯합니다. 버그가 나오면 수정 하는 정도만........ 이전 버젼은 카테고리 [소스코드 & 지난버젼]에 글들이 있습니다. 참고 하세요. 1. 문장 입력하기 텍스트박스에 문장을 입력하세요, 입력한 문장에서 자동으로 한글만 중복 없이 추출합니다. 따라서 영문, 숫자가 함..
TFT LCD 3.5 인치 Library 다운로드 파일 압축풀기를 하면 4개의 압축파일이 생김 4개의 압축파일은 압축풀기를 하지 마시고 자신의 아두이노에 설치 안된 라이브러리만 다음과 같이 각각 설치 하세요. 아두이노 IDE 메뉴에서 스케치- > 라이브러리 포함하기 -> zip 포함하기를 선택 하여 추가 합니다.
L293D shield 핀맵 연결 핀 (예시) M1 M2 사용시 이용 가능핀 (예시) M3 M4사용시 이용 가능핀 Servo1,2 D2 다른 곳에 가능 다른 곳에 가능 M2 D3 X 다른 곳에 가능 ALL D4 X X M3 D5 다른 곳에 가능 X M4 D6 다른 곳에 가능 X ALL D7 X X ALL D8 X X Servo2 D9 다른 곳에 가능 다른 곳에 가능 Servo1 D10 다른 곳에 가능 다른 곳에 가능 M1 D11 X 다른 곳에 가능 ALL D12 X X Not Use D13 다른 곳에 가능 다른 곳에 가능 All Analog Pin 모두 사용 가능 모두사용가능 모터 M1 M2 M3 M4 서보모터 Servo1 Servo2를 사용 할수 있는 모터 드라이브입니다. 여기서 사용 안할 모터의 핀은 다른 곳에 사용 하시면 됩니..
TFT LCD 3.5 인치 SD카드 쉴드 Pin Map TFT LCD 사용 Pin Map입니다. 아두이노 Uno의 경우 다른곳에 사용 가능한 핀은 A5 핀 SD카드를 사용 안하면 10, 11, 12, 13 핀 사용가능 핀이 부족하면 Mega사용하면 됨 Mega 사양 - 핀 걱정 안해도 됨 다만 SD카드를 사용 하려면 Uno와 SPI핀번호가 달라 다음 중 하나의 방법으로 해야 한다. 쉴드를 아두이노 Mega에서 SD카드 사용을 위한 방법(Uno와 SPI핀 다름) Uno의 SPI핀번호에 해당하는 핀을 SPI핀과 연결함 번거롭다(납땜이 필요) 10,11,12,13핀 사용불가 핀헤드를 사용 하는 방법 (추천) 납땜 필요 없음 10,11,12,13핀 사용 가능 SD모듈을 따로 구입하여 사용한다. 얼마 안함 저렴함.( 추천 ) 핀헤드 사용 : 싈드와 Mega보드 연결 ..
배열 늘리기 Array.Resize( ref 배열이름 , 새로운 크기 ); using System; namespace ConsoleApp2 { internal class Program { public struct Font { public string s; public short[] f; } static void Main(string[] args) { Font[] font = new Font[1]; 방 1칸 font[0].s = "한"; font[0].f = new short[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Array.Resize(ref font, 2); 방 2칸 Font f = new Font("국", new short[] { 0, 1, 2, 3 }); font[1] = f; Cons..
TFT LCD에서 한글 영문 같이 출력(4) 이제는 다음과 같은 함수로 간단이 화면에 한글과 영문을 같이 표현 한다. printFont( "아름다운 KOREA 한글",5,100,1); void printFont( String s, int x, int y , int m ) // m은 배율이다. { myGLCD.setTextSize(2*m); int size=sizeof(font) /sizeof(Font); // font의 갯수를 구함 C#의 length 같은 것이 없어서 // 전체 font의크기 / Font 구조체 사이즈 = font갯수 for( int p=0; p
TFT LCD에서 한글 출력 출력소스 개선(3) TFT LCD에서 한글 출력 (2)의 소스를 배열을 이용한 코드로 수정 합니다. 공백폰트를 하나 추가합니다. // ' ' BitMap Font unsigned short fontBlank[16] ={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }; 폰트 밑에 다음과 같이 포인터 변수를 선언 합니다. short *font[]={ fontA ,fontRum, fontDa,fontUn,fontBlank,fontHan,fontGul }; Setup()의 출력부분 코드를 다음과 같이 변경합니다. for( int i =3; i >=1 ;i--) { x=50; fSize=i*16; // 1배는 16 dot 2배는 32 dot n배는 n*16 dot if( i == 2 ) myGLCD.setColor( ..
C# XML 데이타베이스 구조 관리 프로그램 소스코드 (3) // // 제작자 : 신 옥 진 // // 스스로 수정 안한 단순 재배포는 금지, 그냥 링크를 사용 하세요. // 수정후 배포시 원 제작자 표시 삭제 금지 및 댓글로 알려주세요. ( 예의) // // 영리목적( 유료 강의 자료, 판매 시스템에 포함 등 )의 사용은 사전 허락을 받아야 합니다. // using System; using System.Data; using System.IO; using System.Windows.Forms; /// 연구중 /// namespace XML_DBM { public partial class frmMain : Form { public static bool 한글사용 = true; // 전역변수 bool Working = false; //false 대기중 // true 작..
TFT LCD에서 특정 폰트만 추출하여 한글 출력 (2) 동영상보기 보다 다양하게 한글을 출력한 모습입니다. 한글 폰트 만들기 프로그램으로 추출한 폰트 를 사용했습니다. 필요한 폰트만 아두이노 코드에 올려 사용합니다. 속도가 빠르지만 많은 문자는 아두이노 용량때문에 제한 됩니다. 아두이노 Uno에서는 30자 이상은 무리...에러 또는 다운됨 프로그램 길이에 따라 메모리가 부족 할수도 있습니다. 아두이노 메가에도 TFTLCD쉴드를 사용 할수 있습니다. 메가는 아두이노의 4배용량입니다. 그래서 메가 추천 필요한 폰트만 가져오면 용량이 작은 아두이노에서도 문제 없습니다. 아두이노 소스 코드 #include #include UTFTGLUE myGLCD(0x9488,A2,A1,A3,A4,A0); ///////////////////// TFT #define cBLACK ..
아두이노와 대화하며 놀기 심심풀이 https://youtu.be/-Bir7s16E8A 아두이노 소스코드 ( 엄청 간단 ㅎㅎㅎ) const int TableLength =10; String table[TableLength][2]={ {"그만","대기모드로 전환합니다."}, // KryWord , 대답 {"모델","Arduino Uno 입니다."}, {"이름","AI 진이입니다."}, {"안녕","네 안녕하세요."}, {"나이","1살입니다."}, {"성별","여자입니다."}, {"여자","여자입니다."}, {"남자","여자입니다."}, {"속도","연결속도는 시리얼통신 방식으로 속도는 9600입니다."}, {"연결","연결속도는 시리얼통신 방식으로 속도는 9600입니다."} }; boolean firstMsgGet=true; // 프로그램..
DataGridView의 Row 갯수는? DataGridView의 Row 갯수는? DataGrid이름.Rows.Count 가 아님 DataGrid이름.Rows.Count - 1 이에요. 마지막 입력이 안된 null Row를 포함한 갯수라 -1해야 실제 갯수입니다. 그리고 마지막 Row의 인덱스는 DataGrid이름.Rows.Count -2 입니다 if ( dataGrid.Selected.Rows[0].index == dataGrid.Rows.Count -2 ) 선택된 Row가 마지막 Row인가?
검색결과 레코드(Row) DataGrid에 모우기 위의 그림처럼 검색에 해당하는 Row를 모아 DataGridView에 보여주기 DataTable과 연결된DataGridView는 프로그램 코드로 삽입,삭제를 못한다. 그래서 Table에 직접 해야 한다. 우선 Table 복사판을 만들고 일치 히지 않는 Row를 제거한후 DataGrid와 복사본을 연결 시키면 일치하는 Row만 있는 화면을 볼수 있다. 꼭 복사판에 작업해야 원본이 보존된다. private void btSerch_Click(object sender, EventArgs e) { if (txtSerch.Text == "") return; // 빈값이면 return int rowIndex = 0; // Row Index 첫번째 Row DataTable tempDt= new DataTable(); ..
Table에 연결된 DataGridView Row 이동방법 바운딩된 DataGrid는 삭제 삽입이 안됩니다. 그래서 Table에서 삭제 삽입을 해야 합니다. 그러면 바로 DataGridView에도 반영됩니다. 다음의 코드는 Row를 위로 아래로 이동 시키는 코드 예입니다. public partial class Form1 : Form { DataSet ds; // 작업 DataSet DataTable dt; // 작업 Data Table // DataGridView의 이름 dataGrid private void btUp_Click(object sender, EventArgs e) { int index = dataGrid.SelectedRows[0].Index; // 선택된 Row의 인덱스 if (index dataGrid.Rows.Count-2) return; /..
DataGridView에서 선택된 Cell 처리 private void dataGrid_CellContentClick(object sender, DataGridViewCellEventArgs e) { txtSerch.Text = dataGrid.SelectedCells[e.ColumnIndex].Value.ToString(); }
KityRobot Car 소스코드 L239D 모터 쉴드는 M1 M2 M3 M4 Servo1 Servo2를 제어 할수 있다. 위 핀맵은 사용하는 모터에 따른 이용 가능한 디지탈 핀을 나타내고 있다. 아날로그는 모두 사용 가능 여기서는 M3 M4 모터를 사용하니 사용 가능한 디지탈 핀은 2,3,9,10,11,13번 핀이다. 아래의 코드를 보면 센서들이 이 번호를 사용 하고 있을 것이다. 참고로 디지탈 핀이 많이 필요하면 Mega나 쉬프트 레지스터를 이용하면 된다. #include // L293D 모터 드라이브 라이브러리 #include // I2C 통신을 위한 라이브러리 #include // LCD 1602 I2C용 라이브러리 LiquidCrystal_I2C lcd(0x27,16,2); // 접근주소: 0x3F or 0x27 // SDA A..
KityRobot Car 소개 시간이 날때마다 조금씩 코드를 만들고 있는 KityRobotCar입니다. 재미로 함 보시고 코드는 다른페이지에 계속 업데이트 중입니다. https://youtu.be/e4kd8OVqPSw 전방 적외선 거리센서 : 장애물 감지 ( 초음파보다 안정적임 ) 좌측 우측 적외선 센서 : 장애물 탐지 보조 아래쪽 적외선 센서 : 절벽 탐지( 책상 모서리에 오면 멈춤 ) LCD1602 L293D 모터드라이브 전원 On IR 센서에 손을 가까이 하면 시동 전방에 장애물이나 낭떨어지면 뒤로 후퇴후 회전후 전진 좌측에 장애물 감지하면 반시계방향 회전후 전진 우측에 장애물 감지하면 시계방향 회전후 전진
바코드와 FireDB 바코드를 스캔하면 FireDB에 일치 하는 것이 있어면 제품명을 출력하고 없으면 제품명을 기입후 등록버튼으로 등록한다. FireDB 저장 : 호출( 값저장하기 ) 1 블록 FireDB 읽기 : 호출( 값 가져오기) 실행( 값을 받았을때) 2 블록 FireDB 지우기 : 호출( 태그리스트 요구) 삭제( 태그리스트를 받았을 때 ) 2 블록 CloudDB, TinyWebDB 도 같음 // 휴대폰이 아닌 외부Serve에 DB가 있는 경우 TinyDb는 바로 1블록으로 // 휴대폰에 저장됨 TinyWebDB는 한글 지원이 안되는 듯...???
앱인벤터 블루투스 연결법 블루투스를 이용하여 아두이노 나노의 릴레이를 조작하여 24V DC모터를 제어하는 코드의 블루투스 연결 코드입니다. BT_연결상태 : 레이블 (Label) BT_연결 : 목록선택상자 ( ListPicker) BT_종료 : 버튼 ( Button ) BlutoothClient1 : 블루투스클라이언트 목록선택상자에 연결 가능한 블루투스 목록을 가져옴 목록선택상자를 클릭하면 선택된 블루투스에 연결하기 연결이 성공하면 BT_종료 보이기 BT_연결은 안보이기 연결상태 라벨은 OnLine으로 종료버튼을 누르면 연결을 끊고 다시 연결대기 상태로
한글 폰트 메이커(2) 소스코드분석 ver 1.00 폰트 Class using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HangulFontFileMaker { internal class HangulFont { public static string[,] hangulFont ={ // { 한글 EU-KC코드 , 폰트 } { "AC00", "000000083F08008800880088008E00880108010802080C087008000800080000" }, { "AC01", "00003F0800880088008E010806087808000800001FF00..
DataGrid 프로그램 ( XML DataBase 편집 프로그램 )중요 소스 (2) 중요 소스코드 분석 ver 1.01 using DataGrid; using System; using System.Data; using System.Diagnostics; using System.Drawing; using System.Windows.Forms; /// 연구용 /// namespace DataGridXML { public partial class Form1 : Form { bool NoEdit = true; // 변경 내용이 없음 DataSet ds; // 작업 DataSet DataTable dt; // 작업 Data Table string df; // 작업 File Path (파일 이름 포함 경로) string wf = Application.StartupPath; // 작업 경로 priv..
DataGrid 프로그램 ( XML DataBase 편집 프로그램 ) ver 1.5 사용법 영상 보기 도구 -> Run XML Manager 은 XML 파일 만드는 프로그램을 실행 시킨다 ver 1.00 2022/7/30 ver1.01 2022/7/31 Cell을 선택하면 검색Box에 Cell내용 자동 입력 그다음 검색대상 Table을 선택 후 검색버튼을 누르면 검색 됩니다. ver 1.5 2022/8/1 검색기능이 멀티로 개선 / Row이동이 가능
한글 폰트 메이커(1) 아두이노에서 사용할 폰트 추출 프로그램입니다. 한글 1자에 대한 폰트를 파일로 만들어 줍니다. 파일 위치는 실행파일 아래 font라는 디렉토리에 .txt 파일으로 생성이 됩니다. 모든 문자를 추출후 도구에 파일 합치기로 하나의 파일을 만들어 보세요. 합칠 파일은 반드시 같은 디렉토리에 생성 하세요. 그럼 아두이노 소스에 복사하기 편할 것입니다. 다운 받을 프로그램은 UniCode버젼입니다. 사용법은 영상으로 https://youtu.be/mp8DdeqQmZw 만들어진 폰트파일 //---- 폰트 만들기 프로그램 ver 1.2 로 만든 코드임------------ struct Font // 폰트구조체 { String s; // 폰트글자 unsigned short f[16]; // 폰트 }; Font font..
TFT LCD에서 한글 출력 (1) 한글 출력에 사용할 TFT LCD입니다. 보드 : 아두이노 Uno , Mega --- Mega추천 용량이 4배 (Mega 직구로 2개에 배송비 포함 ₩ 28,399에 구입) TFTLCD : 알리,옥션 등에 파는 489x320 VGA 3.5인치 SD카드 쉴드 가격은 1만원 이하에서 비싼 곳은 3만원 하네요. 3년전에 $17.79에 알리스 구입 구형이라 많이 저렴해 졌네요. 터치팬 기능 없는 제품입니다. SD카드 라이브러리 사용시 메모리 많이 잡아 먹음 micro SD카드 FAT16 FAT32포멧 windows에서는 64GB이하만 FAT포맷됨 그이상은 안됨 그이상은 다른 포맷 프로그램으로 포맷하면 사용 가능. (구글링하면 바로 나옴) 근데 폰트파일과 인덱스 파일에는 큰 용량 필요 없음 검색은 3.5 인치 T..
폼 닫기 취소 시키기 form closing cancel 폼닫기 버튼,메뉴 등등으로 form closing 될때 취소 시키는 법 private void frmMain_FormClosing(object sender, FormClosingEventArgs e) { FormYesNo frm = new FormYesNo(); DialogResult re = frm.ShowDialog(); if (re == DialogResult.Cancel) e.Cancel = true;// Closing 취소시키고 return // 아래문 실행 안됨 if (re == DialogResult.Yes) btSave_Click(null, null); // 저장하기 }//func
C# XML 데이타베이스 구조 관리 프로그램 사용법 (2) Control 기능 DataSet 관 리 C# DataSet btDataSet DataSet의 이름 btDataSet "새로생성" - txtDataSet을 이름으로 한 DataSet만들기 "초기화" - 처음 프로그램 로딩 상 태로 Table 관 리 C# DataTable btTableAdd txtTable을 이름으로한 빈 Table생성하고 cbTable목록에 추가 btTableRename Table의 이름을 txtTable로 변경 btTableDel ( Table Data 손실됨 ) Table으삭제 ( 주의 Table의 모든 자료 없어짐 ) cbTable 선택한 Table의 필드명 들을 lisField에 보여준다. 필 드 관리 C# DataColumn btAdd txtField를 이름으로한 필드추가 bt..
C# XML 데이타베이스 구조 관리 프로그램 개요 ver 2.0 2.1 DataGridView에서 사용 할 XML 파일 관리 사용법 보기 (동영상) 소스코드 보기 파일 업데이트 정보 ver 2.0 기능 업데이트 기존 프로그램에서 필드 편집시 데이타가 손실 되는 것을 해결함 22년 8월 3일 테이블, 필드 삭제시만 테이터가 손실됩니다. 이름 변경, 위치이동, 새 필드 or 테이블 추가시 테이터 보존됨 삭제동작시 경고창, 삭제동작을 잠그는 기능도 추가 ( 실수로 삭제시는 백업파일을 활용 하세요 ) ver 2.1 기능은 동일 하지만 각 버튼의 enabled속성 대신 visuable속성을 사용한 프로그맴입니다. https://youtu.be/YynGs9EbWO4
리치텍스트박스 RichTextBox에서 행 단위로 색깔 바꾸기 리치텍스트박스.SelectionColor = Color.Yellow; 리치텍스트박스.AppendText("텍스트 내용" + "\r\n");
멀티 텍스트박스 Multi TextBox 에서 추가한 곳으로 스크롤 화면 이동 텍스트박스.ScrollToCaret(); // 현재위치로 스크롤
시리얼포트 읽기 DataReceived 한문장이 한번에 안들어 올때 타이머를 이용하여 해결함 private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { buff += serialPort.ReadExisting(); // buff에 한문장이 한번에 잘 안들어옴 // 그래서 타이머를 사용하여 일정시간 buff에 누적 저장한 후 // 타이머 Event에서 한번에 출력 타이머간격은 0.3초가 적당 } private void timer1_Tick(object sender, EventArgs e) { txtOut.AppendText( buff + "\r\n" ); buff = ""; }//func