This commit is contained in:
MrBesen 2018-10-28 20:10:19 +01:00
commit 76509536a3
8 changed files with 422 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
libraries/

95
Comptest/Comptest.ino Normal file
View File

@ -0,0 +1,95 @@
// Reference the I2C Library
#include <Wire.h>
// Reference the HMC5883L Compass Library
#include <HMC5883L.h>
// 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");
}

38
I2CLCD/I2CLCD.ino Normal file
View File

@ -0,0 +1,38 @@
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// 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();
}

59
KBTroll/KBTroll.ino Normal file
View File

@ -0,0 +1,59 @@
#include "DigiKeyboard.h"
#include <EEPROM.h>
//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
}

115
LaserClock/LaserClock.ino Normal file
View File

@ -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);
}

49
LaserDraw/LaserDraw.ino Normal file
View File

@ -0,0 +1,49 @@
#include <Servo.h>
#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
}

View File

@ -0,0 +1,50 @@
#include <LiquidCrystal_I2C.h>
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;
}
}

15
timer/timer.ino Normal file
View File

@ -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
}