Advertisement
esref_21

Arduino Voice Recognition w/ 16x2 LCD (İ2c)

Mar 8th, 2016
583
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.76 KB | None | 0 0
  1. /*
  2. Komutlar:
  3. Kontrol = grup değiştirir.Ilk kez dediğinde şunlar yüklenir(--- içindekiler)
  4. ---
  5. Birinci Satır
  6. İkinci Satır
  7. Sil
  8. Sıfırla
  9. Arkaplan Işığı
  10. Işığı Kapat
  11. ---
  12.  
  13. A
  14. B
  15. C
  16. Ç
  17. D
  18. E
  19.  
  20. ÖNEMLİ NOT: VoiceRecognitionV3 kütüphanesini Github üzerinden indirdikten sonra ses kayıt&tanımlama olayını kütüphane içindeki examples lardan train olanı ile yapılmaktadır.
  21. -Eşref Bektaş-
  22. -fb.com/b.esreff-
  23. */
  24.  
  25.  
  26. #include <SoftwareSerial.h>
  27. #include "VoiceRecognitionV3.h"
  28. #include <Wire.h>
  29. #include <LiquidCrystal_I2C.h>
  30. //adres,en,rw,rs,d4,d5,d6,d7,bl,blpol
  31. LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
  32. VR myVR(2,3); // 2:RX 3:TX olacak şekilde
  33.  
  34. uint8_t record[7]; // kayıtları kaydeder
  35. uint8_t buf[64];
  36. byte noktalic[8] = {
  37. 0b01110,
  38. 0b10001,
  39. 0b10000,
  40. 0b10000,
  41. 0b10000,
  42. 0b10001,
  43. 0b01110,
  44. 0b00100
  45. };
  46. int led = 13;
  47. int grup = 0;
  48. #define fonksiyona (32) // İlk grup A'an
  49. #define fonksiyonb (1)
  50. #define fonksiyonc (2)
  51. #define fonksiyonnoktalic (3)
  52. #define fonksiyond (4)
  53. #define fonksiyone (5) // Buraya kadar
  54. #define fonksiyonf (6)
  55. #define fonksiyong (7)
  56. #define fonksiyonyumusakg (8)
  57. #define fonksiyonh (9)
  58. #define fonksiyonnoktasizi (10)
  59. #define fonksiyoni (11)
  60. #define fonksiyonj (12)
  61. #define fonksiyonk (13)
  62. #define fonksiyonl (14)
  63. #define fonksiyonm (15)
  64. #define fonksiyonn (16)
  65. #define fonksiyono (17)
  66. #define fonksiyonnoktalio (18)
  67. #define fonksiyonp (19)
  68. #define fonksiyonr (20)
  69. #define fonksiyons (21)
  70. #define fonksiyonnoktalis (22)
  71. #define fonksiyont (23)
  72. #define fonksiyonu (24)
  73. #define fonksiyonnoktaliu (25)
  74. #define fonksiyonv (26)
  75. #define fonksiyony (27)
  76. #define fonksiyonz (28)
  77. #define fonksiyonsil (29)
  78. #define fonksiyonbirincisatir (30)
  79. #define fonksiyonikincisatir (31)
  80. #define kontroller (33)
  81. #define fonksiyonarkaplanisiginiac (34)
  82. #define fonksiyonarkaplanisiginikapat (35)
  83. #define fonksiyonsifirla (36)
  84.  
  85. void printSignature(uint8_t *buf, int len)
  86. {
  87. int i;
  88. for(i=0; i<len; i++){
  89. if(buf[i]>0x19 && buf[i]<0x7F){
  90. Serial.write(buf[i]);
  91. }
  92. else{
  93. Serial.print("[");
  94. Serial.print(buf[i], HEX);
  95. Serial.print("]");
  96. }
  97. }
  98. }
  99. void printVR(uint8_t *buf)
  100. {
  101. Serial.println("VR Index\tGroup\tRecordNum\tSignature");
  102.  
  103. Serial.print(buf[2], DEC);
  104. Serial.print("\t\t");
  105.  
  106. if(buf[0] == 0xFF){
  107. Serial.print("NONE");
  108. }
  109. else if(buf[0]&0x80){
  110. Serial.print("UG ");
  111. Serial.print(buf[0]&(~0x80), DEC);
  112. }
  113. else{
  114. Serial.print("SG ");
  115. Serial.print(buf[0], DEC);
  116. }
  117. Serial.print("\t");
  118.  
  119. Serial.print(buf[1], DEC);
  120. Serial.print("\t\t");
  121. if(buf[3]>0){
  122. printSignature(buf+4, buf[3]);
  123. }
  124. else{
  125. Serial.print("NONE");
  126. }
  127. Serial.println("\r\n");
  128. }
  129.  
  130. void setup()
  131. {
  132. /** initialize */
  133. myVR.begin(9600);
  134. lcd.begin(16,2);
  135. lcd.createChar(1,noktalic);
  136. lcd.backlight();
  137. lcd.setCursor(0,0);
  138. lcd.print("Konusabilirsin");
  139. lcd.setCursor(0,1);
  140. Serial.begin(115200); // Com seri bandını 115200 seç,Diğer özelliği New Line seç
  141. Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample");
  142.  
  143. pinMode(led, OUTPUT);
  144.  
  145. if(myVR.clear() == 0){
  146. Serial.println("Recognizer cleared.");
  147. }else{
  148. Serial.println("Ses Tanima Modulu Bulunamadi");
  149. Serial.println("Baglantini Kontrol Et");
  150. while(1);
  151. }
  152. record[0] = kontroller;
  153. record[1] = fonksiyona;
  154. record[2] = fonksiyonb;
  155. record[3] = fonksiyonc;
  156. record[4] = fonksiyonnoktalic;
  157. record[5] = fonksiyond;
  158. record[6] = fonksiyone;
  159. grup = 0;
  160. if(myVR.load(record, 7) >= 0){
  161. printRecord(record, 7);
  162. Serial.println(F("yuklendi."));
  163. }
  164. }
  165.  
  166. void loop()
  167. {
  168. int ret;
  169. ret = myVR.recognize(buf, 50);
  170. if(ret>0){
  171. switch(buf[1]){
  172. case kontroller:
  173. if(grup == 0)
  174. {
  175. grup = 1;
  176. myVR.clear();
  177. record[0] = kontroller;
  178. record[1] = fonksiyonbirincisatir;
  179. record[2] = fonksiyonikincisatir;
  180. record[3] = fonksiyonsil;
  181. record[4] = fonksiyonarkaplanisiginiac;
  182. record[5] = fonksiyonarkaplanisiginikapat;
  183. record[6] = fonksiyonsifirla;
  184. if(myVR.load(record, 7) >= 0){
  185. printRecord(record, 7);
  186. Serial.println(F("yuklendi."));
  187. }
  188. }else{
  189. grup = 0;
  190. myVR.clear();
  191. record[0] = kontroller;
  192. record[1] = fonksiyona;
  193. record[2] = fonksiyonb;
  194. record[3] = fonksiyonc;
  195. record[4] = fonksiyonnoktalic;
  196. record[5] = fonksiyond;
  197. record[6] = fonksiyone;
  198. if(myVR.load(record, 7) >= 0){
  199. printRecord(record, 7);
  200. Serial.println(F("yuklendi."));
  201. }
  202. }
  203. break;
  204. case fonksiyona: // Acil fonksiyonu icin olusacak seyler
  205. lcd.print("A");
  206. break;
  207. case fonksiyonb:
  208. lcd.print("B");
  209. break;
  210. case fonksiyonc:
  211. lcd.print("C");
  212. break;
  213. case fonksiyonnoktalic:
  214. lcd.write((uint8_t)1);
  215. break;
  216. case fonksiyond:
  217. lcd.print("D");
  218. break;
  219. case fonksiyone:
  220. lcd.print("E");
  221. break;
  222. case fonksiyonf:
  223. lcd.print("F");
  224. break;
  225. case fonksiyong:
  226. lcd.print("G");
  227. break;
  228. case fonksiyonyumusakg:
  229. Serial.println("Yumusak G");
  230. lcd.setCursor(0,1);
  231. lcd.print("-");
  232. break;
  233. case fonksiyonh:
  234. lcd.print("H");
  235. break;
  236. case fonksiyonnoktasizi:
  237. lcd.print("I");
  238. break;
  239. case fonksiyoni:
  240. lcd.print("-");
  241. break;
  242. case fonksiyonj:
  243. lcd.print("J");
  244. break;
  245. case fonksiyonk:
  246. lcd.print("K");
  247. break;
  248. case fonksiyonl:
  249. lcd.print("L");
  250. break;
  251. case fonksiyonm:
  252. lcd.print("M");
  253. break;
  254. case fonksiyonn:
  255. lcd.print("N");
  256. break;
  257. case fonksiyono:
  258. lcd.print("O");
  259. break;
  260. case fonksiyonnoktalio:
  261. lcd.print("-");
  262. break;
  263. case fonksiyonp:
  264. lcd.print("P");
  265. break;
  266. case fonksiyonr:
  267. lcd.print("R");
  268. break;
  269. case fonksiyons:
  270. lcd.print("S");
  271. break;
  272. case fonksiyonnoktalis:
  273. lcd.print("-");
  274. break;
  275. case fonksiyont:
  276. lcd.print("T");
  277. break;
  278. case fonksiyonu:
  279. lcd.print("U");
  280. break;
  281. case fonksiyonnoktaliu:
  282. lcd.print("-");
  283. break;
  284. case fonksiyonv:
  285. lcd.print("V");
  286. break;
  287. case fonksiyony:
  288. lcd.print("Y");
  289. break;
  290. case fonksiyonz:
  291. lcd.print("Z");
  292. break;
  293. case fonksiyonsil:
  294. lcd.clear();
  295. break;
  296. case fonksiyonbirincisatir:
  297. lcd.setCursor(0,0);
  298. break;
  299. case fonksiyonikincisatir:
  300. lcd.setCursor(0,1);
  301. break;
  302. case fonksiyonarkaplanisiginiac:
  303. lcd.backlight();
  304. break;
  305. case fonksiyonarkaplanisiginikapat:
  306. lcd.noBacklight();
  307. break;
  308. case fonksiyonsifirla:
  309. lcd.clear();
  310. lcd.backlight();
  311. lcd.setCursor(0,0);
  312. lcd.print("Konusabilirsin");
  313. lcd.setCursor(0,1);
  314. break;
  315. default:
  316. Serial.println("Boyle Bir Fonksiyon Belirlenmedi");
  317. break;
  318. }
  319. printVR(buf);
  320. }
  321. }
  322. void printRecord(uint8_t *buf, uint8_t len)
  323. {
  324. Serial.print(F("Kayit: "));
  325. for(int i=0; i<len; i++){
  326. Serial.print(buf[i], DEC);
  327. Serial.print(", ");
  328. }
  329. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement