Facebook
From Abrupt Leech, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 272
  1. #include <SPI.h>
  2. #include <Wire.h>
  3. #include <Adafruit_GFX.h>
  4. #include <Adafruit_SSD1306.h>
  5.  
  6. #define sensor  14
  7. #define SCREEN_WIDTH 128 // OLED display width, in pixels
  8. #define SCREEN_HEIGHT 64 // OLED display height, in pixels
  9. #define OLED_RESET     4 // Reset pin # (or -1 if sharing Arduino reset pin)
  10. Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  11.  
  12.  
  13. int previous_state = 0;
  14. bool finished, read_ready = false;
  15. unsigned long time1, time2, calc;
  16. float to_disp, to_disp_2;
  17.  
  18.  
  19. void setup() {
  20.  
  21.   Serial.begin(9600);
  22.   // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
  23.   if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))  // Address 0x3C for 128x64
  24.     Serial.println("SSD1306 allocation failed");
  25.     for(;;); // Don't proceed, loop forever  
  26.   pinMode(sensor, INPUT);
  27.   display.clearDisplay ();
  28.   display.setTextSize(1);
  29.   display.setTextColor(WHITE);
  30.   display.setCursor(0,0);
  31.   display.println("Laser");
  32.   display.setCursor(12,10);
  33.   display.println("Shutter");
  34.   display.setCursor(24,20);
  35.   display.println("Tester");
  36.   display.setCursor(90,50);
  37.   display.println("v. 1.0a");
  38.   display.display();
  39.   delay(3000);
  40.   display.clearDisplay();
  41.   display.setTextSize(3);
  42.   display.setTextColor(WHITE);
  43.   display.setCursor(20,20);
  44.   display.println("Ready...");
  45.   display.display();
  46. }
  47.  
  48. void loop() {
  49.  
  50.   int sensorState = digitalRead(sensor);
  51.   if (previous_state == 0 && sensorState == HIGH){
  52.     time1 = millis();
  53.     previous_state = 1;
  54.   }
  55.   if (previous_state == 1 && sensorState == LOW){
  56.     time2 = millis();
  57.     previous_state = 0;
  58.     read_ready = true;
  59.   }
  60.   if(read_ready == true){
  61.     calc = time2-time1;
  62.     to_disp = float(calc)/1000;
  63.     read_ready = false;
  64.     finished = true;
  65.   }
  66.   if(finished == true){
  67.     if(to_disp<1.0){
  68.       to_disp_2 = 1/to_disp;
  69.       display.clearDisplay();
  70.       display.setTextSize(2);             // Normal 1:1 pixel scale
  71.       display.setCursor(20,14);
  72.       display.println("1");
  73.       display.drawLine(5,32,42,32, WHITE);
  74.       display.setCursor(25,34);
  75.       display.println(to_disp_2,0);
  76.       display.drawLine(50,0,50,64, WHITE);
  77.       display.setCursor(60,24);
  78.       display.println(to_disp,3);
  79.       display.setCursor(110,23);
  80.       display.println("[s]");
  81.       display.display();
  82.     } else {
  83.     display.clearDisplay();
  84.     display.setCursor(15,20);
  85.     display.println(to_disp,3);
  86.     display.setCursor(100,20);
  87.     display.println("s");
  88.     display.display();
  89.     }
  90.     finished = false;
  91.   }
  92.  
  93.   delay(1);
  94. }