আগেই বলেছিলাম সি তে খুব সহজেই হার্ডওয়ার ডিভাইজ নিয়ে কাজ করা যায়। আমরা এ পর্বে সি প্রগ্রামিং এর মাধ্যমে কী বোর্ড নিয়ে কাজ করবো। এর পর মিউজিক্যাল কীবোর্ড বানানোর সহজ সি প্রজেক্টটি দেখবো।
প্রতিটি কী এর ASCII () মান রয়েছে। নিচের টেবিলে এই মানের ছক দেয়া হলো।
NON PRINTABLE CHARACTERS | |||||
DEC | HEX | CHARACTER (CODE) | DEC | HEX | CHARACTER (CODE) |
0 | 0 | NULL | 16 | 10 | DATA LINK ESCAPE (DLE) |
1 | 1 | START OF HEADING (SOH) | 17 | 11 | DEVICE CONTROL 1 (DC1) |
2 | 2 | START OF TEXT (STX) | 18 | 12 | DEVICE CONTROL 2 (DC2) |
3 | 3 | END OF TEXT (ETX) | 19 | 13 | DEVICE CONTROL 3 (DC3) |
4 | 4 | END OF TRANSMISSION (EOT) | 20 | 14 | DEVICE CONTROL 4 (DC4) |
5 | 5 | END OF QUERY (ENQ) | 21 | 15 | NEGATIVE ACKNOWLEDGEMENT (NAK) |
6 | 6 | ACKNOWLEDGE (ACK) | 22 | 16 | SYNCHRONIZE (SYN) |
7 | 7 | BEEP (BEL) | 23 | 17 | END OF TRANSMISSION BLOCK (ETB) |
8 | 8 | BACKSPACE (BS) | 24 | 18 | CANCEL (CAN) |
9 | 9 | HORIZONTAL TAB (HT) | 25 | 19 | END OF MEDIUM (EM) |
10 | A | LINE FEED (LF) | 26 | 1A | SUBSTITUTE (SUB) |
11 | B | VERTICAL TAB (VT) | 27 | 1B | ESCAPE (ESC) |
12 | C | FF (FORM FEED) | 28 | 1C | FILE SEPARATOR (FS) RIGHT ARROW |
13 | D | CR (CARRIAGE RETURN) | 29 | 1D | GROUP SEPARATOR (GS) LEFT ARROW |
14 | E | SO (SHIFT OUT) | 30 | 1E | RECORD SEPARATOR (RS) UP ARROW |
15 | F | SI (SHIFT IN) | 31 | 1F | UNIT SEPARATOR (US) DOWN ARROW |
PRINTABLE CHARACTERS | ||||||||
DEC | HEX | CHARACTER | DEC | HEX | CHARACTER | DEC | HEX | CHARACTER |
32 | 0x20 | <SPACE> | 64 | 0x40 | @ | 96 | 0x60 | ` |
33 | 0x21 | ! | 65 | 0x41 | A | 97 | 0x61 | a |
34 | 0x22 | “ | 66 | 0x42 | B | 98 | 0x62 | b |
35 | 0x23 | # | 67 | 0x43 | C | 99 | 0x63 | c |
36 | 0x24 | $ | 68 | 0x44 | D | 100 | 0x64 | d |
37 | 0x25 | % | 69 | 0x45 | E | 101 | 0x65 | e |
38 | 0x26 | & | 70 | 0x46 | F | 102 | 0x66 | f |
39 | 0x27 | ‘ | 71 | 0x47 | G | 103 | 0x67 | g |
40 | 0x28 | ( | 72 | 0x48 | H | 104 | 0x68 | h |
41 | 0x29 | ) | 73 | 0x49 | I | 105 | 0x69 | i |
42 | 0x2A | * | 74 | 0x4A | J | 106 | 0x6A | j |
43 | 0x2B | + | 75 | 0x4B | K | 107 | 0x6B | k |
44 | 0x2C | , | 76 | 0x4C | L | 108 | 0x6C | l |
45 | 0x2D | – | 77 | 0x4D | M | 109 | 0x6D | m |
46 | 0x2E | . | 78 | 0x4E | N | 110 | 0x6E | n |
47 | 0x2F | / | 79 | 0x4F | O | 111 | 0x6F | o |
48 | 0x30 | 0 | 80 | 0x50 | P | 112 | 0x70 | p |
49 | 0x31 | 1 | 81 | 0x51 | Q | 113 | 0x71 | q |
50 | 0x32 | 2 | 82 | 0x52 | R | 114 | 0x72 | r |
51 | 0x33 | 3 | 83 | 0x53 | S | 115 | 0x73 | s |
52 | 0x34 | 4 | 84 | 0x54 | T | 116 | 0x74 | t |
53 | 0x35 | 5 | 85 | 0x55 | U | 117 | 0x75 | u |
54 | 0x36 | 6 | 86 | 0x56 | V | 118 | 0x76 | v |
55 | 0x37 | 7 | 87 | 0x57 | W | 119 | 0x77 | w |
56 | 0x38 | 8 | 88 | 0x58 | X | 120 | 0x78 | x |
57 | 0x39 | 9 | 89 | 0x59 | Y | 121 | 0x79 | y |
58 | 0x3A | : | 90 | 0x5A | Z | 122 | 0x7A | z |
59 | 0x3B | ; | 91 | 0x5B | [ | 123 | 0x7B | { |
60 | 0x3C | < | 92 | 0x5C | \ | 124 | 0x7C | | |
61 | 0x3D | = | 93 | 0x5D | ] | 125 | 0x7D | } |
62 | 0x3E | > | 94 | 0x5E | ^ | 126 | 0x7E | ~ |
63 | 0x3F | ? | 95 | 0x5F | _ | 127 | 0x7F | <DEL> |
EXTENDED ASCII CHARACTERS | ||||||||
DEC | HEX | CHARACTER | DEC | HEX | CHARACTER | DEC | HEX | CHARACTER |
128 | 0x80 | € | 171 | 0xAB | « | 214 | 0xD6 | Ö |
129 | 0x81 | � | 172 | 0xAC | ¬ | 215 | 0xD7 | × |
130 | 0x82 | ‚ | 173 | 0xAD | | 216 | 0xD8 | Ø |
131 | 0x83 | ƒ | 174 | 0xAE | ® | 217 | 0xD9 | Ù |
132 | 0x84 | „ | 175 | 0xAF | ¯ | 218 | 0xDA | Ú |
133 | 0x85 | … | 176 | 0xB0 | ° | 219 | 0xDB | Û |
134 | 0x86 | † | 177 | 0xB1 | ± | 220 | 0xDC | Ü |
135 | 0x87 | ‡ | 178 | 0xB2 | ² | 221 | 0xDD | Ý |
136 | 0x88 | ˆ | 179 | 0xB3 | ³ | 222 | 0xDE | Þ |
137 | 0x89 | ‰ | 180 | 0xB4 | ´ | 223 | 0xDF | ß |
138 | 0x8A | Š | 181 | 0xB5 | µ | 224 | 0xE0 | à |
139 | 0x8B | ‹ | 182 | 0xB6 | ¶ | 225 | 0xE1 | á |
140 | 0x8C | Œ | 183 | 0xB7 | · | 226 | 0xE2 | â |
141 | 0x8D | � | 184 | 0xB8 | ¸ | 227 | 0xE3 | ã |
142 | 0x8E | Ž | 185 | 0xB9 | ¹ | 228 | 0xE4 | ä |
143 | 0x8F | � | 186 | 0xBA | º | 229 | 0xE5 | å |
144 | 0x90 | � | 187 | 0xBB | » | 230 | 0xE6 | æ |
145 | 0x91 | ‘ | 188 | 0xBC | ¼ | 231 | 0xE7 | ç |
146 | 0x92 | ’ | 189 | 0xBD | ½ | 232 | 0xE8 | è |
147 | 0x93 | “ | 190 | 0xBE | ¾ | 233 | 0xE9 | é |
148 | 0x94 | ” | 191 | 0xBF | ¿ | 234 | 0xEA | ê |
149 | 0x95 | • | 192 | 0xC0 | À | 235 | 0xEB | ë |
150 | 0x96 | – | 193 | 0xC1 | Á | 236 | 0xEC | ì |
151 | 0x97 | — | 194 | 0xC2 | Â | 237 | 0xED | í |
152 | 0x98 | ˜ | 195 | 0xC3 | Ã | 238 | 0xEE | î |
153 | 0x99 | ™ | 196 | 0xC4 | Ä | 239 | 0xEF | ï |
154 | 0x9A | š | 197 | 0xC5 | Å | 240 | 0xF0 | ð |
155 | 0x9B | › | 198 | 0xC6 | Æ | 241 | 0xF1 | ñ |
156 | 0x9C | œ | 199 | 0xC7 | Ç | 242 | 0xF2 | ò |
157 | 0x9D | � | 200 | 0xC8 | È | 243 | 0xF3 | ó |
158 | 0x9E | ž | 201 | 0xC9 | É | 244 | 0xF4 | ô |
159 | 0x9F | Ÿ | 202 | 0xCA | Ê | 245 | 0xF5 | õ |
160 | 0xA0 | 203 | 0xCB | Ë | 246 | 0xF6 | ö | |
161 | 0xA1 | ¡ | 204 | 0xCC | Ì | 247 | 0xF7 | ÷ |
162 | 0xA2 | ¢ | 205 | 0xCD | Í | 248 | 0xF8 | ø |
163 | 0xA3 | £ | 206 | 0xCE | Î | 249 | 0xF9 | ù |
164 | 0xA4 | ¤ | 207 | 0xCF | Ï | 250 | 0xFA | ú |
165 | 0xA5 | ¥ | 208 | 0xD0 | Ð | 251 | 0xFB | û |
166 | 0xA6 | ¦ | 209 | 0xD1 | Ñ | 252 | 0xFC | ü |
167 | 0xA7 | § | 210 | 0xD2 | Ò | 253 | 0xFD | ý |
168 | 0xA8 | ¨ | 211 | 0xD3 | Ó | 254 | 0xFE | þ |
169 | 0xA9 | © | 212 | 0xD4 | Ô | 255 | 0xFF | ÿ |
170 | 0xAA | ª | 213 | 0xD5 | Õ |
এ মানের উপর ভিত্তি করে কিভাবে কীবোর্ড ইভেন্টে কাজ করা যায় তাও দেখবো। এর পর হয়তো কোন প্রজেক্টে মাউস ডিটেক্ট এবং মাউস ইভেন্টে আরও কিছু দেখতে পাব।
এবার দেখি মিউজিক্যাল কীবোর্ড বানানোর সহজ প্রজেক্ট
1. #include
2. #include
3. #include
4. void main()
5. {
6. char ch=’y’;
7. clrscr();
8. printf(“Press X to exit……”);
9. while(ch !=’X’)
10. {
11. ch = getch();
12. sound(20*ch);
13. delay(75);
14. nosound();
15. }
16. }
ব্যাখ্যা:
লাইন 1-3:
প্রথম তিন লাইন হেডার ফাইল কল করা হয়েছে।
লাইন-4:
“void main()” প্রধান ফাংশন যা এক্সিকিউট হয়।
লাইন-5:
ব্রাকেট যেখান থেকে প্রগ্রাম শুরু হয়।
লাইন-6:
character ভেরিয়্যাবল ডিক্লার করা হয় এবং তার মান ‘y’ দেয়া হয়।
লাইন-7:
স্ক্রিনে আগের কোন কারেক্টার থাকলে তা পরিস্কার করা হয়।
লাইন-8:
ইউজারকে বলা হয় যে আপনি X চাপলে বন্ধ হবে।
লাইন-9:
while loop শুরু। এর মধ্যের ইনস্ট্রাকশনগুলো বারবার (প্রতি কী প্রেসে) চালু হয়।
লাইন-10:
while loop শুরু।
লাইন-11:
এই লাইনের মাধ্যমে প্রতি কী প্রেসে ch ভ্যারিয়্যাবলের ASCII মান সংরক্ষিত হয়।
লাইন-12:
“sound()” এর মাধ্যমে পিসি স্পিকার ASCII মান এর ২০ গুন মানের ফ্রিকুয়েন্সির শব্দ তৈরী করে। বিভিন্ন কী প্রেসে বিভিন্ন ফ্রিকুয়েন্সির শব্দ তৈরী হয়।
লাইন-13:
“delay()” এর মাধ্যমে শব্দ কতক্ষন স্থায়ী হবে তা বুঝায়।delay(75) এ বলতে বুঝায় শব্দটি ৭৫ মিলিসেকেন্ড স্থায়ী হবে।
লাইন-14:
“nosound()” ফাংশনটি “sound()” এর বিপরিত। এটি মূলত স্পিকার বন্ধ করে দেয়।
লাইন-15:
while loop শেষ।
লাইন-16:
“main()” ফাংশন শেষ।
আপনি এখান থেকে কোড ডাউনলোড করতে পারেন।
তাহলে আজ এ পর্যন্তই। আগামীতে হয়তো মাউসএর কাজের একটা বিবরণ তুলে ধরতে পারি। আরেকটা কথা -আপনাদের মতামতই আমাদের প্রেরণা । তাই মতামত দিন লেখাগুলো কেমন হচ্ছে। ধন্যবাদ।
আসলেই মজার প্রজেক্ট। সঠিকভাবে কাজ করছে। অনেকদিন সি এ হাত না দেয়াতে অবশ্য কিছু সমস্যায় পরেছিলাম। ধন্যবাদ।
আমি টারবো এবং MS visual studio দিয়া ট্রাই করেছিলাম কাজ করলো না তো ??
১২-১৩-১৪ নম্বার লাইনে ভুল দেখায় …
টারবো সিতে আমি এ প্রোগ্রামটি চালিয়ে দেখেছি, কাজ করেছে। সিস্টেম স্পিকারে মূলত: সাউন্ড হয়, অনেক আস্তে। আপনি ভাল করে দেখুন।
ami try koreci (Dev-C++Portable)…………..now working….!
please check………
problem in line 5……
thanks
ভাইয়া আপনাদের এই উদ্দোগ আমার খুব ভাল লেগেছে। এই ধরনের উদ্দোগ নেওয়ার জন্য আপনাদের অনেক ধন্যবাদ। আশা করি আপনারা এই প্রকাশনা চালিয়ে যাবেন………..
ভাইয়া কোড ব্লক দিয়ে চেষটা করছিলাম হয় না। ৪ টা এররর দেখায়
আমি codeblock 10 version দিয়ে try করেছি 12,12,13 “undefine reference to sound,nosond,delay” নাম্বার লাইন ভুল দেখায়,কি ভাবে fix করব?