بۇ يازمىنى ئاخىرىدا e-chewendaz تەھرىرلىگەن. ۋاقتى 2014-2-8 11:39
ئەسسالامۇ ئەلەيكۇم ئالىپ تورىدىكى بارلىق ئېلېكتىرون،Arduino ھەۋەسكارلىرى! ھەممىڭلارغا كەمىنە ئېلېكتىر چەۋەندازدىن ئوتلۇق سالام!
ئالدىنقى قېتىملىق تېمامدا كىلەركى قېتىم «ئۇلتىرا ئاۋاز دولقۇنى ئارقىلىق ئارلىق ئۆلچەش(ئاپتۇماتىك مېتىر)» تەجرىبىسىنى تونۇشتۇرىدىغانلىقىمنى ئوتتۇرىغا قويغان ئىدىم،بىراق بۇ تەجرىبىدە بىز ئۆلچەنگەن سانلىق قىممەتنى كۆرسېتىشتە ئىكراننىڭ ياردىمغا تايىندىغان بولغاچقا،بۇ تېمىدا ئالدى بىلەن Arduino ئارقىلىق ئىكراننى قانداق قوزغىتىش توغرىسىدا چۈشەنچە بىرىشنى مۇۋاپىق تاپتىم.
تەجرىبىگە كېتەرلىك دىتاللار: بىر دانە Arduino توك يول تاختىسى (خالىغان تىپىدىن)،بىردانە NOKIA 5110 كىرىستال ئېكرانى،8 تال ئۇلاش سىمى،USB سانلىق مەلۇمات سىمى
NOKIA 5110 ئېكرانى گرافىك كۆرسېتىشىنى ئاساس قىلغان كىرىستال ئىكران بولۇپ، تەجرىبىلەردە ئىنتايىن كەڭ قوللىنىلىدۇ،ئادەتتە Arduino غا ئۇلاش ئارقىلىق بەزى ئۇچۇرلارنى كۆرسېتىش مەقستىگە يىتەلەيمىز،مەسىلەن: Arduino ئارقىلىق ياسالغان تېمپېراتۇرا ئۆلچەش قۇرۇلمىسدا تېمپېراتۇرىنىڭ سانلىق قىممىتىنى كۆرسېتىشكە بولىدۇ،Arduino ئارقىلىق ياسالغان ئۇلتىرا ئاۋاز دولقۇنلۇق ئارلىق ئۆلچىگۈچتە ئۆلچەنگەن ئارىلىق سانلىق مەلۇماتىنى كۆرسېتىشكە بولىدۇ،ئۇنىڭدىن باشقا ۋاقىت ۋە چېسلا كۆرسىتىدىغان قۇرۇلما دىگەندەك.
NOKIA5110 كىرىستال ئېكراننىڭ ئاساسلىق تېخنىكا پارامىتېرلىرى:
كۆرسېتىش سىغىمى 48*84 (ئىگىزلىك*كەڭلىك) چىكىتلىك رەسىمنى كۆرسىتەلەيدۇ.
ئەڭ كۆپ بولغاندا تۆت قۇر 16 دانە خەنزۇچە خەتنى كۆرسىتەلەيدۇ.(ئۇيغۇرچە خەتكە كەلسەك ئۆزىمىزنىڭ لايىھەلىشىگە باغلىق)
كونترول ئۆزىكىنىڭ توك بېسىمى 2.7~3.3 ۋولتقىچە بولۇپ،ئەڭ يۇقىرى توك بېسىمى چېكى 7 ۋولىت
خىزمەت توك ئېقىمى 0.2 مىللى ئامپېردىن تۆۋەن،توك سەرپىياتى تۆۋەن بولۇپ باتارىيە ئارقىلىق قوزغىتىشقىمۇ بولىدۇ.
ئەمدى بىز بىرلىكتە بۇ ئىكران مودىلىنىڭ رەسمىنى،توك يول ئۇلىنىشىنى كۆرۈپ باقايلى!
ئاردىينۇ بىلەن ئۇلىنىش توك يولى تۆۋەندىكىچە:
مەزكۈر ئىكراننىڭ 8 دانە ئۇلىنىش پۇتى بار بولۇپ، VCC,GND,LED ئۇلىنىش پۇتلىرىنى Arduino توك يول تاختىسىدىكى ماس ئۇلاش پۇتىغا ئۇلىغاندىن باشقا ئىشىپ قالغان 5 دانە سگنال ئۇلاش پۇتلىرىنى Arduino نىڭ رەقەملىك ئۇلىنىش پۇتىغا خالىغانچە ئۇلىساق بولىدۇ،بىراق پروگرامما ئىچىدە Arduino نىڭ قايسى ئۇلىنىش پۇتىغا ئۇلىغان بولساق شۇ پۇتقا توغرا ئېنىقلىما بىرىشىمىز كېرەك.
توك يولىنى يۇقارقى تەرتىپلەر بويىچە قۇراشتۇرۇپ بولغاندىن كىيىن،Arduino نىڭ توپلاشما ئىجادىيەت مۇھىتىنى ئېچىپ تۆۋەندىكى پروگرامما كودىنى كىرگۈزۈڭ.- // The pins to use on the arduino
- #define PIN_SCE 12
- #define PIN_RESET 11
- #define PIN_DC 10
- #define PIN_SDIN 9
- #define PIN_SCLK 8
-
- // COnfiguration for the LCD
- #define LCD_C LOW
- #define LCD_D HIGH
- #define LCD_CMD 0
-
- // Size of the LCD
- #define LCD_X 84
- #define LCD_Y 48
-
- int scrollPosition = -10;
-
- static const byte ASCII[][5] =
- {
- {0x00, 0x00, 0x00, 0x00, 0x00} // 20
- ,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
- ,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
- ,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 #
- ,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $
- ,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 %
- ,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 &
- ,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 '
- ,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 (
- ,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 )
- ,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a *
- ,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b +
- ,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c ,
- ,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d -
- ,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e .
- ,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f /
- ,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0
- ,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1
- ,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2
- ,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3
- ,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4
- ,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5
- ,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6
- ,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7
- ,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8
- ,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9
- ,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a :
- ,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ;
- ,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c <
- ,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d =
- ,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e >
- ,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ?
- ,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @
- ,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A
- ,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B
- ,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C
- ,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D
- ,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E
- ,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F
- ,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G
- ,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H
- ,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I
- ,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J
- ,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K
- ,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L
- ,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M
- ,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N
- ,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O
- ,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P
- ,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q
- ,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R
- ,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S
- ,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T
- ,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U
- ,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V
- ,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W
- ,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X
- ,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y
- ,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z
- ,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [
- ,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c ¥
- ,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ]
- ,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^
- ,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _
- ,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 `
- ,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a
- ,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b
- ,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c
- ,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d
- ,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e
- ,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f
- ,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g
- ,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h
- ,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i
- ,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j
- ,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k
- ,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l
- ,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m
- ,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n
- ,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o
- ,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p
- ,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q
- ,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r
- ,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s
- ,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t
- ,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u
- ,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v
- ,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w
- ,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x
- ,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y
- ,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z
- ,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b {
- ,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c |
- ,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d }
- ,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ←
- ,{0x00, 0x06, 0x09, 0x09, 0x06} // 7f →
- };
-
- void LcdCharacter(char character)
- {
- LcdWrite(LCD_D, 0x00);
- for (int index = 0; index < 5; index++)
- {
- LcdWrite(LCD_D, ASCII[character - 0x20][index]);
- }
- LcdWrite(LCD_D, 0x00);
- }
-
- void LcdClear(void)
- {
- for (int index = 0; index < LCD_X * LCD_Y / 8; index++)
- {
- LcdWrite(LCD_D, 0x00);
- }
- }
-
- void LcdInitialise(void)
- {
- pinMode(PIN_SCE, OUTPUT);
- pinMode(PIN_RESET, OUTPUT);
- pinMode(PIN_DC, OUTPUT);
- pinMode(PIN_SDIN, OUTPUT);
- pinMode(PIN_SCLK, OUTPUT);
-
- digitalWrite(PIN_RESET, LOW);
- digitalWrite(PIN_RESET, HIGH);
-
- LcdWrite(LCD_CMD, 0x21); // LCD Extended Commands.
- LcdWrite(LCD_CMD, 0xBf); // Set LCD Vop (Contrast). //B1
- LcdWrite(LCD_CMD, 0x04); // Set Temp coefficent. //0x04
- LcdWrite(LCD_CMD, 0x14); // LCD bias mode 1:48. //0x13
- LcdWrite(LCD_CMD, 0x0C); // LCD in normal mode. 0x0d for inverse
- LcdWrite(LCD_C, 0x20);
- LcdWrite(LCD_C, 0x0C);
- }
-
- void LcdString(char *characters)
- {
- while (*characters)
- {
- LcdCharacter(*characters++);
- }
- }
-
- void LcdWrite(byte dc, byte data)
- {
- digitalWrite(PIN_DC, dc);
- digitalWrite(PIN_SCE, LOW);
- shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data);
- digitalWrite(PIN_SCE, HIGH);
- }
-
- /**
- * gotoXY routine to position cursor
- * x - range: 0 to 84
- * y - range: 0 to 5
- */
- void gotoXY(int x, int y)
- {
- LcdWrite( 0, 0x80 | x); // Column.
- LcdWrite( 0, 0x40 | y); // Row.
- }
-
- void drawBox(void)
- {
- int j;
- for(j = 0; j < 84; j++) // top
- {
- gotoXY(j, 0);
- LcdWrite(1, 0x01);
- }
-
- for(j = 0; j < 84; j++) //Bottom
- {
- gotoXY(j, 5);
- LcdWrite(1, 0x80);
- }
-
- for(j = 0; j < 6; j++) // Right
- {
- gotoXY(83, j);
- LcdWrite(1, 0xff);
- }
-
- for(j = 0; j < 6; j++) // Left
- {
- gotoXY(0, j);
- LcdWrite(1, 0xff);
- }
- }
-
- void Scroll(String message)
- {
- for (int i = scrollPosition; i < scrollPosition + 11; i++)
- {
- if ((i >= message.length()) || (i < 0))
- {
- LcdCharacter(' ');
- }
- else
- {
- LcdCharacter(message.charAt(i));
- }
- }
- scrollPosition++;
- if ((scrollPosition >= message.length()) && (scrollPosition > 0))
- {
- scrollPosition = -10;
- }
- }
-
- void setup(void)
- {
- LcdInitialise();
- LcdClear();
- drawBox();
-
- gotoXY(7,1);
- LcdString("Hello World");
- gotoXY(4,2);
- LcdString("I am uighur");
- }
-
- void loop(void)
- {
- gotoXY(4,4);
- Scroll("for Arduio please visit www.alip.biz");
- delay(200);
- }
مەزمۇننى كۆچۈرۈۋېلىش پروگراممىنى تەكشۈرتۈپ،Arduino توك يول تاختىسىغا چۈرشۈرگەندىن كىيىن،ھەممە ئىش نۇرمال بولسا ئىكراندا «Hello World»،«I am uighur» دىگەن ئىككى قۇر ئىنگىلىزچە خەت ۋە «for Arduino please visit www.alip.biz» دىگەن بىر قۇر خەت دوملىما ھالەتتە كۆرۈنىدۇ.
قارسىڭىز پروگرامما كودلىرى بىر قەدەر كۆپ،مۇرەككەپ بىلىنىپ كىتىپ بارامدۇ؟ NOKIA5110 ئىكرانىدا ئىنگىلىزچە خەت كۆرسەتكەندە ئالدى بىلەن ئىنگىلىزچە ھەرىپ-بەلگىلەرگە ئېنىقلىما بىرىشكە،كۆرستىش فۇنكسىيىسىگە ئېنىقلىما بىرىشكە توغرا كىلىدۇ،شۇڭا پروگرامما كودى بىر قەدەر كۆپ بولۇپ كەتتى،بۇنى ئازايتىشنىڭمۇ ئامالى بار بولۇپ،تەييار فۇنكسىيە ئامبار ھۆججىتىدىن پايدىلانغاندا بۇنداق پايتىمىدەك ئۇزۇن كود يېزىشنىڭمۇ ھاجىتى قالمايدۇ. ئۇزاققا قالماي تەييار ئامبار ھۆججىتىدىن قانداق پايدىلىنىش،ئۇيغۇرچىنى قانداق كۆرىستىش توغرىسىدا چۈشەنچە بىرىپ ئۆتىمەن،تېمىنى بەك ئۇزۇن قىلىۋەتسەم بەزى قېرىنداشلىرىمىز ئوقۇپ بولالماي قيېنىلىپ قالىدىكەن.
ۋاقىت مۇناسېۋىتى بىلەن تېمىنى مۇشۇ يەرگىچە يېزىپ تۇراي.كىيىنكى قېتىملىق تەجرىبىدە «ئۇلتىرا ئاۋاز دولقۇنى ئارقىلىق ئارلىق ئۆلچەش(ئاپتۇماتىك مېتىر)» تەجرىبىسىنى كۆرۈپ ئۆتىمىز.
پروگرامما كودىنى چۈشىنەلمىگەن بولسىڭىز «مەن Arduino غا ئاشىق» نامىلىق كىتابتىكى «قوشۇمچە/C ئاردىينۇ پروگرامما تىلىنىڭ گىرامماتىكا پايدىلانمىلىرى» نامىلىق بۆلىكىنى كۆرۈپ چىقىڭ.
بىز ئۆز-ئارا ئۈگىنىشكە،ھەمكارلىشىشقا مۇھتاج! قېرىنداشلىرىمىزنىڭ ياخشى تەكلىپ-پىكىرلىرىنى،قىممەتلىك بىلىملىرىنى،تەجرىبىلىرىنى ئايىماسلىقىنى سورايمەن!
ھۆرمەت بىلەن:ئېلېكتىر چەۋەنداز
2014-يىلى ھۇتنىڭ 7-كۈنى ئۇلۇغ جۈمە كۈنىدە يېزىلىدى
سەمىمي ئەسكەرتىش: بۇ تېما مەخسۇس Arduino ئۈچۈن يېزىلدى،شۇڭا باشقا جەھەتتىن ياردەم سورىماقچى بولغان قېرىنداشلىرىمىزنىڭ ئالىپ تورىنىڭ ياردەم سەھىپىسگە ياكى مۇناسېپ ھالدىكى باشقا تېمىلارغا ئىنكاس يېزىشىنى،قالايمىقان ئىلان ۋە ياردەم خاراكتىرلىك ئىنكاسلارنى يازىماسلىقىنى سەمىمىيلىك بىلەن ئۆتىنىمەن. |