Geri Sayım Sayacı Yapmak
  • İyi günler. Elimde uno r3 ve 128*32oled ekran mevcut. Ben 2 buton ve 1 röle kullanarak basit bir zil devresi yapmak istiyorum. Bu devrede butonlardan biri zamanı arttırıcak biri azaltacak. Ekranda girilen zaman görünecek ve zaman dolduğunda röle çektirip zil çaldırıcak.Programımda void setup kısmı ile ilgili sorun yok. Ekrana veri aktarımında da problem yaşamadım. Hatta röleyi belirlediğim temel zamanda çektirebildim ama zamanı bir türlü kullanıcı girişi ile ayarlayamadım. Yardımcı olursanız çok sevinirim.

    +++++++
    #include < SPI.h>
    #include < Wire.h>
    #include < Adafruit_GFX.h>
    #include < Adafruit_SSD1306.h>
    #include < math.h>
    #include < stdio.h>


    #define OLED_RESET 4
    Adafruit_SSD1306 display(OLED_RESET);

    #define NUMFLAKES 10
    #define XPOS 0
    #define YPOS 1
    #define DELTAY 2


    #define LOGO16_GLCD_HEIGHT 16
    #define LOGO16_GLCD_WIDTH 16
    static const unsigned char PROGMEM logo16_glcd_bmp[] =
    { B00000000, B11000000,
    B00000001, B11000000,
    B00000001, B11000000,
    B00000011, B11100000,
    B11110011, B11100000,
    B11111110, B11111000,
    B01111110, B11111111,
    B00110011, B10011111,
    B00011111, B11111100,
    B00001101, B01110000,
    B00011011, B10100000,
    B00111111, B11100000,
    B00111111, B11110000,
    B01111100, B11110000,
    B01110000, B01110000,
    B00000000, B00110000 };

    #if (SSD1306_LCDHEIGHT != 32)
    #error("Height incorrect, please fix Adafruit_SSD1306.h!");
    #endif



    int eksi = 6;
    int arti = 7;
    int role = 8;
    int sayac = 0;
    int buton1 = 0;
    int buton2 = 0;
    unsigned long int zaman = 180000;
    unsigned long int yenizaman = 0;

    void setup() {
    Serial.begin(9600);
    pinMode(role, OUTPUT);
    pinMode(eksi, INPUT);
    pinMode(arti, INPUT);

    display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
    display.display();
    delay(2000);
    display.clearDisplay();


    }
    void loop() {

    delay(1000);
    buton1 = digitalRead(arti);
    buton2 = digitalRead(eksi);

    {
    if (buton1 == 1);
    {
    delay(50);
    sayac ++;
    while(buton1 == 1);
    buton1 == digitalRead(buton1);
    delay(50);
    yenizaman=(sayac*60000)+zaman;
    }
    if (buton2 == 1);
    {
    delay(50);
    sayac --;
    while(buton2 == 1);
    buton2 == digitalRead(buton2);
    delay(50);
    zaman=(sayac*60000)+zaman;
    }
    if (buton1==0 && buton2==0);
    {
    zaman=zaman;
    }
    }
    {
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0,0);
    display.println(" SURE");
    display.println(zaman);
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.display();
    delay(2000);
    display.clearDisplay();
    display.invertDisplay(true);
    delay(1000);
    display.invertDisplay(false);
    delay(1000);
    display.clearDisplay();
    digitalWrite(role,0);
    delay(zaman);
    digitalWrite(role,1);
    delay(1000);
    digitalWrite(role,0);
    }
    }
    ++++++
  • Böyle bir şey işinizi görür mü encoder ile yapılmıştır.

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.