İsmail Köle
Üye
- Katılım
- 13 May 2016
- Mesajlar
- 16
- Puanları
- 1
- Yaş
- 33
Merhaba arkadaşlar arduino ile bir bant otomasyon projesi geliştiriyorum.Projemin işleyişi keypad üzerinden bir sayı girilecek ve girilen sayı kadar sensör ürün sayacak ve sonrasında duracak.Proje sensör tarafından algılanan cismi algılıyor ve arttırıyor.Buraya kadar herşey güzel ancak keypad üzerinden girilen rakamlar char türünde olduğu için benim bunları integer türüne çevirmem gerekiyor ki matematiksel bir işlem yapabileyim.
Ancak maalesef char türünü integer türüne dönüştürmede problem yaşıyorum.C++ diline yakın olan bir platform olan arduinoda "atoi" fonksiyonunu bu işlem için kullanabiliyoruz.Ancak ben nasıl kullanacağımı bir türlü anlayamadım.Kodlar aşağıda bilgisi olan arkadaşlar varsa yardımcı olabilir mi ?
Ancak maalesef char türünü integer türüne dönüştürmede problem yaşıyorum.C++ diline yakın olan bir platform olan arduinoda "atoi" fonksiyonunu bu işlem için kullanabiliyoruz.Ancak ben nasıl kullanacağımı bir türlü anlayamadım.Kodlar aşağıda bilgisi olan arkadaşlar varsa yardımcı olabilir mi ?
Kod:
#include <Keypad.h>//Keypad kütüphanesi eklendi...
int sayac, motor = 13, mz80 = 5, adet;
const byte SATIR = 4;//4 satır için sabit tanımlanıyor...
const byte SUTUN = 3;//3 sütun için sabit tanımlanıyor...
char tuslar[SATIR][SUTUN] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'},
};//4X3 lük matris oluşturuldu...
byte rowPins[SATIR] = { 9, 8, 7, 6 };//Satır pinlerinin dijital girişleri ayarlanıyor...
byte colPins[SUTUN] = { 12, 11, 10 };//Sütun pinlerinin dijital girişleri ayarlanıyor...
Keypad kpd = Keypad( makeKeymap(tuslar), rowPins, colPins, SATIR, SUTUN );//Satır ve sütun için tuş haritası oluşturuluyor...
void setup() {
Serial.begin(9600);//Seri monitör başlatılıyor...
pinMode(mz80, INPUT);//Sensör giriş olarak tanımlanıyor...
pinMode(motor, OUTPUT);//Motorun bağlı olacağı röleyi çıkış olarak ayarlıyoruz...
digitalWrite(motor, LOW);
}
void loop() {
int tus = kpd.getKey();//Basılan tuş okunuyor ve tus isimli değişkene atılıyor...
adet=tus;
if (tus)
{
Serial.print(tus);
Serial.println(" Adet urun gececek...");
}
if (tus == '*')
{
digitalWrite(motor, LOW);
Serial.println("Bant Durdu");
}
else if (tus == '#')
{
digitalWrite(motor, HIGH);
Serial.println("Bant Basladi");
}
if (digitalRead(mz80) == 0) //Sensör ürünü gördü mü?
{
delay(20);//Bekleme...
if (digitalRead(mz80) == 1) //Ürün sensörün önünden geçtiyse;
{
sayac++;//Her ürün geçtiğinde sayı 1 arttırılacak...
Serial.print("Adet:");
Serial.println(sayac);//Sayacı ekrana yazdırıyoruz...
if (sayac == adet) //Eğer sayaç değişkeni girilen adet sayısana eşitse;
{
digitalWrite(motor, LOW);//Motor dursun...ß
Serial.println("Bitti");//Bitti yazsın...
sayac = 0;//Sayaç sıfırlansın...
}
}
}
}