From 948ffd3fffefd84c3a8d4bc79407e8d93d109395 Mon Sep 17 00:00:00 2001 From: theapemachine Date: Mon, 2 Dec 2019 20:59:14 +0100 Subject: [PATCH] Cleaning up some code, untested --- notcha/notcha.ino | 162 ++++++++++++---------------------------------- 1 file changed, 43 insertions(+), 119 deletions(-) diff --git a/notcha/notcha.ino b/notcha/notcha.ino index 7383e71..3317f24 100644 --- a/notcha/notcha.ino +++ b/notcha/notcha.ino @@ -1,9 +1,7 @@ - //************************************************************ // NOTCHA-COTCHA CODE //************************************************************ - #include #include #include @@ -15,7 +13,7 @@ Adafruit_SSD1306 display(OLED_RESET); #if (SSD1306_LCDHEIGHT != 32) #error("Height incorrect, please fix Adafruit_SSD1306.h!"); #endif -int displayLength, minX; +int displayLength, minX; #define BUFFDSIZE 200 char message[BUFFDSIZE]; @@ -32,7 +30,6 @@ int switchPin = 13; int LEDARRAY = 0; int LEDB = 2; - void setup() { Serial.begin(9600); display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32) @@ -42,26 +39,45 @@ void setup() { pinMode(TRIGGER_BUTTON, INPUT); Serial.println("start"); - - - setLaserName("Power On"); displayLength = display.width(); minX = -12 * strlen(message); displayData(); } -void loop() { +void hipulselo() { + digitalWrite(LIDAR_EMITTER, HIGH); + delayMicroseconds(pulse); + digitalWrite(LIDAR_EMITTER, LOW); +} +void emit(int fire, int delay, int n=3, bool quirk=false) { + if (fire == 0) { + for (int a = 1; a <= n; a++) { + hipulselo() + delayMicroseconds(delay); // 10ms + + if quirk { + hipulselo() + delayMicroseconds(12603); // need 6 delays units (4201*3) + delayMicroseconds(12603); // (4201*3) + } + } + } +} + +void loop() { if (digitalRead(CHANGE_MODE_BUTTON) == 1) { CHANGE_MODE_BUTTON_PRESSED = 0; } + if (digitalRead(CHANGE_MODE_BUTTON) == 0 && CHANGE_MODE_BUTTON_PRESSED == 0) { if (choice < 12) { choice ++ ; } else { choice = 0; } + CHANGE_MODE_BUTTON_PRESSED = 1; Serial.print("choice "); Serial.println(choice); @@ -74,167 +90,76 @@ void loop() { } lastchoice = choice; - - fire = digitalRead(TRIGGER_BUTTON); + if (fire == 0) { Serial.print("fired "); Serial.println(choice); } + switch (choice) { case 0: setLaserName("Ultralyte Non-LR"); // 100 pulses per second - - if (fire == 0) { - for (int a = 1; a <= 3; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(9999); // 10ms - } - } + emit(fire, 9999); break; case 1: setLaserName("Ultralyte Rev.1"); // 100pps - if (fire == 0) { - for (int a = 1; a <= 3; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(9999); // 10ms - } - } + emit(fire, 9999); break; case 2: setLaserName("Jenoptik LaserPL");// 100pps - if (fire == 0) { - for (int a = 1; a <= 3; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(9999); // 10ms - } - } + emit(fire, 9999); break; case 3: setLaserName("Kustom Prolaser3");// 200 pps - if (fire == 0) { - for (int a = 1; a <= 3; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(4999); // 5ms - } - } + emit(fire, 4999); break; case 4: setLaserName("Jenoptik Laveg"); // 600pps - if (fire == 0) { - for (int a = 1; a <= 3; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(1666); - } - } + emit(fire, 1666); break; case 5: setLaserName("Kustom Prolaser1"); // 380pps - if (fire == 0) { - for (int a = 1; a <= 3; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(2631); - } - } + emit(fire, 2631); break; case 6: setLaserName("Ultralyte Rev.2"); // 125 pps - if (fire == 0) { - for (int a = 1; a <= 3; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(8000); - } - } + emit(fire, 8000); break; case 7: setLaserName("Stalker LZ-1"); // 130pps - if (fire == 0) { - for (int a = 1; a <= 3; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(7691); - } - } + emit(fire, 7691); break; case 8: setLaserName("Kustom Prolaser2"); // 238pps - if (fire == 0) { - for (int a = 1; a <= 3; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(4201); - } - } + emit(fire, 4201); break; case 9: setLaserName("Laser Atlanta"); // 238pps - if (fire == 0) { - for (int a = 1; a <= 3; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(4201); - } - } + emit(fire, 4201); break; case 10: setLaserName("Laser Atlanta Stealth Mode"); // 238pps // 2 pulses fire followed by 5 missing pulses - if (fire == 0) { - for (int a = 1; a <= 2; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(4201); - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(12603); // need 6 delays units (4201*3) - delayMicroseconds(12603); // (4201*3) - } - } + emit(fire, 4201, 2, true); break; case 11: setLaserName("Kustom ProLite"); // 200 pps - if (fire == 0) { - for (int a = 1; a <= 3; a++) { - digitalWrite(LIDAR_EMITTER, HIGH); - delayMicroseconds(pulse); - digitalWrite(LIDAR_EMITTER, LOW); - delayMicroseconds(4999); // 5ms - } - } + emit(fire, 4999); break; } displayData(); - } - void setLaserName(char* name) { - sprintf(message, "%s", name); - //displayLength = display.width(); + // displayLength = display.width(); } -void clearBUFFD() { //just clear the data buffer + +void clearBUFFD() { // just clear the data buffer memset(message, 0x00, BUFFDSIZE); } + void displayData() { display.clearDisplay(); display.setTextSize(2); @@ -251,5 +176,4 @@ void displayData() { display.display(); if (--displayLength < minX) displayLength = display.width(); -} - +} \ No newline at end of file