Buton okuma ve işleme
  • Merhaba yapmam gereken bir proje var ve bir türlü bununla alkalı çalışan bir kod toparlayamadım yardımcı olursanız sevinirim projemde 3 adet buton ve 2 adet led var butonları B1-B2-B3 olarak yan yana sıralarsak ve Ledleri de L1-L2 olarak sıralarak projem şu şeklide B1 butonuna basıldığında L1 ledi yanacak ve yanılı kalacak ve B2 butonuna 3 defa basıldığında L2 ledi yanacak ve yanılı kalacak B3 butonuna birkez basıldığında B1-B2 butonunun sayacını sıfırlayacak ve L1-L2 ledleri sönecek. Umarım açıklayıcı anlatabilmişimdir
  • Neyi soruyorsunuz?
  • Bu kodu nasıl yazabileceğimi okulda basit butonla led söndür yak vs gösterdiler fakat bu sıfırlama ve sayma işlemleri hakkında bilgim yok yardımcı olursanız sevinirim
  • int buton2Pin=4;
    int butonPin=2;
    int buton3Pin=5;
    int ledPin=3;
    int led2Pin=6;
    int sayac=0;
    int butondurum=0;
    int butondurum2=0;

    void setup(){
    pinMode(ledPin,OUTPUT);
    pinMode(ledPin,OUTPUT);
    pinMode(butonPin,INPUT);
    pinMode(buton2Pin,INPUT);
    pinMode(buton3Pin,INPUT);
    }
    void loop(){
    sayac==0;
    butondurum=digitalRead(butonPin);
    if(butondurum==HIGH){
    delay(150);
    sayac=sayac+1;
    while(digitalRead(butonPin));
    if(sayac==3){
    digitalWrite(ledPin,HIGH);
    butondurum=digitalRead(buton2Pin);
    if(06/01/2017 ==HIGH){
    digitalWrite(ledPin,LOW);
    sayac=0;
    if(butondurum==HIGH){
    digitalWrite(led2Pin,LOW);
    butondurum2=digitalRead(buton3Pin);
    if(butondurum2==HIGH){
    digitalWrite(led2Pin,HIGH);
    }
    }
    }
    }
    }
    }

    Bu şekilde bir kod oluşturdum ama toparlayamadım allak bullak oldu
  • Sıfırlamak için degisken =0; demeniz yeterli, sayma işleminide döngü yapabilirsiniz,
    Eger ki, programlama konusunda bilginiz yok ise, tavsiyem youtube tan Türkçe temel C programlama videolarını izleyip, temel konuları kavradıktan sonra arduino ya başlamanız.Yoksa çok basit konularda fazlaca zaman kaybedersiniz.
  • Tavsiyeniz için teşekkür ederim programlama konusunda çok fazla bilgim yok bu yüzden sizlere danışıyorum sıfırlama ve sayma işlemini hallettim fakat void loopun içine yazdığım ilk satır çalışıyor fakat diğer satırlar çalışmıyor bunu çözemedim
  • [CODE]int buton3Pin=5;
    int buton2Pin=4;
    int butonPin=2;
    int ledPin=3;
    int led2Pin=6;
    int sayac=0;
    int butondurum=0;

    void setup () {
    pinMode (ledPin,OUTPUT);
    pinMode (butonPin,INPUT);
    pinMode (buton2Pin,INPUT);
    pinMode (buton3Pin,INPUT);
    }

    void loop1(void){
    sayac==0;
    butondurum=digitalRead(butonPin);
    if(butondurum==HIGH){
    sayac=sayac+1;
    while (digitalRead(butonPin));
    if(sayac==3){
    digitalWrite(ledPin,HIGH);

    }
    }
    }
    void loop2(void){
    while(digitalRead(buton2Pin));
    if(butondurum==HIGH)
    digitalWrite(ledPin,LOW);
    sayac=0;
    }
    void loop3(void){
    butondurum=digitalRead(buton3Pin);
    if(butondurum==HIGH){
    digitalWrite(led2Pin,HIGH);
    }
    }
    void loop(void) {
    loop1();
    loop2();
    loop3();
    }[/CODE]

    Şöyle bir düzenleme yaptım ama kontrol edermisiniz rica etsem
  • loop1 deki "==" karşılaştırma operatörüdür eşit mi anlamında, onun yerine "=" atama operatörünü kullanmalısın.
  • const int led1 = 3;
    const int led2 = 4;
    const int buton1 = 5;
    const int buton2 = 6;
    const int buton3 = 7;

    int deger=0;

    void setup() {
    Serial.begin(9600);//seri port ekran için

    pinMode(buton1, INPUT);
    pinMode(buton2, INPUT);
    pinMode(buton3, INPUT);
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    }

    void loop() {

    if(digitalRead(buton1) == HIGH )
    {
    digitalWrite(led1, HIGH);
    }
    if(digitalRead(buton2) == HIGH )
    {
    delay(10);
    deger++; //buton a her basışta dereğeri artırmak için
    Serial.println(deger); //seri port ekran için
    delay(1000);//seri port ekran için
    }
    if ( deger==3 )// değer 3 e eşit olunca 2.led i yakıyor
    {
    digitalWrite(led2, HIGH);
    }

    if(digitalRead(buton3) == HIGH )
    {
    digitalWrite(led1, LOW);
    digitalWrite(led2, LOW);
    deger=0;
    }
    }


    Bu şekilde toparladım çalışıyor fakat buyon ikiye basılı tutulduğunda değer okumaya devam ediyor bunu nasıl önlerim


  • if(digitalRead(buton2) == HIGH && değer < 3 )
    {
    delay(10);
    deger++; //buton a her basışta dereğeri artırmak için
    Serial.println(deger); //seri port ekran için
    delay(1000);//seri port ekran için
    }
    if ( deger==3 )// değer 3 e eşit olunca 2.led i yakıyor
    {
    digitalWrite(led2, HIGH);
    }

    bir deneyin,
    işinizi görmesi lazım
  • değer<= 3 olarak ta değiştirebilirsiniz.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.