-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathC code.c
223 lines (152 loc) · 6.82 KB
/
C code.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <fcntl.h>
void Led_Turn_On();
void Led_Turn_Off();
void Led_Blink();
void Square_Num();
void Buton_Count();
void delay(int);
void Menu();
int main()
{
char serialport = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY ); //Serial baglanti acilir
char Operation[5];
printf("#-# WELCOME TO GTU ARDUINO LAB #-#\n");
printf("#-# MUHAMMED BEDIR ULUCAY 1901042697 #-#\n");
printf("#-# PLEASE SELECT FROM THE FOLLOWING #-#\n");
while (1){
Menu();
scanf("%s",Operation); //Operasyon okunur
printf("(First character chosen)\n");
if(Operation[0] == '0'){
return 0;
}
else if(Operation[0] == '1'){
Led_Turn_On();
}
else if(Operation[0] == '2'){
Led_Turn_Off();
} // Kosullara gore islemler yapilir
else if(Operation[0] == '3'){
Led_Blink();
}
else if(Operation[0] == '4'){
Square_Num();
}
else if(Operation[0] == '5'){
Buton_Count();
}
else {
printf("-------------------------------\n");
printf("!!!--- UNKNOWN COMMAND ---!!!\n");
printf("-------------------------------\n");
}
//Serial baglanti kapanir
}
close(serialport);
return 0;
}
//*===========================================================================================*//
void Menu(){
printf("# # MENU # #\n");
printf(" (1) TURN ON LED ON ARDUINO \n");
printf(" (2) TURN OFF LED ON ARDUINO \n");
printf(" (3) FLASH ARDUINO LED 3 TIMES \n");
printf(" (4) SEND A NUMBER TO ARDUINO TO COMPUTE \n SQUARE BY ARDUINO \n");
printf(" (5) BUTTON PRESS COUNTER \n");
printf(" (0) EXIT \n");
printf(" PLEASE SELECT : ");
}
//*===========================================================================================*//
void Led_Turn_On(){
char serialport = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY ); // Serial baglantiyi acar
delay(500);
write(serialport,"1",2); // Arduinoya '1' karakterini gonderir
printf("----------------------------\n");
printf("---- LED TURNED ON ----\n");
printf("----------------------------\n");
close(serialport); // Serial baglantiyi kapatir
}
//*===========================================================================================*//
void Led_Turn_Off(){
char serialport = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY ); // Serial baglantiyi acar
delay(500);
write(serialport,"2",1); // Arduinoya '2' karakterini gonderir
printf("----------------------------\n");
printf("---- LED TURNED OFF ----\n");
printf("----------------------------\n");
close(serialport); // Serial baglantiyi kapatir
}
//*============================================================================================*//
void Led_Blink(){
char serialport = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY ); // Serial baglantiyi acar
delay(500);
write(serialport,"3",1); // Arduinoya '3' karakterini gonderir
printf("----------------------------\n");
printf("--- LED BLINKED 3 TIMES ---\n");
printf("----------------------------\n");
close(serialport); // Serial baglantiyi kapatir
}
//*=============================================================================================*//
void Square_Num(){
char serialport = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY ); // Serial baglantiyi acar
delay(500);
write(serialport,"4",1); // Arduinoya '4' karakterini gonderir
char number[10]; //Kullanicidan alinan sayi
int i; //Kullanicidan alinan sayinin uzunlugunu degeri
unsigned char data[9]; //Arduinonun hesabindan sonra okurken saklanacak yer
char read_byte; //Okunan her byte saklnadigi yer
int result; //Sonucun atanacagi degisken
printf("----------------------------\n");
printf("Enter the number : ");
scanf("%s",number); //Sayi alinir
i=strlen(number); //String uzunlugu belirler
write(serialport,number,i);
printf("----Calculating....\n");
delay(8000); //Arduinonun hesapi icin tanin sure
read_byte = read(serialport,data,9); //Arduino verileri okunur
result = atoi(data); //String integer'a cevirir
printf("Square of %s^2 = %d\n",number,result); //Ekrana yazdirir
printf("----------------------------\n");
close(serialport); //Serial baglanti kapatir
}
//*===============================================================================================*//
void Buton_Count(){
char serialport = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY ); // Serial baglantiyi acar
delay(500);
write(serialport,"5",1); //Arduino ya '5' karakterini gonderir
delay(1000);
unsigned char count[5]; //Arduinodan alinacak verinin koyulacagi yer
char read_byte; //Okunacak verilerin atanacagi yer
int times=0; //Basilan degerin oldugu degisken
int sup; //Denkleme destek olmasi icin gereken degisken
printf("----------------------------\n");
read_byte = read(serialport,count,5); //Arduinodaki ilk byte count a atanir
sup = atoi(count); //Count int e cevirilip sup a atanir
printf("%d times pushed\n",sup ); //Ilk deger 0 olacagi icin 0 times pushed yazilir
while(1){
if(times != sup){ //times sup dan farkliysa yani butona basilip serial monitordeki deger degismeden hic bisey yazdirmiyor
printf("%d times pushed\n",times);
sup = times; //times sup a atanarak sup degistirilir tekrardan surekli yazilmasini engeller
}
read_byte = read(serialport,count,5); //Arduinodaki veriler count a atanir
times = atoi(count); //count integer a cevirilip times atanir
delay(300); //Stabilite icin her dongu arasi kisa bir bekleme suresi gecer
}
close(serialport); //Serial baglanti kapanir
}
//*======================================================================================================*//
void delay(int time){ //Arduino yu beklemek icin bos islem yaptiran yani sure geciren fonksiyon
int i,j,k;
for( i=0;i<time;i++){
for( j=0;j<9999;j++){
for( k=0;k<20;k++){
}
}
}
}
//*======================================================================================================*//