Arduıno buton kodlama ve veri aktarımı

dhnylmzz

Yeni Üye
11 Eki 2019
10
1
0
istanbul
Cinsiyet
Erkek
Merhaba, arduıno üstüne bir buton koyuyorum. buton aktif oldukça da saymasını istiyorum. serial ekrana veri alabiliyorum. buraya kadar sıkıntım yok. ancak belli bir süre butona basılmadığında ekrana uyarı mesajı vermesini istiyorum. ardından bu veriyi esp8266 ile aktarmak istiyorum nasıl yapabilirim? desteğiniz için teşekkür ederim.


int buton = 6; /* Butonun bağlı olduğu pin */
int buton2 = 13; /* Ana sayaca giden sinyal */
int sayac = 0; /* butona basılma sayısını tutacak değişken */
int butonDurumu = 0; /* Butonun durumu */
int durus = 0;
unsigned long eskiZaman;
unsigned long yeniZaman;


void setup() {
pinMode(buton, INPUT); /*Arduinoya gelen sinyal */
pinMode(buton2, OUTPUT); /*Arduınodan çıkan sinyal */
Serial.begin(9600);
}

void loop() {
{
{ butonDurumu = digitalRead(buton);
if (butonDurumu == HIGH) {
{
delay(10); /* dalgalanmalar için biraz bekleyelim */
sayac ++; /* sayaç = sayaç + 1 yani sayaç değeri bir arttırıldı */
Serial.print("Parca basim adeti = ");
Serial.println(sayac); /* sayaç değerimizi ekrana yazdırıyoruz */
while (butonDurumu == HIGH) { /* Butona basili olduğu surece bekle */
butonDurumu = digitalRead(buton);/* Butonun durumunu kontrol et */
delay(10);
}
}
}
else if (butonDurumu == LOW);
yeniZaman = millis(); {
if (butonDurumu == 0)
{ if (yeniZaman - eskiZaman >= 10000) /*Eski zaman ile yeni zaman arasında 1sn fark varsa */
{
//digitalWrite(6,HIGH);
//butonDurumu == 1;
durus ++;
Serial.print("URETIM DURUS = "); /*Ekrana üretim durdu yazacak */
Serial.println(durus);
eskiZaman = millis();
}
}
}
}
}
 

S0NSU2LUK

Yeni Üye
16 Mar 2019
48
12
13
Balıkesir
Cinsiyet
Erkek
Selamunaleykum;

Ustam kolay gelsin, şunu dene: if(sayac=<250) {Serial.prrintln("DIKKAT!! BUTTON UZUN BASILI");} diyip kendi programına göre uyarla..

KOLAY GELSİN
REGARD
Abdullah TOSUN
 

amenofis

Yeni Üye
18 Tem 2019
41
9
0
Bursa
Cinsiyet
Erkek
Şu kalıbı kullanabilirsin.

C++:
void loop()
{
    unsigned long eskiZaman = millis();
    
    while(!digitalRead(buton)) {
        unsigned long yeniZaman = millis();
        
        if(yeniZaman - eskiZaman >= 1000) {
            eskiZaman = yeniZaman;
            
            // Zaman aşımı olduğunda yapılacak işlemler...
        }
    }
    
    // Butona basıldığında yapılacak işlemler...
    while(digitalRead(buton));
}
 

dhnylmzz

Yeni Üye
11 Eki 2019
10
1
0
istanbul
Cinsiyet
Erkek
Selamunaleykum;

Ustam kolay gelsin, şunu dene: if(sayac=<250) {Serial.prrintln("DIKKAT!! BUTTON UZUN BASILI");} diyip kendi programına göre uyarla..

KOLAY GELSİN
REGARD
Abdullah TOSUN
aleykumselam

burada sanırım sayacım 250 olduğunda uyarı veriyo. benim istediğim aslında sayacım ayrı sayım yaparken buton aktif olmadıgında uyarı almam.

desteğin için teşekkür ederim.
 

dhnylmzz

Yeni Üye
11 Eki 2019
10
1
0
istanbul
Cinsiyet
Erkek
Şu kalıbı kullanabilirsin.

C++:
void loop()
{
    unsigned long eskiZaman = millis();
   
    while(!digitalRead(buton)) {
        unsigned long yeniZaman = millis();
       
        if(yeniZaman - eskiZaman >= 1000) {
            eskiZaman = yeniZaman;
           
            // Zaman aşımı olduğunda yapılacak işlemler...
        }
    }
   
    // Butona basıldığında yapılacak işlemler...
    while(digitalRead(buton));
}
Merhaba,

aslında bendeki kod ile benzer gibi duruyo. burada butona bassam da basmasam da her türlü uyarı veriyo. Yanlış mı düşünüyorum. Deneyeceğim.

desteğin için teşekkür ederim.
 

birkan

Aktif Üye
Paylaşım Ekibi
16 Tem 2019
191
44
113
istanbul
Cinsiyet
Erkek
bu şekilde mantığı daha kolay kavrayabilirsin :

Kod:
unsigned long zaman;
int buton = 6;
int gecikme = 5000; // mesajın kontrol süresi 5 sn
int sayac = 0;
int guard = 0; // button basılı kalmasını veya arka arkaya basmasını engellemek için
int mesaj = 0; // mesajı sadece bir kere yazdırmak için
void setup(){
pinMode(buton, INPUT);
}

void loop() {
unsigned long newtime = millis();

if ( digitalRead(button) == HIGH && guard == 1 ) {
guard = 0; sayac++; mesaj = 1; zaman = millis();
Serial.println("Button a " + sayac + " kere basıldı.");
}
if ( digitalRead(button) == LOW ) { guard = 1; } // buttona low olana kadar guard 0 da kalacak ve fazla button basmayı engelleyecek
if ((newtime-zaman) > gecikme && mesaj == 1 ) { // komutu 1 kere tekrarlaması için
Serial.println("5sndir basılmıyor"); mesaj = 0;
}

}
esp den veriyi başka esp yemi aktaracaksın ? yoksa bu kodu uno da kullanıp esp ile wifi mi aktarmak istiosun
 
Son düzenleme:

dhnylmzz

Yeni Üye
11 Eki 2019
10
1
0
istanbul
Cinsiyet
Erkek
bu şekilde mantığı daha kolay kavrayabilirsin :

Kod:
unsigned long zaman;
int buton = 6;
int gecikme = 5000; // mesajın kontrol süresi 5 sn
int sayac = 0;
int guard = 0; // button basılı kalmasını veya arka arkaya basmasını engellemek için
int mesaj = 0; // mesajı sadece bir kere yazdırmak için
void setup(){
pinMode(buton, INPUT);
}

void loop() {
unsigned long newtime = millis();

if ( digitalRead(button) == HIGH && guard == 1 ) {
guard = 0; sayac++; mesaj = 1; zaman = millis();
Serial.println("Button a " + sayac + " kere basıldı.");
}
if ( digitalRead(button) == LOW ) { guard = 1; } // buttona low olana kadar guard 0 da kalacak ve fazla button basmayı engelleyecek
if ((newtime-zaman) > gecikme && mesaj == 1 ) { // komutu 1 kere tekrarlaması için
Serial.println("5sndir basılmıyor"); mesaj = 0;
}

}
esp den veriyi başka esp yemi aktaracaksın ? yoksa bu kodu uno da kullanıp esp ile wifi mi aktarmak istiosun
Bu kodu ile sayaçtan aldığım veriyi esp ile bi servere yada bi siteye aktarmayı düşünüyorum.
 

Robotikforum.net Nedir?

  • Robotikforum.net 2020 yılında kurulup yayın hayatına başlayan ve Türkiye’de robotik kodlama alanının gelişimine katkıda bulunmak için bu alan ile ilgilenen bireylerin bir birleri ile yardımlaşmaları ve fikir danışmalarını sağlayarak daha iyi öğrenmek için her bir bireyin bilgisini ve tecrübesini alarak kendini geliştirebileceği ve sorularına cevap bulabileceği bir platform olarak kurulmuştur.

Bilgilendirme!!!

İçerik sağlayıcı paylaşım sitelerinden biri olan www.robotikforum.net Adresimizde T.C.K 20.ci Madde ve 5651 Sayılı Kanun'un 4.cü maddesinin (2).ci fıkrasına göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur.

Sayfamızı beğendin mi?

X Merhaba ziyaretçi Robotikforum.net adresine hoşgeldin. Robotikforum.net
adresi gelişen teknoloji ile günden güne yaygınlaşan robotik teknolojileri
hakkında yardımlaşabileceğin ve tartışabileceğin bir platformdur.
Aramıza katılmaya ne dersin?
Kayıt Ol