Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
162 changes: 43 additions & 119 deletions notcha/notcha.ino
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@

//************************************************************
// NOTCHA-COTCHA CODE
//************************************************************


#include <Wire.h>
#include <LOLIN_I2C_BUTTON.h>
#include <Adafruit_GFX.h>
Expand All @@ -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];

Expand All @@ -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)
Expand All @@ -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);
Expand All @@ -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);
Expand All @@ -251,5 +176,4 @@ void displayData() {
display.display();

if (--displayLength < minX) displayLength = display.width();
}

}