#include #include #include #include #define sensor 14 #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); int previous_state = 0; unsigned long time1, time2, calc; float to_disp, to_disp_2; void setup() { Serial.begin(9600); // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) // Address 0x3C for 128x64 Serial.println("SSD1306 allocation failed"); for(;;); // Don't proceed, loop forever pinMode(sensor, INPUT); display.clearDisplay (); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0,0); display.println(F("Laser")); display.setCursor(12,10); display.println(F("Shutter")); display.setCursor(24,20); display.println(F("Tester")); display.setCursor(90,50); display.println(F("v. 1.0a")); display.display(); delay(3000); display.clearDisplay(); display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(20,20); display.println(F("Ready...")); display.display(); } void wyswietl(float wartosc) { display.clearDisplay(); if (wartosc <1.0 ) { to_disp_2 = 1.0/wartosc; display.setTextSize(2); // Normal 1:1 pixel scale display.setCursor(20,14); display.println(F("1")); display.drawLine(5,32,42,32, WHITE); display.setCursor(25,34); display.println(to_disp_2,DEC); display.drawLine(50,0,50,64, WHITE); display.setCursor(60,24); display.println(wartosc,DEC); display.setCursor(110,23); display.println(F("[s]")); } else { display.setCursor(15,20); display.println(wartosc,DEC); display.setCursor(100,20); display.println(F("s")); } display.display(); } void loop() { int sensorState = digitalRead(sensor); if (previous_state == 0 && sensorState == HIGH) { time1 = millis(); previous_state = 1; } else if (previous_state == 1 && sensorState == LOW) { time2 = millis(); previous_state = 0; calc = time2-time1; to_disp = float(calc)/1000; wyswietl(to_disp); } delay(10); }