merhaba ; arduino ya henüz daha yeni başladım ancak araştırmalarımla bir projenin neredeyse sonuna geldim . basit bir konveyor projesinden yola çıkarak bir çok projeyi birleştirip bana göre başarılı sonuçlar bile aldım
Şimdi yapmak istediğimi ve yazabildiğimi sizlerle paylaşıp sorunlarıma çözüm için yardımlarınızı bekliyorum . *tuş takımına bir sayı yazılır *bu sayı ekranda gösterilir *röle motoru çalışır pozisyona getirir *ürünler geçer lazer sensör okur *geçen ürün sayısı girilen ürün sayısına eşit olduğunda motor durur bundan sonra eğer aynı sayı ile tekrar çalıştırılacaksa (#) eğer farklı bir sayı girilecek ise (*) (#) tuşuna basıldığında *röle motoru çalıştırır *ürünler geçer lazer sensör okur *geçen ürün sayısı girilen ürün sayısına eşit olduğunda motor durur (*) tuşuna basıldığında *yeni sayı girilir ve işlemler tekrarlanır . neredeyse kod’un tamamı çalışıyor , ufak tefek eksiklikler var tabi 1- 2 dijit sayı girildiğinde ekranda iki rakamı da göstermesine rağmen sadece 2. sayıyı algılıyor örneğin 15 yazdığımda röle 5. ürün geçtiğinde gücü kesiyor . 2- (#) tuşuna basıldığında röle enerji vermeye devam ediyor ancak bu kez de girilen sayıyı resetlediği için geçen ürünü sayıyor ancak durdurmuyor . 3- (*) tuşuna basıldığında hiç bir şey olmuyor . biraz uzun yazdım ancak sorunlarım bunlar herkes bir el atarsa inanıyorum hızlıca bir sonuca varacağız . İlginze şimdiden teşekkür ederim . include < Wire.h > include < LiquidCrystal_I2C.h > LiquidCrystal_I2C lcd(0x27, 16, 2); include < Keypad.h >//Keypad library added byte relay = 4, laser_din = 2; int counter = 0, piece = 0; const byte ROW = 4;//4 row const byte COLUMN = 3;//3 column char keys[ROW][COLUMN] = { {‘1’, ‘2’, ‘3’}, {‘4’, ‘5’, ‘6’}, {‘7’, ‘8’, ‘9’}, {‘*’, ‘0’, ‘#’}, };//4X3 matris created byte rowPins[ROW] = { 6, 7, 8, 9 }; //row digital pins byte colPins[COLUMN] = { 10, 11, 12 };//column digital pins Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROW, COLUMN );//keymap created void setup() { lcd.setBacklight(HIGH); // NOTE: You can turn the backlight off by setting it to LOW instead of HIGH lcd.begin(); lcd.print(“ENTER PIECE:”); pinMode(laser_din, INPUT);//laser sensor input pinMode(relay, OUTPUT);//relay output } void loop() {char key = keypad.getKey(); //char read from keypad and sent to piece if (key) { lcd.print(key); piece = key - 48;//Char to int change } if (digitalRead(laser_din) == 0) { delay(20);//Bekleme… if (digitalRead(laser_din) == 1) { lcd.clear(); counter++;//every piece crossed piece get one more lcd.print(“Piece:”); lcd.println(counter);//print counter to screen if (counter == piece) //if counter equal to piece { digitalWrite(relay, HIGH);//relay stop lcd.println(“FINISH”);//write finish counter = 0;//reset counter piece = 0;//reset piece delay(5000);//wait 5 seconds lcd.clear(); lcd.print(“ENTER PIECE:”); lcd.print(piece); piece = 0; counter = 0; } } } if (key == ‘*’) { digitalWrite(relay, HIGH);//stop lcd.print(“FINISH:”); lcd.print(counter); piece = 0; counter = 0; } if (key == ‘#’) { digitalWrite(relay, LOW);//start lcd.print(counter); lcd.setCursor(0, 1); lcd.print(key); } }