diff --git a/lib/adxl345/adxl345.py b/lib/adxl345/adxl345.py
new file mode 100644
index 0000000..1a7b076
--- /dev/null
+++ b/lib/adxl345/adxl345.py
@@ -0,0 +1,102 @@
+### This is an I2C driver for the Adafruit ADXL345 Accelerometer.
+### Made by Joachim Kristensen 2017, https://www.hackster.io/lokefar
+### Git: https://github.com/lokefar
+### Inspired by https://github.com/pimoroni/adxl345-python
+### At the moment it is possible to set the data range going from 2G to 16G
+### Optimizations that could be done:
+### - Write the binaries for the other output data rates
+### - Write a calibration part
+### - Make it possible to call the initiate the changes to data range and
+### bandwidth from main program
+
+### Code do use in main.py
+### import adxl345
+### data = adxl345.ADXL345(i2c)
+### axes = data.getAxes(True)  <-- If you want in G, else False for acc
+
+
+
+#The address of the ADXL345 given in the datasheet
+ADXL345_ADDR = 0x53
+
+
+#The bytes for making the ADXL345 send at 100Hz output data rate
+BW_RATE_100HZ = 0x0B
+
+#The address for making changes to POWER_CTL
+POWER_CTL = 0x2D 
+#The byte "code" for starting the measurements
+MEASURE = 0x08
+
+#The address for changing the DATA_FORMAT. This is used together with the ranges
+DATA_FORMAT = 0x31
+
+#The address where the measurement data starts from. Each axis has two bytes for the given value
+AXES_DATA = 0x32
+
+#The address for accessing and setting the bandwidth rate
+BW_RATE = 0x2C
+
+#Decide the range of measurements ie the precision. Possible options
+#2G
+RANGE_2G = 0x08
+#4G
+RANGE_4G = 0x09
+#8G
+RANGE_8G = 0x0A
+#16G
+RANGE_16G = 0x0F
+
+SCALE_MULTIPLIER = 0.004
+
+#Standard gravity constant for going from G-force to m/s^2
+EARTH_GRAVITY_MS2 = 9.80665
+
+
+
+class ADXL345:
+
+	def __init__(self, i2c):
+		self.i2c = i2c
+		self.addr = ADXL345_ADDR
+		self.setBandwidthRate(BW_RATE_100HZ)
+		self.setRange(RANGE_2G)
+		self.enableMeasurement()
+
+	def enableMeasurement(self):
+		self.i2c.writeto_mem(self.addr, POWER_CTL, bytes([MEASURE]))
+		
+	def setBandwidthRate(self, rate_flag):
+		self.i2c.writeto_mem(self.addr, BW_RATE, bytes([rate_flag]))
+
+	def setRange(self, range_flag):
+		self.i2c.writeto_mem(self.addr, DATA_FORMAT, bytes([range_flag]))
+
+	def getAxes(self, gforce = False):
+		bytes = self.i2c.readfrom_mem(self.addr, AXES_DATA, 6)
+		x = bytes[0] | (bytes[1] << 8)
+		if(x & (1 << 16 - 1)):
+			x = x - (1<<16)
+
+		y = bytes[2] | (bytes[3] << 8)
+		if(y & (1 << 16 - 1)):
+			y = y - (1<<16)
+
+		z = bytes[4] | (bytes[5] << 8 )
+		if(z & (1 << 16 - 1)):
+			z = z - (1<<16)
+
+		x = x * SCALE_MULTIPLIER
+		y = y * SCALE_MULTIPLIER
+		z = z * SCALE_MULTIPLIER
+
+		if gforce == False: 
+			x = x * EARTH_GRAVITY_MS2
+			y = y * EARTH_GRAVITY_MS2
+			z = z * EARTH_GRAVITY_MS2
+
+		x = round(x,4)
+		y = round(y,4)
+		z = round(z,4)
+
+		return {"x": x, "y": y, "z": z}
\ No newline at end of file
diff --git a/lib/serial7segment/serial7segment.py b/lib/serial7segment/serial7segment.py
new file mode 100644
index 0000000..c113e80
--- /dev/null
+++ b/lib/serial7segment/serial7segment.py
@@ -0,0 +1,111 @@
+### Library for using Sparkfun Serial 7-Segment ###
+### Made by Joachim Kristensen 2017, https://www.hackster.io/lokefar
+### Git: https://github.com/lokefar
+### using the Sparkfun Tutorial for reference/beginning
+### https://learn.sparkfun.com/tutorials/using-the-serial-7-segment-display#example-1-serial-uart ###
+### Special commands: https://github.com/sparkfun/Serial7SegmentDisplay/wiki/Special-Commands ###
+
+### Suggestion for improvement:
+### - Change decimal actions to be controlled via a bitwise operator so it is possible to have both
+### colon, decimal points and apostrophe on at the same time
+
+
+### Code to use in main.py
+### import serial7segment
+### serial7segment.SERIAL7SEGMENT(uart, 'clearDisplay') <-- I recommend to clearDisplay before writing new stuff
+### serial7segment.SERIAL7SEGMENT(uart, '1234') <-- Most basic
+### serial7segment.SERIAL7SEGMENT(uart, '1234', 5, 1, 50) <-- turns on the colon, moves the cursor places to 1 (string starts at 2)
+### and sets the brightness at half (brightness is at the moment inverse, so 1 is brightest and 100 is darkest)
+
+
+#Clear display
+CLEAR_DISPLAY = 0x76
+
+#Decimal control
+DECIMAL_CONTROL = 0x77
+
+#Cursor control
+CURSOR_CONTROL = 0x79
+
+#Brightness control
+BRIGHTNESS = 0x7A
+
+#Digit 1 control
+DIGIT_1 = 0x00
+
+#Digit 2 control
+DIGIT_2 = 0x01
+
+#Digit 3 control
+DIGIT_3 = 0x02
+
+#Digit 4 control
+DIGIT_4 = 0x03
+
+#Baud rate config
+BAUD_RATE = 0x7F
+
+#Decimal point place
+#Place 1
+DECIMAL_1 = 0x1 
+
+#Place 2
+DECIMAL_2 = 0x2
+
+#Place 3
+DECIMAL_3 = 0x4
+
+#Place 4
+DECIMAL_4 = 0x8
+
+#Colon
+DECIMAL_COLON = 0x10
+
+class SERIAL7SEGMENT:
+	def __init__(self, uart, text, decimal=None, offset=None, pwm=None):
+		self.uart = uart
+		self.text = text
+		self.decimal = decimal
+		self.offset = offset
+		self.pwm = pwm
+		if self.text == 'clearDisplay':
+			self.clearDisplay(self.text)
+		else:
+			self.decimalPoint(self.decimal)
+			self.offsetCursor(self.offset)
+			self.writeNumber(self.text)
+
+	def clearDisplay(self, text):
+		self.uart.write(bytes([CLEAR_DISPLAY]))
+		self.uart.write(bytes([DECIMAL_CONTROL, 0x0]))
+
+	def decimalPoint(self, decimal):
+		if decimal == 1:
+			self.uart.write(bytes([DECIMAL_CONTROL, DECIMAL_1]))
+		elif decimal == 2:
+			self.uart.write(bytes([DECIMAL_CONTROL, DECIMAL_2]))
+		elif decimal == 3:
+			self.uart.write(bytes([DECIMAL_CONTROL, DECIMAL_3]))
+		elif decimal == 4:
+			self.uart.write(bytes([DECIMAL_CONTROL, DECIMAL_4]))
+		elif decimal == 5:
+			self.uart.write(bytes([DECIMAL_CONTROL, DECIMAL_COLON]))
+
+	def offsetCursor(self, offset):
+		if offset == 1:
+			self.uart.write(bytes([CURSOR_CONTROL, DIGIT_1]))
+		elif offset == 2:
+			self.uart.write(bytes([CURSOR_CONTROL, DIGIT_2]))
+		elif offset == 3:
+			self.uart.write(bytes([CURSOR_CONTROL, DIGIT_3]))
+		elif offset == 4:
+			self.uart.write(bytes([CURSOR_CONTROL, DIGIT_4]))
+	
+	def pwmPower(self, pwm):
+		if pwm != None:
+			self.uart.write(bytes([BRIGHTNESS, DIGIT_4]))
+
+	def writeNumber(self, text):
+		self.uart.write(text)
+		return self.text
+
diff --git a/lib/textstar/textstar.py b/lib/textstar/textstar.py
new file mode 100644
index 0000000..8ce89e1
--- /dev/null
+++ b/lib/textstar/textstar.py
@@ -0,0 +1,28 @@
+### Textstar display ###
+### Inspired by http://jeremyblythe.blogspot.dk/2012/07/raspberry-pi-with-textstar-serial-lcd.html ###
+### Made by Joachim Kristensen 2017, https://www.hackster.io/lokefar
+### Git: https://github.com/lokefar
+### Ideas for optimization:
+### - Set cursor starting point
+### - Make graphs/special characters
+
+### Code to use in main program
+### import textstar
+### textstar.TEXTSTAR(uart, 'clearDisplay') <-- I recommend always clearing before writing new string
+### textstar.TEXTSTAR(uart, 'MyString')
+
+#Adresse for clearing display
+CLEARDISPLAY = chr(12)
+
+
+class TEXTSTAR:
+	def __init__(self, uart, text):
+		self.uart = uart
+		self.text = text
+		if self.text == 'clearDisplay':
+			self.uart.write(CLEARDISPLAY)
+		else:
+			self.writeText(self.text)
+
+	def writeText(self, text):
+		self.uart.write(text)
\ No newline at end of file