From 76509536a3f64bd6b7e37b20be01dc568e208982 Mon Sep 17 00:00:00 2001 From: MrBesen Date: Sun, 28 Oct 2018 20:10:19 +0100 Subject: [PATCH] Initial --- .gitignore | 1 + Comptest/Comptest.ino | 95 +++++++++++++++++++++++++++++ I2CLCD/I2CLCD.ino | 38 ++++++++++++ KBTroll/KBTroll.ino | 59 ++++++++++++++++++ LaserClock/LaserClock.ino | 115 ++++++++++++++++++++++++++++++++++++ LaserDraw/LaserDraw.ino | 49 +++++++++++++++ nudelmaschine/main/main.ino | 50 ++++++++++++++++ timer/timer.ino | 15 +++++ 8 files changed, 422 insertions(+) create mode 100644 .gitignore create mode 100644 Comptest/Comptest.ino create mode 100644 I2CLCD/I2CLCD.ino create mode 100644 KBTroll/KBTroll.ino create mode 100644 LaserClock/LaserClock.ino create mode 100644 LaserDraw/LaserDraw.ino create mode 100644 nudelmaschine/main/main.ino create mode 100644 timer/timer.ino diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..52369be --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +libraries/ diff --git a/Comptest/Comptest.ino b/Comptest/Comptest.ino new file mode 100644 index 0000000..53a6041 --- /dev/null +++ b/Comptest/Comptest.ino @@ -0,0 +1,95 @@ +// Reference the I2C Library +#include +// Reference the HMC5883L Compass Library +#include + +// Store our compass as a variable. +HMC5883L compass; +// Record any errors that may occur in the compass. +int error = 0; + +// Out setup routine, here we will configure the microcontroller and compass. +void setup() +{ + // Initialize the serial port. + Serial.begin(38400); + + Serial.println("Starting the I2C interface."); + Wire.begin(); // Start the I2C interface. + + Serial.println("Constructing new HMC5883L"); + compass = HMC5883L(); // Construct a new HMC5883 compass. + + Serial.println("Setting scale to +/- 1.3 Ga"); + error = compass.SetScale(1.3); // Set the scale of the compass. + if(error != 0) // If there is an error, print it out. + Serial.println(compass.GetErrorText(error)); + + Serial.println("Setting measurement mode to continous."); + error = compass.SetMeasurementMode(Measurement_Continuous); // Set the measurement mode to Continuous + if(error != 0) // If there is an error, print it out. + Serial.println(compass.GetErrorText(error)); +} + +// Our main program loop. +void loop() +{ + // Retrive the raw values from the compass (not scaled). + MagnetometerRaw raw = compass.ReadRawAxis(); + // Retrived the scaled values from the compass (scaled to the configured scale). + MagnetometerScaled scaled = compass.ReadScaledAxis(); + + // Values are accessed like so: + int MilliGauss_OnThe_XAxis = scaled.XAxis;// (or YAxis, or ZAxis) + + // Calculate heading when the magnetometer is level, then correct for signs of axis. + float heading = atan2(scaled.YAxis, scaled.XAxis); + + // Once you have your heading, you must then add your 'Declination Angle', which is the 'Error' of the magnetic field in your location. + // Find yours here: http://www.magnetic-declination.com/ + // Mine is: 2� 37' W, which is 2.617 Degrees, or (which we need) 0.0456752665 radians, I will use 0.0457 + // If you cannot find your Declination, comment out these two lines, your compass will be slightly off. + //float declinationAngle = 0.0457; + //heading += declinationAngle; + + // Correct for when signs are reversed. + if(heading < 0) + heading += 2*PI; + + // Check for wrap due to addition of declination. + if(heading > 2*PI) + heading -= 2*PI; + + // Convert radians to degrees for readability. + float headingDegrees = heading * 180/M_PI; + + // Output the data via the serial port. + Output(raw, scaled, headingDegrees); + + // Normally we would delay the application by 66ms to allow the loop + // to run at 15Hz (default bandwidth for the HMC5883L). + // However since we have a long serial out (104ms at 9600) we will let + // it run at its natural speed. + // delay(66); +} + +// Output the data down the serial port. +void Output(MagnetometerRaw raw, MagnetometerScaled scaled, float headingDegrees) +{ + Serial.print("Raw:\t"); + Serial.print(raw.XAxis); + Serial.print(" "); + Serial.print(raw.YAxis); + Serial.print(" "); + Serial.print(raw.ZAxis); + Serial.print(" \tScaled:\t"); + + Serial.print(scaled.XAxis); + Serial.print(" "); + Serial.print(scaled.YAxis); + Serial.print(" "); + Serial.print(scaled.ZAxis); + + Serial.print(headingDegrees); + Serial.println(" Degrees \t"); +} diff --git a/I2CLCD/I2CLCD.ino b/I2CLCD/I2CLCD.ino new file mode 100644 index 0000000..bf26db0 --- /dev/null +++ b/I2CLCD/I2CLCD.ino @@ -0,0 +1,38 @@ +#include +#include + +// Set the LCD address to 0x27 for a 16 chars and 2 line display +LiquidCrystal_I2C lcd(0x3F, 20, 4); + +void setup() +{ + // initialize the LCD + lcd.begin(); + + // Turn on the blacklight and print a message. + char b[4][20] = {{"Hallo "},{"Arduino A"},{"Liquid B"},{"Crystal "}}; + print(b); + delay(1000); +} + +void loop() +{ + +} + +void print(char a[4][20]) { + //cange row 2 & 3 + for(int i = 0; i < 20; i++) { + int j = a[1][i]; + a[1][i] = a[2][i]; + a[2][i] = j; + } + + lcd.clear(); + lcd.blink(); + lcd.setCursor(0,0); + delay(2000); + lcd.print(a[0]); + lcd.noBlink(); +} + diff --git a/KBTroll/KBTroll.ino b/KBTroll/KBTroll.ino new file mode 100644 index 0000000..c17c5f2 --- /dev/null +++ b/KBTroll/KBTroll.ino @@ -0,0 +1,59 @@ +#include "DigiKeyboard.h" +#include +//https://github.com/digistump/DigisparkArduinoIntegration/blob/master/libraries/DigisparkKeyboard/DigiKeyboard.h + +//#define LED_BUILTIN 1 +#define address 0 + +struct SK { + public: + char mod = 0; + char key = 0; + SK(char a, char b) : mod(a), key(b) {} + SK() {} +}; + +const int arr_size = 14; +const SK strokes[] = { + {0, 0}, //ESC + {MOD_CONTROL_LEFT, KEY_T}, //NEW TAB + {0, KEY_ENTER}, //ENTER + //{MOD_SHIFT_LEFT, KEY_TABULATOR}, //SHIFT TABULATOR + {MOD_CONTROL_LEFT | MOD_ALT_LEFT, KEY_ARROW_LEFT}, //ROTATE SCREEN + {0, KEY_F1}, // OPEN HELP + {MOD_GUI_LEFT, 0x52}, //CLIP WINDOW RIGHT + {MOD_GUI_LEFT, KEY_2}, //OPEN TASK PROGRAM 2 + //{0, KEY_TABULATOR}, //TABULATOR + {MOD_GUI_LEFT, KEY_L}, //LOG OUT + {MOD_GUI_LEFT, KEY_M}, //MINIMIZE ALL + //{MOD_CONTROL_LEFT | MOD_ALT_LEFT, KEY_DELTE}, //OPEN TASK MANAGER + {MOD_CONTROL_LEFT, KEY_W}, //CLOSE TAB + {MOD_GUI_LEFT, KEY_ARROW_LEFT}, //CLIP WINDOW LEFT + {MOD_CONTROL_LEFT | MOD_SHIFT_LEFT, KEY_T}, // RESTORE TAB + {MOD_GUI_LEFT, KEY_D}, //SHOW DESKTOP + {MOD_GUI_LEFT, KEY_1}, //OPEN TASK PROGRAM 1 + //{0, KEY_CAPS}, // CPAS + //{0, KEY_NUM_LOCK} //NUMLOCK +}; + +void setup() { + randomSeed(EEPROM.read(address)); +} + +void randSK() { + SK stroke; + static int r = 0; + if(r++ == arr_size) { + stroke = {0, random(4, 40)};//random char + r = 0; + } else { + stroke = strokes[r]; + } + DigiKeyboard.sendKeyStroke(stroke.key, stroke.mod); +} + +void loop() { + randSK(); + EEPROM.write(address, random(256)); + DigiKeyboard.delay(random(7, 18) * 60000);//RANDOM Delay +} diff --git a/LaserClock/LaserClock.ino b/LaserClock/LaserClock.ino new file mode 100644 index 0000000..b130a97 --- /dev/null +++ b/LaserClock/LaserClock.ino @@ -0,0 +1,115 @@ + +#define pressed digitalRead(12) == LOW + +const unsigned char H[] = {8,9,10,11}; +const unsigned char M[] = {2,3,4,5,6,7}; + +//const unsigned int mindelay = 60000; +const unsigned int mindelay = 59500; + +unsigned char min = 0; +unsigned char hour = 0; + +unsigned long lastmin; + +#define nolog + +void write(unsigned char m = 255, unsigned char h = 255) { + //write minutes + for(unsigned char i = 0; i < 6; i++) { + analogWrite(M[i], (m & (1 << i)) ? 255 : 1); + } + + for(unsigned char i = 0; i < 4; i++) { + analogWrite(H[i], (h & (1 << i)) ? 255 : 4); + } + #ifndef nolog + Serial.print(hour); + Serial.print(":"); + Serial.println(min); + #endif +} + +void countTime() { + if(60 == ++min) { + min = 0; + if(13 == ++hour) { + hour = 0; + } + } +} + +void setup() { + pinMode(13, OUTPUT); + #ifndef nolog + Serial.begin(9600); + #endif + //Setup pins + for(unsigned char m = 0; m < 6; m++) { + pinMode(M[m], OUTPUT); + } + for(unsigned char h = 0; h < 4; h++) { + pinMode(H[h], OUTPUT); + } + pinMode(12, INPUT_PULLUP); + write(); + while(!pressed) delay(5); + + //setup time + char mode = 0; + bool pres = false; + unsigned long timeout = millis(); + while(mode < 2) { + if(pressed) {//button is pressed + if(!pres) {//button was not pressed before + timeout = millis(); + pres = true; + if(mode == 0) { + hour ++; + if(hour == 13) + hour = 1; + } else { + min ++; + if(min == 60) + min = 0; + } + write(min, hour); + } + } else { + pres = false; + } + if(millis() - timeout > 10000) { + for(int i = 0; i < 6; i++) { + write(0,0); + delay(300); + write(); + delay(300); + } + write(min, hour); + ++mode; + timeout = millis(); + } + delay(50); + } + lastmin = millis(); +} + +void loop() { + if((millis() - lastmin) >= mindelay) { + //update min + countTime(); + write(min, hour); + lastmin += mindelay; + } else { + #ifndef nolog + Serial.print(millis()-lastmin); + Serial.print(" "); + Serial.println(millis()-lastmin >= mindelay); + #endif + } + if(millis()/1000 % 2 == 0) { + digitalWrite(13, HIGH); + } else + digitalWrite(13, LOW); + delay(50); +} diff --git a/LaserDraw/LaserDraw.ino b/LaserDraw/LaserDraw.ino new file mode 100644 index 0000000..ebaec54 --- /dev/null +++ b/LaserDraw/LaserDraw.ino @@ -0,0 +1,49 @@ +#include + +#define MOTOR_X 6 +#define MOTOR_Y 7 +#define LASER 13 + +Servo servx; +Servo servy; + +float hightdef = 18; +float delaymod = 180; + +struct MoveCmd { + int x; + int y; + int del() { + return (sqrt((x*x) + (y*y)))/delaymod; + } + MoveCmd(int x , y, del) : x(x), y(y), del(del) {} + MoveCmd() {} +}; + +struct Letter { + MoveCmd part[]; + int size; + Letter(MoveCmd[] mc, int size) : part(mc), size(size) {} +}; + +const Letter letters[] = { + {{30, 100, 25}, {60, 0, 25}}, //a + {}, //b + {} //c +} + +void setup() { + Serial.begin(9600); + servx(MOTOR_X); + servy(MOTOR_Y); +} + +void printLetter(int xoffeset, Letter l) { + +} + + +void loop() { + //reset motor + +} diff --git a/nudelmaschine/main/main.ino b/nudelmaschine/main/main.ino new file mode 100644 index 0000000..375469b --- /dev/null +++ b/nudelmaschine/main/main.ino @@ -0,0 +1,50 @@ +#include + +LiquidCrystal_I2C lcd(0x3F,20,4); + +void setup() { + pinMode(2, OUTPUT); + pinMode(3, INPUT_PULLUP); + + digitalWrite(2, LOW); + + lcd.init(); // initialize the lcd + // Print a message to the LCD. + lcd.backlight(); + lcd.setCursor(6,0); + lcd.print("Auto Cooker"); + lcd.setCursor(1,1); + lcd.print("By Yannis Gerlach"); + + delay(1000); + + updateLCD(); +} + +bool heating = false; +void updateLCD() { + lcd.clear(); + lcd.clear(); + lcd.setCursor(0,0); + lcd.print("Heater:"); + lcd.setCursor(15,0); + lcd.print(heating ? "ON" : "OFF"); +} + +bool presed = false; +void loop() { + delay(25); + if(digitalRead(3) == LOW) { + if(!presed) { + presed = true; + //toggle + + heating = !heating; + digitalWrite(2, heating); + digitalWrite(13, heating); + updateLCD(); + } + } else { + presed = false; + } +} diff --git a/timer/timer.ino b/timer/timer.ino new file mode 100644 index 0000000..628cdf8 --- /dev/null +++ b/timer/timer.ino @@ -0,0 +1,15 @@ + +void setup() { + pinMode(13, OUTPUT); + pinMode(130, OUTPUT); +} + +// the loop function runs over and over again forever +void loop() { + digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) + digitalWrite(10, HIGH); // turn the LED on (HIGH is the voltage level) + delay(100); // wait for a second + digitalWrite(13, LOW); // turn the LED off by making the voltage LOW + digitalWrite(10, LOW); + delay(900); // wait for a second +}