#include #include "Ucglib.h" #include Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 8, /*data=*/ 10, /*cd=*/ A0, /*cs=*/ A2, /*reset=*/ 5); bool startFlag = 0; String exposureType = ""; int powerLevel = 0; int exposureTime = 0; const int LED_WHITE = D5; const int LED_UV = D6; int max_threshold = 1000; int max_cycle = 5000; int num_cycles = 30; uint16_t cycle,cycles,threshold; void setup(void) { Serial.begin(9600); delay(1000); ucg.begin(UCG_FONT_MODE_SOLID); ucg.setRotate90(); ucg.clearScreen(); Serial.println("Cleared"); pinMode(SS, OUTPUT); // CS for flash digitalWrite(SS, HIGH); // <-- Set CS pin HIGH to deselect pinMode(LED_WHITE, OUTPUT); pinMode(LED_UV, OUTPUT); digitalWrite(LED_WHITE, LOW); digitalWrite(LED_UV, LOW); ucg.setFont(ucg_font_ncenR12_tr); ucg.setColor(255, 255, 255); ucg.setPrintPos(10 , 20); ucg.print("Lithography Settings"); ucg.setPrintPos(100 , 60); ucg.print("White"); ucg.setPrintPos(200 , 60); ucg.setColor(200, 0, 200); ucg.print("UV"); ucg.setPrintPos(10 , 100); ucg.setColor(255, 255, 255); ucg.print("Power Level: "); ucg.setPrintPos(10 , 175); ucg.print("Exposure Time: "); } void loop(void) { if (Serial.available() > 0) { int incomingByte0 = Serial.read(); if(incomingByte0 == 1) { updateParameters(); } if(incomingByte0 == 2) { runExposure(); } } delay(500); } void updateParameters(){ ucg.setColor(0, 255, 0); int incomingByte0 = Serial.read(); if(incomingByte0 == 1){ ucg.setColor(0, 0, 0); ucg.drawFrame(195, 43, 36, 25); ucg.setColor(0, 255, 0); ucg.drawFrame(95, 43, 55, 25); exposureType = "white"; } if(incomingByte0 == 2){ ucg.setColor(0, 0, 0); ucg.drawFrame(95, 43, 55, 25); ucg.setColor(0, 255, 0); ucg.drawFrame(195, 43, 36, 25); exposureType = "uv"; } int incomingByte1 = Serial.read(); ucg.setColor(0, 0, 0); ucg.drawBox(120, 80, 30, 20); ucg.setColor(0, 255, 0); ucg.setPrintPos(120 , 100); ucg.print(String(incomingByte1)); powerLevel = incomingByte1; int incomingByte2 = Serial.read(); ucg.setColor(0, 0, 0); ucg.drawBox(145, 155, 30, 20); ucg.setColor(0, 255, 0); ucg.setPrintPos(145, 175); ucg.print(String(incomingByte2)); exposureTime = incomingByte2; } void runExposure(){ ucg.setColor(0, 255, 0); ucg.setPrintPos(120 , 220); ucg.print("EXPOSING"); int countDown = exposureTime; int pwmOut = LED_WHITE; int startTime = millis(); int endTime = 0; int diffTime = 0; float power = powerLevel/10; if(exposureType == "uv") { pwmOut = LED_UV; } while(diffTime < exposureTime*1000){ //ucg.setColor(0, 0, 0); //ucg.drawBox(220, 180, 40, 40); //ucg.setColor(0, 255, 0); //ucg.setPrintPos(220, 220); //countDown = exposureTime - floor(diffTime/1000); //ucg.print(String(countDown)); for (cycles = 0; cycles < num_cycles; ++cycles) { for (cycle = 0; cycle < max_threshold*power; ++cycle) digitalWrite(pwmOut, HIGH); for (cycle = max_threshold*power; cycle < max_cycle; ++cycle) digitalWrite(pwmOut, LOW); Serial.println(cycles); } endTime = millis(); diffTime = endTime - startTime; } digitalWrite(pwmOut, LOW); ucg.setColor(0, 0, 0); ucg.drawBox(120, 180, 140, 40); }