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