@ -0,0 +1,504 @@ | |||||
/************************************************************************** | |||||
This is an example for our Monochrome OLEDs based on SSD1306 drivers | |||||
Pick one up today in the adafruit shop! | |||||
------> http://www.adafruit.com/category/63_98 | |||||
This example is for a 128x32 pixel display using I2C to communicate | |||||
3 pins are required to interface (two I2C and one reset). | |||||
Adafruit invests time and resources providing this open | |||||
source code, please support Adafruit and open-source | |||||
hardware by purchasing products from Adafruit! | |||||
Written by Limor Fried/Ladyada for Adafruit Industries, | |||||
with contributions from the open source community. | |||||
BSD license, check license.txt for more information | |||||
All text above, and the splash screen below must be | |||||
included in any redistribution. | |||||
**************************************************************************/ | |||||
#include <SPI.h> | |||||
#include <Wire.h> | |||||
#include <Adafruit_GFX.h> | |||||
#include <Adafruit_SSD1306.h> | |||||
#define SCREEN_WIDTH 128 // OLED display width, in pixels | |||||
#define SCREEN_HEIGHT 32 // OLED display height, in pixels | |||||
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) | |||||
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin) | |||||
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); | |||||
#define NUMFLAKES 10 // Number of snowflakes in the animation example | |||||
#define LOGO_HEIGHT 16 | |||||
#define LOGO_WIDTH 16 | |||||
static const unsigned char PROGMEM logo_bmp[] = | |||||
{ B00000000, B11000000, | |||||
B00000001, B11000000, | |||||
B00000001, B11000000, | |||||
B00000011, B11100000, | |||||
B11110011, B11100000, | |||||
B11111110, B11111000, | |||||
B01111110, B11111111, | |||||
B00110011, B10011111, | |||||
B00011111, B11111100, | |||||
B00001101, B01110000, | |||||
B00011011, B10100000, | |||||
B00111111, B11100000, | |||||
B00111111, B11110000, | |||||
B01111100, B11110000, | |||||
B01110000, B01110000, | |||||
B00000000, B00110000 }; | |||||
void setup() { | |||||
Serial.begin(9600); | |||||
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally | |||||
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x32 | |||||
Serial.println(F("SSD1306 allocation failed")); | |||||
for(;;); // Don't proceed, loop forever | |||||
} | |||||
// Show initial display buffer contents on the screen -- | |||||
// the library initializes this with an Adafruit splash screen. | |||||
display.display(); | |||||
delay(2000); // Pause for 2 seconds | |||||
// Clear the buffer | |||||
display.clearDisplay(); | |||||
// Draw a single pixel in white | |||||
display.drawPixel(10, 10, SSD1306_WHITE); | |||||
// Show the display buffer on the screen. You MUST call display() after | |||||
// drawing commands to make them visible on screen! | |||||
display.display(); | |||||
delay(2000); | |||||
// display.display() is NOT necessary after every single drawing command, | |||||
// unless that's what you want...rather, you can batch up a bunch of | |||||
// drawing operations and then update the screen all at once by calling | |||||
// display.display(). These examples demonstrate both approaches... | |||||
/*testdrawline(); // Draw many lines | |||||
testdrawrect(); // Draw rectangles (outlines) | |||||
testfillrect(); // Draw rectangles (filled) | |||||
testdrawcircle(); // Draw circles (outlines) | |||||
testfillcircle(); // Draw circles (filled) | |||||
testdrawroundrect(); // Draw rounded rectangles (outlines) | |||||
testfillroundrect(); // Draw rounded rectangles (filled) | |||||
testdrawtriangle(); // Draw triangles (outlines) | |||||
testfilltriangle(); // Draw triangles (filled) | |||||
testdrawchar(); // Draw characters of the default font | |||||
testdrawstyles(); // Draw 'stylized' characters | |||||
testscrolltext(); // Draw scrolling text | |||||
testdrawbitmap(); // Draw a small bitmap image | |||||
// Invert and restore display, pausing in-between | |||||
display.invertDisplay(true); | |||||
delay(1000); | |||||
display.invertDisplay(false); | |||||
delay(1000);*/ | |||||
//testanimate(logo_bmp, LOGO_WIDTH, LOGO_HEIGHT); // Animate bitmaps | |||||
} | |||||
void loop() { | |||||
testdrawchar2(); // Draw scrolling text | |||||
delay(2000); | |||||
while(1){ | |||||
display.clearDisplay(); | |||||
testdrawchar3(); // Draw scrolling text | |||||
} | |||||
} | |||||
double GetTemp(void) | |||||
{ | |||||
unsigned int wADC; | |||||
double t; | |||||
// The internal temperature has to be used | |||||
// with the internal reference of 1.1V. | |||||
// Channel 8 can not be selected with | |||||
// the analogRead function yet. | |||||
// Set the internal reference and mux. | |||||
ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3)); | |||||
ADCSRA |= _BV(ADEN); // enable the ADC | |||||
delay(20); // wait for voltages to become stable. | |||||
ADCSRA |= _BV(ADSC); // Start the ADC | |||||
// Detect end-of-conversion | |||||
while (bit_is_set(ADCSRA,ADSC)); | |||||
// Reading register "ADCW" takes care of how to read ADCL and ADCH. | |||||
wADC = ADCW; | |||||
// The offset of 324.31 could be wrong. It is just an indication. | |||||
t = (wADC - 324.31 ) / 1.22; | |||||
// The returned temperature is in degrees Celsius. | |||||
return (t); | |||||
} | |||||
void testdrawline() { | |||||
int16_t i; | |||||
display.clearDisplay(); // Clear display buffer | |||||
for(i=0; i<display.width(); i+=4) { | |||||
display.drawLine(0, 0, i, display.height()-1, SSD1306_WHITE); | |||||
display.display(); // Update screen with each newly-drawn line | |||||
delay(1); | |||||
} | |||||
for(i=0; i<display.height(); i+=4) { | |||||
display.drawLine(0, 0, display.width()-1, i, SSD1306_WHITE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
delay(250); | |||||
display.clearDisplay(); | |||||
for(i=0; i<display.width(); i+=4) { | |||||
display.drawLine(0, display.height()-1, i, 0, SSD1306_WHITE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
for(i=display.height()-1; i>=0; i-=4) { | |||||
display.drawLine(0, display.height()-1, display.width()-1, i, SSD1306_WHITE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
delay(250); | |||||
display.clearDisplay(); | |||||
for(i=display.width()-1; i>=0; i-=4) { | |||||
display.drawLine(display.width()-1, display.height()-1, i, 0, SSD1306_WHITE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
for(i=display.height()-1; i>=0; i-=4) { | |||||
display.drawLine(display.width()-1, display.height()-1, 0, i, SSD1306_WHITE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
delay(250); | |||||
display.clearDisplay(); | |||||
for(i=0; i<display.height(); i+=4) { | |||||
display.drawLine(display.width()-1, 0, 0, i, SSD1306_WHITE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
for(i=0; i<display.width(); i+=4) { | |||||
display.drawLine(display.width()-1, 0, i, display.height()-1, SSD1306_WHITE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
delay(2000); // Pause for 2 seconds | |||||
} | |||||
void testdrawrect(void) { | |||||
display.clearDisplay(); | |||||
for(int16_t i=0; i<display.height()/2; i+=2) { | |||||
display.drawRect(i, i, display.width()-2*i, display.height()-2*i, SSD1306_WHITE); | |||||
display.display(); // Update screen with each newly-drawn rectangle | |||||
delay(1); | |||||
} | |||||
delay(2000); | |||||
} | |||||
void testfillrect(void) { | |||||
display.clearDisplay(); | |||||
for(int16_t i=0; i<display.height()/2; i+=3) { | |||||
// The INVERSE color is used so rectangles alternate white/black | |||||
display.fillRect(i, i, display.width()-i*2, display.height()-i*2, SSD1306_INVERSE); | |||||
display.display(); // Update screen with each newly-drawn rectangle | |||||
delay(1); | |||||
} | |||||
delay(2000); | |||||
} | |||||
void testdrawcircle(void) { | |||||
display.clearDisplay(); | |||||
for(int16_t i=0; i<max(display.width(),display.height())/2; i+=2) { | |||||
display.drawCircle(display.width()/2, display.height()/2, i, SSD1306_WHITE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
delay(2000); | |||||
} | |||||
void testfillcircle(void) { | |||||
display.clearDisplay(); | |||||
for(int16_t i=max(display.width(),display.height())/2; i>0; i-=3) { | |||||
// The INVERSE color is used so circles alternate white/black | |||||
display.fillCircle(display.width() / 2, display.height() / 2, i, SSD1306_INVERSE); | |||||
display.display(); // Update screen with each newly-drawn circle | |||||
delay(1); | |||||
} | |||||
delay(2000); | |||||
} | |||||
void testdrawroundrect(void) { | |||||
display.clearDisplay(); | |||||
for(int16_t i=0; i<display.height()/2-2; i+=2) { | |||||
display.drawRoundRect(i, i, display.width()-2*i, display.height()-2*i, | |||||
display.height()/4, SSD1306_WHITE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
delay(2000); | |||||
} | |||||
void testfillroundrect(void) { | |||||
display.clearDisplay(); | |||||
for(int16_t i=0; i<display.height()/2-2; i+=2) { | |||||
// The INVERSE color is used so round-rects alternate white/black | |||||
display.fillRoundRect(i, i, display.width()-2*i, display.height()-2*i, | |||||
display.height()/4, SSD1306_INVERSE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
delay(2000); | |||||
} | |||||
void testdrawtriangle(void) { | |||||
display.clearDisplay(); | |||||
for(int16_t i=0; i<max(display.width(),display.height())/2; i+=5) { | |||||
display.drawTriangle( | |||||
display.width()/2 , display.height()/2-i, | |||||
display.width()/2-i, display.height()/2+i, | |||||
display.width()/2+i, display.height()/2+i, SSD1306_WHITE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
delay(2000); | |||||
} | |||||
void testfilltriangle(void) { | |||||
display.clearDisplay(); | |||||
for(int16_t i=max(display.width(),display.height())/2; i>0; i-=5) { | |||||
// The INVERSE color is used so triangles alternate white/black | |||||
display.fillTriangle( | |||||
display.width()/2 , display.height()/2-i, | |||||
display.width()/2-i, display.height()/2+i, | |||||
display.width()/2+i, display.height()/2+i, SSD1306_INVERSE); | |||||
display.display(); | |||||
delay(1); | |||||
} | |||||
delay(2000); | |||||
} | |||||
void testdrawchar(void) { | |||||
display.clearDisplay(); | |||||
display.setTextSize(1); // Normal 1:1 pixel scale | |||||
display.setTextColor(SSD1306_WHITE); // Draw white text | |||||
display.setCursor(0, 0); // Start at top-left corner | |||||
display.cp437(true); // Use full 256 char 'Code Page 437' font | |||||
// Not all the characters will fit on the display. This is normal. | |||||
// Library will draw what it can and the rest will be clipped. | |||||
for(int16_t i=0; i<256; i++) { | |||||
if(i == '\n') display.write(' '); | |||||
else display.write(i); | |||||
} | |||||
display.display(); | |||||
delay(2000); | |||||
} | |||||
void testdrawchar2(void) { | |||||
display.clearDisplay(); | |||||
display.setTextSize(1); // Normal 1:1 pixel scale | |||||
display.setTextColor(SSD1306_WHITE); // Draw white text | |||||
display.setCursor(0, 0); // Start at top-left corner | |||||
display.cp437(true); // Use full 256 char 'Code Page 437' font | |||||
display.println(F(" Steak Electronics")); | |||||
display.display(); | |||||
delay(2000); | |||||
} | |||||
void testdrawchar3(void) { | |||||
display.clearDisplay(); | |||||
display.setTextSize(1); // Normal 1:1 pixel scale | |||||
display.setTextColor(SSD1306_WHITE); // Draw white text | |||||
display.setCursor(0, 10); // Start at top-left corner | |||||
display.cp437(true); // Use full 256 char 'Code Page 437' font | |||||
display.print("Temp: "); | |||||
display.println(GetTemp(),1); | |||||
display.display(); | |||||
delay(200); | |||||
} | |||||
void testdrawstyles(void) { | |||||
display.clearDisplay(); | |||||
display.setTextSize(1); // Normal 1:1 pixel scale | |||||
display.setTextColor(SSD1306_WHITE); // Draw white text | |||||
display.setCursor(0,0); // Start at top-left corner | |||||
display.println(F("Hello, world!")); | |||||
display.setTextColor(SSD1306_BLACK, SSD1306_WHITE); // Draw 'inverse' text | |||||
display.println(3.141592); | |||||
display.setTextSize(2); // Draw 2X-scale text | |||||
display.setTextColor(SSD1306_WHITE); | |||||
display.print(F("0x")); display.println(0xDEADBEEF, HEX); | |||||
display.display(); | |||||
delay(2000); | |||||
} | |||||
void testscrolltext(void) { | |||||
display.clearDisplay(); | |||||
display.setTextSize(2); // Draw 2X-scale text | |||||
display.setTextColor(SSD1306_WHITE); | |||||
display.setCursor(10, 0); | |||||
display.println(F("scroll")); | |||||
display.display(); // Show initial text | |||||
delay(100); | |||||
// Scroll in various directions, pausing in-between: | |||||
display.startscrollright(0x00, 0x0F); | |||||
delay(2000); | |||||
display.stopscroll(); | |||||
delay(1000); | |||||
display.startscrollleft(0x00, 0x0F); | |||||
delay(2000); | |||||
display.stopscroll(); | |||||
delay(1000); | |||||
display.startscrolldiagright(0x00, 0x07); | |||||
delay(2000); | |||||
display.startscrolldiagleft(0x00, 0x07); | |||||
delay(2000); | |||||
display.stopscroll(); | |||||
delay(1000); | |||||
} | |||||
void testscrolltext2(void) { | |||||
display.clearDisplay(); | |||||
display.setTextSize(2); // Draw 2X-scale text | |||||
display.setTextColor(SSD1306_WHITE); | |||||
display.setCursor(10, 0); | |||||
display.println(F("5318008")); | |||||
display.display(); // Show initial text | |||||
delay(100); | |||||
// Scroll in various directions, pausing in-between: | |||||
display.startscrollright(0x00, 0x0F); | |||||
delay(2000); | |||||
display.stopscroll(); | |||||
delay(1000); | |||||
display.startscrollleft(0x00, 0x0F); | |||||
delay(2000); | |||||
display.stopscroll(); | |||||
delay(1000); | |||||
display.startscrolldiagright(0x00, 0x07); | |||||
delay(2000); | |||||
display.startscrolldiagleft(0x00, 0x07); | |||||
delay(2000); | |||||
display.stopscroll(); | |||||
delay(1000); | |||||
} | |||||
void testdrawbitmap(void) { | |||||
display.clearDisplay(); | |||||
display.drawBitmap( | |||||
(display.width() - LOGO_WIDTH ) / 2, | |||||
(display.height() - LOGO_HEIGHT) / 2, | |||||
logo_bmp, LOGO_WIDTH, LOGO_HEIGHT, 1); | |||||
display.display(); | |||||
delay(1000); | |||||
} | |||||
#define XPOS 0 // Indexes into the 'icons' array in function below | |||||
#define YPOS 1 | |||||
#define DELTAY 2 | |||||
void testanimate(const uint8_t *bitmap, uint8_t w, uint8_t h) { | |||||
int8_t f, icons[NUMFLAKES][3]; | |||||
// Initialize 'snowflake' positions | |||||
for(f=0; f< NUMFLAKES; f++) { | |||||
icons[f][XPOS] = random(1 - LOGO_WIDTH, display.width()); | |||||
icons[f][YPOS] = -LOGO_HEIGHT; | |||||
icons[f][DELTAY] = random(1, 6); | |||||
Serial.print(F("x: ")); | |||||
Serial.print(icons[f][XPOS], DEC); | |||||
Serial.print(F(" y: ")); | |||||
Serial.print(icons[f][YPOS], DEC); | |||||
Serial.print(F(" dy: ")); | |||||
Serial.println(icons[f][DELTAY], DEC); | |||||
} | |||||
for(;;) { // Loop forever... | |||||
display.clearDisplay(); // Clear the display buffer | |||||
// Draw each snowflake: | |||||
for(f=0; f< NUMFLAKES; f++) { | |||||
display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, SSD1306_WHITE); | |||||
} | |||||
display.display(); // Show the display buffer on the screen | |||||
delay(200); // Pause for 1/10 second | |||||
// Then update coordinates of each flake... | |||||
for(f=0; f< NUMFLAKES; f++) { | |||||
icons[f][YPOS] += icons[f][DELTAY]; | |||||
// If snowflake is off the bottom of the screen... | |||||
if (icons[f][YPOS] >= display.height()) { | |||||
// Reinitialize to a random position, just off the top | |||||
icons[f][XPOS] = random(1 - LOGO_WIDTH, display.width()); | |||||
icons[f][YPOS] = -LOGO_HEIGHT; | |||||
icons[f][DELTAY] = random(1, 6); | |||||
} | |||||
} | |||||
} | |||||
} |
@ -0,0 +1,4 @@ | |||||
\relax | |||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Overview}{1}} | |||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Work Log}{1}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}I2C OLED display}{1}} |
@ -0,0 +1,70 @@ | |||||
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=pdflatex 2019.8.17) 28 OCT 2019 00:53 | |||||
entering extended mode | |||||
restricted \write18 enabled. | |||||
%&-line parsing enabled. | |||||
**/home/layoutdev/Desktop/code/documentation_general/Electronics_Projects_2019/ | |||||
Car_Stereo_Replacement/docs/1.tex | |||||
(/home/layoutdev/Desktop/code/documentation_general/Electronics_Projects_2019/C | |||||
ar_Stereo_Replacement/docs/1.tex | |||||
LaTeX2e <2017/01/01> patch level 3 | |||||
Babel <3.9r> and hyphenation patterns for 3 language(s) loaded. | |||||
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls | |||||
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class | |||||
(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo | |||||
File: size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option) | |||||
) | |||||
\c@part=\count79 | |||||
\c@section=\count80 | |||||
\c@subsection=\count81 | |||||
\c@subsubsection=\count82 | |||||
\c@paragraph=\count83 | |||||
\c@subparagraph=\count84 | |||||
\c@figure=\count85 | |||||
\c@table=\count86 | |||||
\abovecaptionskip=\skip41 | |||||
\belowcaptionskip=\skip42 | |||||
\bibindent=\dimen102 | |||||
) (./1.aux) | |||||
\openout1 = `1.aux'. | |||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: External font `cmex10' loaded for size | |||||
(Font) <12> on input line 8. | |||||
LaTeX Font Info: External font `cmex10' loaded for size | |||||
(Font) <8> on input line 8. | |||||
LaTeX Font Info: External font `cmex10' loaded for size | |||||
(Font) <6> on input line 8. | |||||
[1 | |||||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./1.aux) ) | |||||
Here is how much of TeX's memory you used: | |||||
231 strings out of 494945 | |||||
2739 string characters out of 6181032 | |||||
48564 words of memory out of 5000000 | |||||
3601 multiletter control sequences out of 15000+600000 | |||||
8194 words of font info for 29 fonts, out of 8000000 for 9000 | |||||
14 hyphenation exceptions out of 8191 | |||||
21i,6n,19p,352b,187s stack positions out of 5000i,500n,10000p,200000b,80000s | |||||
</usr/share/tex | |||||
live/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texlive/t | |||||
exmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-di | |||||
st/fonts/type1/public/amsfonts/cm/cmr12.pfb> | |||||
Output written on 1.pdf (1 page, 43339 bytes). | |||||
PDF statistics: | |||||
20 PDF objects out of 1000 (max. 8388607) | |||||
13 compressed objects within 1 object stream | |||||
0 named destinations out of 1000 (max. 500000) | |||||
1 words of extra memory for PDF output out of 10000 (max. 10000000) | |||||
@ -0,0 +1,25 @@ | |||||
\documentclass[11pt]{article} | |||||
%Gummi|065|=) | |||||
\title{\textbf{Car Stereo Replacement}} | |||||
\author{Steak Electronics} | |||||
\date{10/27/19} | |||||
\begin{document} | |||||
\maketitle | |||||
\section{Overview} | |||||
Replacing a car stereo. | |||||
\section{Work Log} | |||||
\subsection{I2C OLED display} | |||||
Just for fun, I bought an I2C oled display and are going to use it to display something. Notes on this: | |||||
Using the adafruit SSD1306 and GFX library (this procedure is well covered in other places), you can load an example sketch and get it running. First thing to change is to remove the Adafruit logo and replace it with my own. Let's do that. | |||||
\end{document} |
@ -0,0 +1,21 @@ | |||||
\documentclass[11pt]{article} | |||||
%Gummi|065|=) | |||||
\title{\textbf{CCTV Fuse}} | |||||
\author{Steak Electronics} | |||||
\date{06/24/19} | |||||
\begin{document} | |||||
\maketitle | |||||
\section{History} | |||||
Recently I had a camera fail on me. I thought it was due to rain shorting out the camera but it was infact the wires shorting. However the damaged wires would not allow another camera to run. Fuses Needed! | |||||
\end{document} |
@ -0,0 +1,4 @@ | |||||
\relax | |||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Overview}{1}} | |||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Work Log}{1}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}I2C OLED display}{1}} |
@ -0,0 +1,78 @@ | |||||
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=pdflatex 2019.8.17) 28 OCT 2019 01:01 | |||||
entering extended mode | |||||
restricted \write18 enabled. | |||||
%&-line parsing enabled. | |||||
**/home/layoutdev/Desktop/code/documentation_general/Electronics_Projects_2019/ | |||||
Car_Stereo_Replacement/docs/2.tex | |||||
(/home/layoutdev/Desktop/code/documentation_general/Electronics_Projects_2019/C | |||||
ar_Stereo_Replacement/docs/2.tex | |||||
LaTeX2e <2017/01/01> patch level 3 | |||||
Babel <3.9r> and hyphenation patterns for 3 language(s) loaded. | |||||
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls | |||||
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class | |||||
(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo | |||||
File: size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option) | |||||
) | |||||
\c@part=\count79 | |||||
\c@section=\count80 | |||||
\c@subsection=\count81 | |||||
\c@subsubsection=\count82 | |||||
\c@paragraph=\count83 | |||||
\c@subparagraph=\count84 | |||||
\c@figure=\count85 | |||||
\c@table=\count86 | |||||
\abovecaptionskip=\skip41 | |||||
\belowcaptionskip=\skip42 | |||||
\bibindent=\dimen102 | |||||
) (./2.aux) | |||||
\openout1 = `2.aux'. | |||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: External font `cmex10' loaded for size | |||||
(Font) <12> on input line 8. | |||||
LaTeX Font Info: External font `cmex10' loaded for size | |||||
(Font) <8> on input line 8. | |||||
LaTeX Font Info: External font `cmex10' loaded for size | |||||
(Font) <6> on input line 8. | |||||
Overfull \hbox (559.79004pt too wide) in paragraph at lines 22--22 | |||||
[]\OT1/cmtt/m/n/10.95 I'm on Linux here and found that the readily-available Im | |||||
ageMagick package will do the trick for you without any scripting. And runs on | |||||
the CLI! Simple as that:[] | |||||
[] | |||||
[1 | |||||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./2.aux) ) | |||||
Here is how much of TeX's memory you used: | |||||
233 strings out of 494945 | |||||
2763 string characters out of 6181032 | |||||
49564 words of memory out of 5000000 | |||||
3602 multiletter control sequences out of 15000+600000 | |||||
8362 words of font info for 30 fonts, out of 8000000 for 9000 | |||||
14 hyphenation exceptions out of 8191 | |||||
21i,6n,19p,352b,187s stack positions out of 5000i,500n,10000p,200000b,80000s | |||||
</usr/share/tex | |||||
live/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texlive/t | |||||
exmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-di | |||||
st/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/font | |||||
s/type1/public/amsfonts/cm/cmtt10.pfb> | |||||
Output written on 2.pdf (1 page, 58381 bytes). | |||||
PDF statistics: | |||||
24 PDF objects out of 1000 (max. 8388607) | |||||
16 compressed objects within 1 object stream | |||||
0 named destinations out of 1000 (max. 500000) | |||||
1 words of extra memory for PDF output out of 10000 (max. 10000000) | |||||
@ -0,0 +1,31 @@ | |||||
\documentclass[11pt]{article} | |||||
%Gummi|065|=) | |||||
\title{\textbf{Car Stereo Replacement}} | |||||
\author{Steak Electronics} | |||||
\date{10/27/19} | |||||
\begin{document} | |||||
\maketitle | |||||
\section{Overview} | |||||
Replacing a car stereo. | |||||
\section{Work Log} | |||||
\subsection{I2C OLED display} | |||||
Just for fun, I bought an I2C oled display and are going to use it to display something. Notes on this: | |||||
Using the adafruit SSD1306 and GFX library (this procedure is well covered in other places), you can load an example sketch and get it running. First thing to change is to remove the Adafruit logo and replace it with my own. Let's do that. | |||||
From https://design.goeszen.com/convert-image-for-oled-display.html | |||||
\begin{verbatim} | |||||
I'm on Linux here and found that the readily-available ImageMagick package will do the trick for you without any scripting. And runs on the CLI! Simple as that: | |||||
convert some_image.png some.image.mono | |||||
\end{verbatim} | |||||
That's efficient. | |||||
\end{document} |
@ -0,0 +1,25 @@ | |||||
\documentclass[11pt]{article} | |||||
%Gummi|065|=) | |||||
\title{\textbf{Car Stereo Replacement}} | |||||
\author{Steak Electronics} | |||||
\date{10/27/19} | |||||
\begin{document} | |||||
\maketitle | |||||
\section{Overview} | |||||
Replacing a car stereo. | |||||
\section{Work Log} | |||||
\subsection{I2C OLED display} | |||||
Just for fun, I bought an I2C oled display and are going to use it to display something. Notes on this: | |||||
Using the adafruit SSD1306 and GFX library (this procedure is well covered in other places), you can load an example sketch and get it running. First thing to change is to remove the Adafruit logo and replace it with my own. Let's do that. | |||||
\end{document} |
@ -0,0 +1,4 @@ | |||||
\relax | |||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Overview}{1}} | |||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Work Log}{1}} | |||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}I2C OLED display}{1}} |
@ -0,0 +1,78 @@ | |||||
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=pdflatex 2019.8.17) 28 OCT 2019 01:01 | |||||
entering extended mode | |||||
restricted \write18 enabled. | |||||
%&-line parsing enabled. | |||||
**/home/layoutdev/Desktop/code/documentation_general/Electronics_Projects_2019/ | |||||
Car_Stereo_Replacement/docs/3.tex | |||||
(/home/layoutdev/Desktop/code/documentation_general/Electronics_Projects_2019/C | |||||
ar_Stereo_Replacement/docs/3.tex | |||||
LaTeX2e <2017/01/01> patch level 3 | |||||
Babel <3.9r> and hyphenation patterns for 3 language(s) loaded. | |||||
(/usr/share/texlive/texmf-dist/tex/latex/base/article.cls | |||||
Document Class: article 2014/09/29 v1.4h Standard LaTeX document class | |||||
(/usr/share/texlive/texmf-dist/tex/latex/base/size11.clo | |||||
File: size11.clo 2014/09/29 v1.4h Standard LaTeX file (size option) | |||||
) | |||||
\c@part=\count79 | |||||
\c@section=\count80 | |||||
\c@subsection=\count81 | |||||
\c@subsubsection=\count82 | |||||
\c@paragraph=\count83 | |||||
\c@subparagraph=\count84 | |||||
\c@figure=\count85 | |||||
\c@table=\count86 | |||||
\abovecaptionskip=\skip41 | |||||
\belowcaptionskip=\skip42 | |||||
\bibindent=\dimen102 | |||||
) (./3.aux) | |||||
\openout1 = `3.aux'. | |||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6. | |||||
LaTeX Font Info: ... okay on input line 6. | |||||
LaTeX Font Info: External font `cmex10' loaded for size | |||||
(Font) <12> on input line 8. | |||||
LaTeX Font Info: External font `cmex10' loaded for size | |||||
(Font) <8> on input line 8. | |||||
LaTeX Font Info: External font `cmex10' loaded for size | |||||
(Font) <6> on input line 8. | |||||
Overfull \hbox (559.79004pt too wide) in paragraph at lines 22--22 | |||||
[]\OT1/cmtt/m/n/10.95 I'm on Linux here and found that the readily-available Im | |||||
ageMagick package will do the trick for you without any scripting. And runs on | |||||
the CLI! Simple as that:[] | |||||
[] | |||||
[1 | |||||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./3.aux) ) | |||||
Here is how much of TeX's memory you used: | |||||
233 strings out of 494945 | |||||
2763 string characters out of 6181032 | |||||
49564 words of memory out of 5000000 | |||||
3602 multiletter control sequences out of 15000+600000 | |||||
8362 words of font info for 30 fonts, out of 8000000 for 9000 | |||||
14 hyphenation exceptions out of 8191 | |||||
21i,6n,19p,352b,187s stack positions out of 5000i,500n,10000p,200000b,80000s | |||||
</usr/share/tex | |||||
live/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texlive/t | |||||
exmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-di | |||||
st/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/font | |||||
s/type1/public/amsfonts/cm/cmtt10.pfb> | |||||
Output written on 3.pdf (1 page, 58381 bytes). | |||||
PDF statistics: | |||||
24 PDF objects out of 1000 (max. 8388607) | |||||
16 compressed objects within 1 object stream | |||||
0 named destinations out of 1000 (max. 500000) | |||||
1 words of extra memory for PDF output out of 10000 (max. 10000000) | |||||
@ -0,0 +1,31 @@ | |||||
\documentclass[11pt]{article} | |||||
%Gummi|065|=) | |||||
\title{\textbf{Car Stereo Replacement}} | |||||
\author{Steak Electronics} | |||||
\date{10/27/19} | |||||
\begin{document} | |||||
\maketitle | |||||
\section{Overview} | |||||
Replacing a car stereo. | |||||
\section{Work Log} | |||||
\subsection{I2C OLED display} | |||||
Just for fun, I bought an I2C oled display and are going to use it to display something. Notes on this: | |||||
Using the adafruit SSD1306 and GFX library (this procedure is well covered in other places), you can load an example sketch and get it running. First thing to change is to remove the Adafruit logo and replace it with my own. Let's do that. | |||||
From https://design.goeszen.com/convert-image-for-oled-display.html | |||||
\begin{verbatim} | |||||
I'm on Linux here and found that the readily-available ImageMagick package will do the trick for you without any scripting. And runs on the CLI! Simple as that: | |||||
convert some_image.png some.image.mono | |||||
\end{verbatim} | |||||
That's efficient. | |||||
\end{document} |