Arduıno buton kodlama ve veri aktarımı

Reklam Alanı #5

dhnylmzz

Yeni üye
Katılım
11 Eki 2019
Mesajlar
9
Tepkime puanı
0
Puanları
1
Konum
istanbul
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
Katılım
16 Mar 2019
Mesajlar
40
Tepkime puanı
13
Puanları
1
Konum
Balıkesir
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
Katılım
18 Tem 2019
Mesajlar
41
Tepkime puanı
9
Puanları
1
Konum
Bursa
Ş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
Katılım
11 Eki 2019
Mesajlar
9
Tepkime puanı
0
Puanları
1
Konum
istanbul
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
Katılım
11 Eki 2019
Mesajlar
9
Tepkime puanı
0
Puanları
1
Konum
istanbul
Ş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.
 

xbrknx

Yeni üye
Katılım
16 Tem 2019
Mesajlar
110
Tepkime puanı
19
Puanları
1
Konum
istanbul
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:

S0NSU2LUK

Yeni üye
Katılım
16 Mar 2019
Mesajlar
40
Tepkime puanı
13
Puanları
1
Konum
Balıkesir
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.
Sayacın istediği değerde uyarı vermesini sağlayabilirsin. Ve aynı zamanda sayaç saymaya devam eder
 

dhnylmzz

Yeni üye
Katılım
11 Eki 2019
Mesajlar
9
Tepkime puanı
0
Puanları
1
Konum
istanbul
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.
 

Reklam Alanı #6

Reklam Alanı #1

Yeni konular

Reklam Alanı #2

Üst