-
-
Save Selim6422/cfd74068ae71b0e8f33a65a9985c6f01 to your computer and use it in GitHub Desktop.
Arduino Yapay Zeka
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // SESLİ KONTROL KONUŞAN ROBOT By Robimek | |
| //Yazılım Geliştirme By Robimek | |
| //Yazılım Lisans By Robimek | |
| //www.robimek.com | |
| #include <Servo.h>// servo motor kütüphanesi | |
| #include <NewPing.h>//ultrasonik sensör kütüphanesi | |
| #include <Wtv020sd16p.h> | |
| int resetPin = 13; | |
| int clockPin = 11; | |
| int dataPin = 12; | |
| int busyPin = 10; | |
| Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin); | |
| String voice; | |
| //motor pinleri | |
| #define SolMotorileri 6 | |
| #define SolMotorGeri 5 | |
| #define SagMotorileri 8 | |
| #define SagMotorGeri 9 | |
| #define led 53 | |
| #define ledmavi 51 | |
| #define ledyesil 49 | |
| #define ledkirmizi 45 | |
| #define ledvcc 47 | |
| #define tx 1 | |
| #define rx 0 | |
| //sensör pinleri | |
| #define USTrigger 3 | |
| #define USEcho 2 | |
| #define Maksimum_uzaklik 100 | |
| Servo servo; //servo motor tanımlama | |
| NewPing sonar(USTrigger, USEcho, Maksimum_uzaklik);//ultrasonik sensör tanımlama | |
| //kullanılacak eleman tanımı | |
| unsigned int uzaklik; | |
| unsigned int on_uzaklik; | |
| unsigned int sol_uzaklik; | |
| unsigned int sag_uzaklik; | |
| unsigned int zaman; | |
| // program ilk çalıştığında sadece bir kez çalışacak programlar | |
| void setup() | |
| { | |
| Serial.begin(9600); //iletişim ayarı | |
| //motor çıkışları | |
| pinMode(SolMotorileri, OUTPUT); | |
| pinMode(SolMotorGeri, OUTPUT); | |
| pinMode(SagMotorileri, OUTPUT); | |
| pinMode(SagMotorGeri, OUTPUT); | |
| pinMode(led, OUTPUT); | |
| pinMode(ledkirmizi, OUTPUT); | |
| pinMode(ledmavi, OUTPUT); | |
| pinMode(ledyesil, OUTPUT); | |
| pinMode(ledvcc, OUTPUT); | |
| servo.attach(4); //servo pin tanımı | |
| wtv020sd16p.reset(); | |
| wtv020sd16p.playVoice(0); | |
| wtv020sd16p.playVoice(13); | |
| delay(10000); | |
| wtv020sd16p.playVoice(14); | |
| } | |
| // sonsuz döngü | |
| void loop() { | |
| while (Serial.available()){ //Okumak için kullanılabilir bayt olup olmadığını kontrol et | |
| delay(10); //10 milisaniye bekle | |
| char c = Serial.read(); //Seri okuma | |
| if (c == '#') {break;} // # tespit edildiğinde döngüden çık | |
| voice += c; //Ses = ses + c Steno | |
| } | |
| if (voice.length() > 0) { | |
| Serial.println(voice); | |
| if(voice == "*ileri"||voice == "*ileri git") | |
| {wtv020sd16p.playVoice(3); | |
| ileri();} | |
| else if(voice == "*geri"||voice == "*geri gel") | |
| {wtv020sd16p.playVoice(2); | |
| geri();} | |
| else if(voice == "*sağa dön"||voice == "*sağ") | |
| {wtv020sd16p.playVoice(7); | |
| sag();} | |
| else if(voice == "*sola dön"||voice == "*sol") | |
| {wtv020sd16p.playVoice(1); | |
| sol();} | |
| else if(voice == "*dur"||voice == "*arabayı durdur") | |
| {dur(); | |
| wtv020sd16p.playVoice(11);} | |
| else if(voice == "*sol ileri") | |
| {sol(); | |
| delay(100); | |
| ileri();} | |
| else if(voice == "*sağ ileri") | |
| {sag(); | |
| delay(100); | |
| ileri();} | |
| else if(voice == "*sol geri") | |
| {sol(); | |
| delay(100); | |
| geri();} | |
| else if(voice == "*sag geri") | |
| {sag(); | |
| delay(100); | |
| geri();} | |
| else if(voice == "*ileri git dur"||voice == "*biraz ileri git") | |
| {ileri(); | |
| delay(1000); | |
| dur();} | |
| else if(voice == "*geri gel dur"||voice == "*biraz geri gel") | |
| {geri(); | |
| delay(1000); | |
| dur();} | |
| else if(voice == "*sola dön dur"||voice == "*biraz sola dön") | |
| {sol(); | |
| delay(300); | |
| dur();} | |
| else if(voice == "*sağa dön dur"||voice == "*biraz sağa dön") | |
| {sag(); | |
| delay(300); | |
| dur();} | |
| else if(voice == "*sola bak"||voice == "*soluna bak") | |
| {wtv020sd16p.playVoice(8); | |
| solabak();} | |
| else if(voice == "*sağa bak"||voice == "*sağına bak"||voice == "*sabah") | |
| {wtv020sd16p.playVoice(6); | |
| sagabak();} | |
| else if(voice == "*önüne bak"||voice == "*öne bak") | |
| {wtv020sd16p.playVoice(5); | |
| onunebak();} | |
| else if(voice == "*ışığı aç"||voice == "*ledi yak") | |
| {wtv020sd16p.playVoice(4); | |
| ledyak();} | |
| else if(voice == "*ışığı kapat"||voice == "*ledi söndür") | |
| {digitalWrite(51,HIGH); | |
| digitalWrite(49,HIGH); | |
| digitalWrite(45,HIGH); | |
| digitalWrite(47,LOW);} | |
| else if(voice == "*kırmızı") | |
| {digitalWrite(45,LOW); | |
| digitalWrite(49,HIGH); | |
| digitalWrite(51,HIGH); | |
| digitalWrite(47,HIGH);} | |
| else if(voice == "*yeşil") | |
| {digitalWrite(49,LOW); | |
| digitalWrite(45,HIGH); | |
| digitalWrite(51,HIGH); | |
| digitalWrite(47,HIGH); } | |
| else if(voice == "*mavi") | |
| {wtv020sd16p.playVoice(4); | |
| digitalWrite(51,LOW); | |
| digitalWrite(49,HIGH); | |
| digitalWrite(45,HIGH); | |
| digitalWrite(47,HIGH);} | |
| else if(voice == "*mor") | |
| {digitalWrite(51,LOW); | |
| digitalWrite(49,HIGH); | |
| digitalWrite(45,LOW); | |
| digitalWrite(47,HIGH);} | |
| else if(voice == "*beyaz") | |
| {digitalWrite(51,LOW); | |
| digitalWrite(49,LOW); | |
| digitalWrite(45,LOW); | |
| digitalWrite(47,HIGH);} | |
| else if(voice == "*engel"||voice == "*engel algıla") | |
| {wtv020sd16p.playVoice(0); | |
| engel(); | |
| delay(5000); | |
| dur();} | |
| else if(voice == "*merhaba") | |
| { wtv020sd16p.playVoice(9);} | |
| else if((voice == "*müziği kapat")||(voice == "*kapat")) | |
| { wtv020sd16p.reset(); | |
| wtv020sd16p.stopVoice();} | |
| else if((voice == "*müziği aç")||(voice == "*şarkı söyle")||(voice == "*muzik")) | |
| { wtv020sd16p.playVoice(12);} | |
| voice=""; | |
| } | |
| } | |
| // robotun yön komutları | |
| void ileri() | |
| { | |
| digitalWrite(SolMotorGeri, LOW); | |
| digitalWrite(SolMotorileri, HIGH); | |
| digitalWrite(SagMotorGeri, LOW); | |
| digitalWrite(SagMotorileri, HIGH); | |
| } | |
| void geri() | |
| { | |
| digitalWrite(SolMotorileri, LOW); | |
| digitalWrite(SolMotorGeri, HIGH); | |
| digitalWrite(SagMotorileri, LOW); | |
| digitalWrite(SagMotorGeri, HIGH); | |
| } | |
| void sag() | |
| { | |
| digitalWrite(SolMotorileri, HIGH); | |
| digitalWrite(SolMotorGeri, LOW); | |
| digitalWrite(SagMotorGeri, HIGH); | |
| digitalWrite(SagMotorileri, LOW); | |
| } | |
| void sol() | |
| { | |
| digitalWrite(SolMotorGeri, HIGH); | |
| digitalWrite(SolMotorileri, LOW); | |
| digitalWrite(SagMotorileri, HIGH); | |
| digitalWrite(SagMotorGeri, LOW); | |
| } | |
| void dur() | |
| { | |
| digitalWrite(SolMotorGeri, LOW); | |
| digitalWrite(SolMotorileri, LOW); | |
| digitalWrite(SagMotorileri, LOW); | |
| digitalWrite(SagMotorGeri, LOW); | |
| } | |
| void sagabak() | |
| { | |
| servo.write(0); | |
| delay(100); | |
| } | |
| void solabak() | |
| { | |
| servo.write(180); | |
| delay(100); | |
| } | |
| void onunebak() | |
| { | |
| servo.write(90); | |
| delay(100); | |
| } | |
| void ledyak() | |
| { | |
| digitalWrite(53,HIGH); | |
| } | |
| void ledkapat() | |
| { | |
| digitalWrite(53,LOW); | |
| } | |
| // sensörün mesafe ölçümü | |
| void sensor_olcum() | |
| { | |
| delay(50); | |
| zaman = sonar.ping(); | |
| uzaklik = zaman / US_ROUNDTRIP_CM; | |
| } | |
| void engel() | |
| { | |
| delay(500); | |
| servo.write(90); | |
| sensor_olcum(); | |
| on_uzaklik = uzaklik; | |
| if(on_uzaklik > 35 || on_uzaklik == 0) | |
| { | |
| ileri(); | |
| } | |
| else | |
| { | |
| dur(); | |
| servo.write(180); | |
| delay(500); | |
| sensor_olcum(); | |
| sol_uzaklik = uzaklik; | |
| servo.write(0); | |
| delay(500); | |
| sensor_olcum(); | |
| sag_uzaklik = uzaklik; | |
| servo.write(90); | |
| delay(500); | |
| if(sag_uzaklik < sol_uzaklik) | |
| { | |
| sol(); | |
| delay(500); | |
| ileri(); | |
| } | |
| else if(sol_uzaklik < sag_uzaklik) | |
| { | |
| sag(); | |
| delay(500); | |
| ileri(); | |
| } | |
| else | |
| { | |
| geri(); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment