PapirKutya77 Creative Commons License 2022.12.05 0 0 4053

Sziasztok !

 

Szeretném segítségeteket kérni egy projekt megvalósításában. Szeretnék elkészíteni egy infa érzékelős objektum számlálót. Az lenne a lényege, hogy ha az érzékelő előtt egy tárgy elhalad, akkor a OLED kijelzőn lévő szám 1-el nő.

Egy gomb megnyomására a számláló nullázható lenne. Sajnos valahol elakadtam. :( A kijelző vezérlése szépen működik, de a bemenet kiolvasásakor valami gond lehet. Hibába történik érzékelés, a számláló nem mozdul.

Az érzékelő egyébként DI2-re van kötve.

 

Ez lenne a kód:

 

#include <Wire.h>
// #include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
int Count = 0;
//const int InputPin = A0;
const byte D2 = 2;
const int InputPin = 2;
int LastInputState = LOW;

void setup()
{
  Serial.begin(115200);

  pinMode(InputPin, INPUT);

  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))  // Address 0x3D for 128x64
  {
    Serial.println(F("SSD1306 allocation failed"));
    for (;;);
  }
  delay(2000);
  display.clearDisplay();

  display.setTextSize(1, 3);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println("  Turn counter ");
  display.setCursor(40, 20);
  display.print(Count);
  display.print("     =turn  ");
  display.display();
  delay(100);
}

void loop()
{
  int inputState = digitalRead(InputPin);
 
  if (inputState == HIGH && LastInputState == LOW)
  {
    Count++;
    display.setCursor (40, 20);
    display.print(Count);
  }

  LastInputState = inputState;
}

 

Van valakinek ötlete, hogy hol lehet a baj ?

 

Remélem tudtok segíteni. Nagyon köszönöm.

 

Zoli