เมื่อผมเขียนโปรแกรมด้วยภาษาซี ฝั่ง PC ทำการส่งข้อมูล ให้ LCD ผ่าน serial port โดยคำสั่งเดียว ไม่มีการวนลูป ผลปรากฎ บอร์ด Arduino ไม่ได้รับข้อมูลที่ส่งไป แต่ถ้าผมส่งข้อมูลโดยการวนลูป ข้อมูล จะส่งออกไปอย่างต่อเนื่อง ทำให้บอร์ด ได้รับข้อมูล แล้วแสดงผลที่หน้าจอ LCD ได้
คำถามของคือ เมื่อผมส่งข้อมูลแบบวนลูป อย่างต่อเนื่อง จะทำให้ข้อมูล เต็มจอ LCD ,
ผมต้องการแค่ส่งออกไปแค่ค่าเดียวแล้วแสดงผล ตัวอักขระ ตัวนั้นเลย
ผมต้องทำอย่างไรครับ พอมีวิธีทำให้ ภาษา C (ฝั่งคอมพิวเตอร์) สามารถทำได้ตามที่ต้องการไหมครับ ด้วยแนะนำวิธีเขียนโค้ดให้หน่อยครับ
ตัวอย่าง...
พิมพ์ : ป้อนค่า 'o' แล้วค่าแสดงที่จอ LCD เป็น ooooooooooooooo.....
ค่าที่ถูกต้องควรเป็น : ป้อนค่า 'o' แล้วค่าแสดงที่จอ LCD เป็น o แค่ค่าเดียว
โค้ดโปรแกรม :
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void times(int x)
{
int c = 1, d = 1;
for ( c = 1 ; c <= 32767 ; c++ )
for ( d = 1 ; d <= x ; d++ )
{}
}
int main (void) {
char x=0;
FILE *serialPort;
system( "MODE COM3: BAUD=9600 PARITY=n DATA=8 STOP=1" );
serialPort = fopen("COM3:", "w+" );
if (serialPort == NULL) {
printf ("Error: unable to open serial port COM3\n");
exit (1);
}
int i=0;
while (1) {
printf("enter your letter :");
x = getch();
i=0;
switch(x){
case 'o' :
do{
fprintf(serialPort, "o");
i++;
}while(i<1000); // if i < 20 , ไม่สามารถส่งข้อมูลได้ , if i < 1000 สามารถส่งข้อมูล บอร์ดได้รับข้อมูลที่ส่งไป
times(1);
break;
case 'f' :
do{
fprintf(serialPort, "f");
i++;
}while(i<1000);
times(1);
break;
case 'w' :
do{
fprintf(serialPort, "w");
i++;
}while(i<1000);
times(1);
break;
}
}
fclose(serialPort) ;
return 0;
}
เขียนโปรแกรมติดต่อ LCD โดยใช้ Arduino ด้วยภาษา C++ 5.5 borland ผ่าน Serial port
คำถามของคือ เมื่อผมส่งข้อมูลแบบวนลูป อย่างต่อเนื่อง จะทำให้ข้อมูล เต็มจอ LCD ,
ผมต้องการแค่ส่งออกไปแค่ค่าเดียวแล้วแสดงผล ตัวอักขระ ตัวนั้นเลย
ผมต้องทำอย่างไรครับ พอมีวิธีทำให้ ภาษา C (ฝั่งคอมพิวเตอร์) สามารถทำได้ตามที่ต้องการไหมครับ ด้วยแนะนำวิธีเขียนโค้ดให้หน่อยครับ
ตัวอย่าง...
พิมพ์ : ป้อนค่า 'o' แล้วค่าแสดงที่จอ LCD เป็น ooooooooooooooo.....
ค่าที่ถูกต้องควรเป็น : ป้อนค่า 'o' แล้วค่าแสดงที่จอ LCD เป็น o แค่ค่าเดียว
โค้ดโปรแกรม :
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
void times(int x)
{
int c = 1, d = 1;
for ( c = 1 ; c <= 32767 ; c++ )
for ( d = 1 ; d <= x ; d++ )
{}
}
int main (void) {
char x=0;
FILE *serialPort;
system( "MODE COM3: BAUD=9600 PARITY=n DATA=8 STOP=1" );
serialPort = fopen("COM3:", "w+" );
if (serialPort == NULL) {
printf ("Error: unable to open serial port COM3\n");
exit (1);
}
int i=0;
while (1) {
printf("enter your letter :");
x = getch();
i=0;
switch(x){
case 'o' :
do{
fprintf(serialPort, "o");
i++;
}while(i<1000); // if i < 20 , ไม่สามารถส่งข้อมูลได้ , if i < 1000 สามารถส่งข้อมูล บอร์ดได้รับข้อมูลที่ส่งไป
times(1);
break;
case 'f' :
do{
fprintf(serialPort, "f");
i++;
}while(i<1000);
times(1);
break;
case 'w' :
do{
fprintf(serialPort, "w");
i++;
}while(i<1000);
times(1);
break;
}
}
fclose(serialPort) ;
return 0;
}